using System.Text;
using System.Xml.Serialization;
-namespace R2RDump
+namespace R2RDump.Amd64
{
- public class GcInfo
+ public class GcInfo : BaseGcInfo
{
private enum GcInfoHeaderFlags
{
GC_INFO_FLAGS_BIT_SIZE = 10,
};
- public struct InterruptibleRange
- {
- [XmlAttribute("Index")]
- public uint Index { get; set; }
- public uint StartOffset { get; set; }
- public uint StopOffset { get; set; }
- public InterruptibleRange(uint index, uint start, uint stop)
- {
- Index = index;
- StartOffset = start;
- StopOffset = stop;
- }
- }
-
- public class GcTransition
- {
- [XmlAttribute("Index")]
- public int CodeOffset { get; set; }
- public int SlotId { get; set; }
- public bool IsLive { get; set; }
- public int ChunkId { get; set; }
-
- public GcTransition() { }
-
- public GcTransition(int codeOffset, int slotId, bool isLive, int chunkId)
- {
- CodeOffset = codeOffset;
- SlotId = slotId;
- IsLive = isLive;
- ChunkId = chunkId;
- }
- public override string ToString()
- {
- StringBuilder sb = new StringBuilder();
-
- sb.AppendLine($"\t\tCodeOffset: {CodeOffset}");
- sb.AppendLine($"\t\tSlotId: {SlotId}");
- sb.AppendLine($"\t\tIsLive: {IsLive}");
- sb.AppendLine($"\t\tChunkId: {ChunkId}");
- sb.Append($"\t\t--------------------");
-
- return sb.ToString();
- }
- public string GetSlotState(GcSlotTable slotTable)
- {
- GcSlotTable.GcSlot slot = slotTable.GcSlots[SlotId];
- string slotStr = "";
- if (slot.StackSlot == null)
- {
- slotStr = Enum.GetName(typeof(Amd64Registers), slot.RegisterNumber);
- }
- else
- {
- slotStr = $"sp{slot.StackSlot.SpOffset:+#;-#;+0}";
- }
- string isLiveStr = "live";
- if (!IsLive)
- isLiveStr = "dead";
- return $"{slotStr} is {isLiveStr}";
- }
- }
-
public struct SafePointOffset
{
[XmlAttribute("Index")]
private GcInfoTypes _gcInfoTypes;
public int Version { get; set; }
- public int CodeLength { get; set; }
public ReturnKinds ReturnKind { get; set; }
public uint ValidRangeStart { get; set; }
public uint ValidRangeEnd { get; set; }
public List<SafePointOffset> SafePointOffsets { get; set; }
public List<InterruptibleRange> InterruptibleRanges { get; set; }
public GcSlotTable SlotTable { get; set; }
- public int Size { get; set; }
- public int Offset { get; set; }
-
- [XmlIgnore]
- public Dictionary<int, GcTransition> Transitions { get; set; }
public GcInfo() { }
}
if (StackBaseRegister != 0xffffffff)
- sb.AppendLine($"\tStackBaseRegister: {(Amd64Registers)StackBaseRegister}");
+ sb.AppendLine($"\tStackBaseRegister: {(Registers)StackBaseRegister}");
if (_machine == Machine.Amd64)
{
sb.AppendLine($"\tWants Report Only Leaf: {_wantsReportOnlyLeaf}");
sb.AppendLine($"\tSlotTable:");
sb.Append(SlotTable.ToString());
sb.AppendLine($"\tTransitions:");
- foreach (GcTransition trans in Transitions.Values)
+ foreach (List<BaseGcTransition> transList in Transitions.Values)
{
- sb.AppendLine(trans.ToString());
+ foreach (GcTransition trans in transList)
+ {
+ sb.AppendLine("\t\t" + trans.ToString());
+ }
}
sb.AppendLine($"\tSize: {Size} bytes");
return (readyToRunMajorVersion == 1) ? 1 : GCINFO_VERSION;
}
- public Dictionary<int, GcTransition> GetTranstions(byte[] image, ref int bitOffset)
+ public Dictionary<int, List<BaseGcTransition>> GetTranstions(byte[] image, ref int bitOffset)
{
int totalInterruptibleLength = 0;
if (NumInterruptibleRanges == 0)
int numBitsPerPointer = (int)NativeReader.DecodeVarLengthUnsigned(image, _gcInfoTypes.POINTER_SIZE_ENCBASE, ref bitOffset);
if (numBitsPerPointer == 0)
{
- return new Dictionary<int, GcTransition>();
+ return new Dictionary<int, List<BaseGcTransition>>();
}
int[] chunkPointers = new int[numChunks];
while (NativeReader.ReadBits(image, 1, ref bitOffset) != 0)
{
int transitionOffset = NativeReader.ReadBits(image, _gcInfoTypes.NUM_NORM_CODE_OFFSETS_PER_CHUNK_LOG2, ref bitOffset) + normChunkBaseCodeOffset;
- transitions.Add(new GcTransition(transitionOffset, slotId, isLive, currentChunk));
+ transitions.Add(new GcTransition(transitionOffset, slotId, isLive, currentChunk, SlotTable));
isLive = !isLive;
}
slotId++;
return slotId;
}
- private Dictionary<int, GcTransition> UpdateTransitionCodeOffset(List<GcTransition> transitions)
+ private Dictionary<int, List<BaseGcTransition>> UpdateTransitionCodeOffset(List<GcTransition> transitions)
{
- Dictionary<int, GcTransition> updatedTransitions = new Dictionary<int, GcTransition>();
+ Dictionary<int, List<BaseGcTransition>> updatedTransitions = new Dictionary<int, List<BaseGcTransition>>();
int cumInterruptibleLength = 0;
using (IEnumerator<InterruptibleRange> interruptibleRangesIter = InterruptibleRanges.GetEnumerator())
{
codeOffset = transition.CodeOffset + (int)currentRange.StartOffset - cumInterruptibleLength;
}
transition.CodeOffset = codeOffset;
- updatedTransitions[codeOffset] = transition;
+ if (!updatedTransitions.ContainsKey(codeOffset))
+ {
+ updatedTransitions[codeOffset] = new List<BaseGcTransition>();
+ }
+ updatedTransitions[codeOffset].Add(transition);
}
}
return updatedTransitions;
using System.Text;
using System.Xml.Serialization;
-namespace R2RDump
+namespace R2RDump.Amd64
{
public class GcSlotTable
{
- public struct GcSlot
+ public class GcSlot
{
[XmlAttribute("Index")]
public int Index { get; set; }
public GcStackSlot StackSlot { get; set; }
public GcSlotFlags Flags { get; set; }
+ public GcSlot() { }
+
public GcSlot(int index, int registerNumber, GcStackSlot stack, GcSlotFlags flags, bool isUntracked = false)
{
Index = index;
--- /dev/null
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Xml.Serialization;
+
+namespace R2RDump.Amd64
+{
+ public struct InterruptibleRange
+ {
+ [XmlAttribute("Index")]
+ public uint Index { get; set; }
+ public uint StartOffset { get; set; }
+ public uint StopOffset { get; set; }
+ public InterruptibleRange(uint index, uint start, uint stop)
+ {
+ Index = index;
+ StartOffset = start;
+ StopOffset = stop;
+ }
+ }
+
+ public class GcTransition : BaseGcTransition
+ {
+ public int SlotId { get; set; }
+ public bool IsLive { get; set; }
+ public int ChunkId { get; set; }
+ public string SlotState { get; set; }
+
+ public GcTransition() { }
+
+ public GcTransition(int codeOffset, int slotId, bool isLive, int chunkId, GcSlotTable slotTable)
+ {
+ CodeOffset = codeOffset;
+ SlotId = slotId;
+ IsLive = isLive;
+ ChunkId = chunkId;
+ SlotState = GetSlotState(slotTable);
+ }
+
+ public override string ToString()
+ {
+ return SlotState;
+ }
+
+ public string GetSlotState(GcSlotTable slotTable)
+ {
+ GcSlotTable.GcSlot slot = slotTable.GcSlots[SlotId];
+ string slotStr = "";
+ if (slot.StackSlot == null)
+ {
+ slotStr = Enum.GetName(typeof(Registers), slot.RegisterNumber);
+ }
+ else
+ {
+ slotStr = $"sp{slot.StackSlot.SpOffset:+#;-#;+0}";
+ }
+ string isLiveStr = "live";
+ if (!IsLive)
+ isLiveStr = "dead";
+ return $"{slotStr} is {isLiveStr}";
+ }
+ }
+}
--- /dev/null
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace R2RDump.Amd64
+{
+ public enum Registers
+ {
+ EAX = 0,
+ ECX = 1,
+ EDX = 2,
+ EBX = 3,
+ ESP = 4,
+ EBP = 5,
+ ESI = 6,
+ EDI = 7,
+ E8 = 8,
+ E9 = 9,
+ E10 = 10,
+ E11 = 11,
+ E12 = 12,
+ E13 = 13,
+ E14 = 14,
+ E15 = 15,
+ }
+}
public byte Flags { get; set; } //5 bits
public byte SizeOfProlog { get; set; }
public byte CountOfUnwindCodes { get; set; }
- public Amd64Registers FrameRegister { get; set; } //4 bits
+ public Registers FrameRegister { get; set; } //4 bits
public byte FrameOffset { get; set; } //4 bits
public UnwindCode[] UnwindCode { get; set; }
public uint PersonalityRoutineRVA { get; set; }
SizeOfProlog = NativeReader.ReadByte(image, ref offset);
CountOfUnwindCodes = NativeReader.ReadByte(image, ref offset);
byte frameRegisterAndOffset = NativeReader.ReadByte(image, ref offset);
- FrameRegister = (Amd64Registers)(frameRegisterAndOffset & 15);
+ FrameRegister = (Registers)(frameRegisterAndOffset & 15);
FrameOffset = (byte)(frameRegisterAndOffset >> 4);
UnwindCode = new UnwindCode[CountOfUnwindCodes];
switch (UnwindCode[i].UnwindOp)
{
case UnwindOpCodes.UWOP_PUSH_NONVOL:
- sb.AppendLine($"\t\tOpInfo: {(Amd64Registers)UnwindCode[i].OpInfo}({UnwindCode[i].OpInfo})");
+ sb.AppendLine($"\t\tOpInfo: {(Registers)UnwindCode[i].OpInfo}({UnwindCode[i].OpInfo})");
break;
case UnwindOpCodes.UWOP_ALLOC_LARGE:
sb.Append($"\t\tOpInfo: {UnwindCode[i].OpInfo} - ");
break;
case UnwindOpCodes.UWOP_SAVE_NONVOL:
{
- sb.AppendLine($"\t\tOpInfo: {(Amd64Registers)UnwindCode[i].OpInfo}({UnwindCode[i].OpInfo})");
+ sb.AppendLine($"\t\tOpInfo: {(Registers)UnwindCode[i].OpInfo}({UnwindCode[i].OpInfo})");
i++;
uint offset = UnwindCode[i].FrameOffset * 8;
sb.AppendLine($"\t\tScaled Offset: {UnwindCode[i].FrameOffset} * 8 = {offset} = 0x{offset:X5}");
break;
case UnwindOpCodes.UWOP_SAVE_NONVOL_FAR:
{
- sb.AppendLine($"\t\tOpInfo: {(Amd64Registers)UnwindCode[i].OpInfo}({UnwindCode[i].OpInfo})");
+ sb.AppendLine($"\t\tOpInfo: {(Registers)UnwindCode[i].OpInfo}({UnwindCode[i].OpInfo})");
i++;
uint offset = UnwindCode[i].FrameOffset;
i++;
namespace R2RDump
{
+ enum InfoHdrAdjustConstants
+ {
+ // Constants
+ SET_FRAMESIZE_MAX = 7,
+ SET_ARGCOUNT_MAX = 8,
+ SET_PROLOGSIZE_MAX = 16,
+ SET_EPILOGSIZE_MAX = 10,
+ SET_EPILOGCNT_MAX = 4,
+ SET_UNTRACKED_MAX = 3,
+ SET_RET_KIND_MAX = 4,
+ ADJ_ENCODING_MAX = 0x7f,
+ MORE_BYTES_TO_FOLLOW = 0x80
+ };
+
+ //
+ // Enum to define codes that are used to incrementally adjust the InfoHdr structure.
+ // First set of opcodes
+ enum InfoHdrAdjust
+ {
+ SET_FRAMESIZE = 0, // 0x00
+ SET_ARGCOUNT = SET_FRAMESIZE + InfoHdrAdjustConstants.SET_FRAMESIZE_MAX + 1, // 0x08
+ SET_PROLOGSIZE = SET_ARGCOUNT + InfoHdrAdjustConstants.SET_ARGCOUNT_MAX + 1, // 0x11
+ SET_EPILOGSIZE = SET_PROLOGSIZE + InfoHdrAdjustConstants.SET_PROLOGSIZE_MAX + 1, // 0x22
+ SET_EPILOGCNT = SET_EPILOGSIZE + InfoHdrAdjustConstants.SET_EPILOGSIZE_MAX + 1, // 0x2d
+ SET_UNTRACKED = SET_EPILOGCNT + (InfoHdrAdjustConstants.SET_EPILOGCNT_MAX + 1) * 2, // 0x37
+
+ FIRST_FLIP = SET_UNTRACKED + InfoHdrAdjustConstants.SET_UNTRACKED_MAX + 1,
+
+ FLIP_EDI_SAVED = FIRST_FLIP, // 0x3b
+ FLIP_ESI_SAVED, // 0x3c
+ FLIP_EBX_SAVED, // 0x3d
+ FLIP_EBP_SAVED, // 0x3e
+ FLIP_EBP_FRAME, // 0x3f
+ FLIP_INTERRUPTIBLE, // 0x40
+ FLIP_DOUBLE_ALIGN, // 0x41
+ FLIP_SECURITY, // 0x42
+ FLIP_HANDLERS, // 0x43
+ FLIP_LOCALLOC, // 0x44
+ FLIP_EDITnCONTINUE, // 0x45
+ FLIP_VAR_PTR_TABLE_SZ, // 0x46 Flip whether a table-size exits after the header encoding
+ FFFF_UNTRACKED_CNT, // 0x47 There is a count (>SET_UNTRACKED_MAX) after the header encoding
+ FLIP_VARARGS, // 0x48
+ FLIP_PROF_CALLBACKS, // 0x49
+ FLIP_HAS_GS_COOKIE, // 0x4A - The offset of the GuardStack cookie follows after the header encoding
+ FLIP_SYNC, // 0x4B
+ FLIP_HAS_GENERICS_CONTEXT,// 0x4C
+ FLIP_GENERICS_CONTEXT_IS_METHODDESC,// 0x4D
+ FLIP_REV_PINVOKE_FRAME, // 0x4E
+ NEXT_OPCODE, // 0x4F -- see next Adjustment enumeration
+ NEXT_FOUR_START = 0x50,
+ NEXT_FOUR_FRAMESIZE = 0x50,
+ NEXT_FOUR_ARGCOUNT = 0x60,
+ NEXT_THREE_PROLOGSIZE = 0x70,
+ NEXT_THREE_EPILOGSIZE = 0x78
+ };
+
public class GcInfoTypes
{
private Machine _target;
}
return value;
}
+
+ public static int DecodeSigned(byte[] image, ref int start)
+ {
+ int size = 1;
+ byte data = image[start++];
+ byte first = data;
+ int value = data & 0x3f;
+ while ((data & 0x80) != 0)
+ {
+ size++;
+ data = image[start++];
+ value <<= 7;
+ value += data & 0x7f;
+ }
+ if ((first & 0x40) != 0)
+ value = -value;
+
+ return value;
+ }
+
+ public static uint DecodeUDelta(byte[] image, ref int start, uint lastValue)
+ {
+ uint delta = DecodeUnsignedGc(image, ref start);
+ return lastValue + delta;
+ }
}
}
public abstract class Dumper
{
internal R2RReader _r2r;
+ internal TextWriter _writer;
+
internal bool _raw;
internal bool _header;
internal bool _disasm;
internal bool _unwind;
internal bool _gc;
internal bool _sectionContents;
- internal TextWriter _writer;
+ /// <summary>
+ /// Run right before printing output
+ /// </summary>
abstract internal void Begin();
+
+ /// <summary>
+ /// Run right after printing output
+ /// </summary>
abstract internal void End();
abstract internal void WriteDivider(string title);
abstract internal void WriteSubDivider();
class R2RDump
{
+ // Options set by user specifying what to dump
private bool _help;
private IReadOnlyList<string> _inputFilenames = Array.Empty<string>();
private string _outputFilename = null;
{
}
+ /// <summary>
+ /// Parse commandline options
+ /// </summary>
private ArgumentSyntax ParseCommandLine(string[] args)
{
bool verbose = false;
return int.TryParse(arg, out n);
}
+ /// <summary>
+ /// Outputs a warning message
+ /// </summary>
+ /// <param name="warning">The warning message to output</param>
public static void WriteWarning(string warning)
{
Console.WriteLine($"Warning: {warning}");
}
// <summary>
- /// For each query in the list of queries, search for all methods matching the query by name, signature or id
+ /// For each query in the list of queries, dump all methods matching the query by name, signature or id
/// </summary>
/// <param name="r2r">Contains all the extracted info about the ReadyToRun image</param>
/// <param name="title">The title to print, "R2R Methods by Query" or "R2R Methods by Keyword"</param>
}
// <summary>
- /// For each query in the list of queries, search for all sections by the name or value of the ReadyToRunSectionType enum
+ /// For each query in the list of queries, dump all sections by the name or value of the ReadyToRunSectionType enum
/// </summary>
/// <param name="r2r">Contains all the extracted info about the ReadyToRun image</param>
/// <param name="queries">The names/values to search for</param>
}
// <summary>
- /// For each query in the list of queries, search for a runtime function by id.
+ /// For each query in the list of queries, dump a runtime function by id.
/// The method containing the runtime function gets outputted, along with the single runtime function that was searched
/// </summary>
/// <param name="r2r">Contains all the extracted info about the ReadyToRun image</param>
_dumper.Begin();
- if (_queries.Count == 0 && _keywords.Count == 0 && _runtimeFunctions.Count == 0 && _sections.Count == 0) //dump all sections and methods
+ if (_queries.Count == 0 && _keywords.Count == 0 && _runtimeFunctions.Count == 0 && _sections.Count == 0) //dump all sections and methods if no queries specified
{
_dumper.WriteDivider("R2R Header");
_dumper.DumpHeader(true);
_dumper.DumpAllMethods();
}
}
- else //dump queried sections/methods/runtimeFunctions
+ else //dump queried sections, methods and runtimeFunctions
{
if (_header)
{
}
/// <summary>
- /// Returns true if the name/signature/id of <param>method</param> matches <param>query</param>
+ /// Returns true if the name, signature or id of <param>method</param> matches <param>query</param>
/// </summary>
/// <param name="exact">Specifies exact or partial match</param>
/// <remarks>Case-insensitive and ignores whitespace</remarks>
/// RVA of optional auxiliary data (typically GC info)
/// </summary>
public int AuxiliaryDataRVA { get; set; }
- public GcInfo AuxiliaryData { get; set; }
+ [XmlIgnore]
+ public BaseGcInfo AuxiliaryData { get; set; }
public R2RImportSection(int index, byte[] image, int rva, int size, CorCompileImportFlags flags, byte type, byte entrySize, int signatureRVA, List<ImportSectionEntry> entries, int auxDataRVA, int auxDataOffset, Machine machine, ushort majorVersion)
{
AuxiliaryData = null;
if (AuxiliaryDataRVA != 0)
{
- AuxiliaryData = new GcInfo(image, auxDataOffset, machine, majorVersion);
+ if (machine == Machine.Amd64)
+ {
+ AuxiliaryData = new Amd64.GcInfo(image, auxDataOffset, machine, majorVersion);
+ }
+ else if (machine == Machine.I386)
+ {
+ AuxiliaryData = new x86.GcInfo(image, auxDataOffset, machine, majorVersion);
+ }
}
}
public int Size { get; set; }
}
+ public abstract class BaseGcTransition
+ {
+ [XmlAttribute("Index")]
+ public int CodeOffset { get; set; }
+
+ public BaseGcTransition() { }
+
+ public BaseGcTransition(int codeOffset)
+ {
+ CodeOffset = codeOffset;
+ }
+ }
+
+ public abstract class BaseGcInfo
+ {
+ public int Size { get; set; }
+ public int Offset { get; set; }
+ public int CodeLength { get; set; }
+ [XmlIgnore]
+ public Dictionary<int, List<BaseGcTransition>> Transitions { get; set; }
+ }
+
public class RuntimeFunction
{
/// <summary>
public RuntimeFunction() { }
- public RuntimeFunction(int id, int startRva, int endRva, int unwindRva, int codeOffset, R2RMethod method, BaseUnwindInfo unwindInfo, GcInfo gcInfo)
+ public RuntimeFunction(int id, int startRva, int endRva, int unwindRva, int codeOffset, R2RMethod method, BaseUnwindInfo unwindInfo, BaseGcInfo gcInfo)
{
Id = id;
StartAddress = startRva;
public int EntryPointRuntimeFunctionId { get; set; }
[XmlIgnore]
- public GcInfo GcInfo { get; set; }
+ public BaseGcInfo GcInfo { get; set; }
public FixupCell[] Fixups { get; set; }
namespace R2RDump
{
- public enum Amd64Registers
- {
- EAX = 0,
- ECX = 1,
- EDX = 2,
- EBX = 3,
- ESP = 4,
- EBP = 5,
- ESI = 6,
- EDI = 7,
- E8 = 8,
- E9 = 9,
- E10 = 10,
- E11 = 11,
- E12 = 12,
- E13 = 13,
- E14 = 14,
- E15 = 15,
- }
-
/// <summary>
/// This structure represents a single precode fixup cell decoded from the
/// nibble-oriented per-method fixup blob. Each method entrypoint fixup
if (runtimeFunctionId == -1)
continue;
curOffset = runtimeFunctionOffset + runtimeFunctionId * runtimeFunctionSize;
- GcInfo gcInfo = null;
+ BaseGcInfo gcInfo = null;
int codeOffset = 0;
do
{
unwindInfo = new Amd64.UnwindInfo(Image, unwindOffset);
if (isEntryPoint[runtimeFunctionId])
{
- gcInfo = new GcInfo(Image, unwindOffset + unwindInfo.Size, Machine, R2RHeader.MajorVersion);
+ gcInfo = new Amd64.GcInfo(Image, unwindOffset + unwindInfo.Size, Machine, R2RHeader.MajorVersion);
}
}
else if (Machine == Machine.I386)
unwindInfo = new x86.UnwindInfo(Image, unwindOffset);
if (isEntryPoint[runtimeFunctionId])
{
- //gcInfo = new GcInfo(Image, unwindOffset + unwindInfo.Size, Machine, R2RHeader.MajorVersion);
+ gcInfo = new x86.GcInfo(Image, unwindOffset, Machine, R2RHeader.MajorVersion);
}
}
using System;
using System.Collections.Generic;
using System.IO;
+using System.Reflection.PortableExecutable;
using System.Text;
using System.Xml;
_writer.Write(rtf.UnwindInfo);
if (_raw)
{
- DumpBytes(rtf.UnwindRVA, (uint)((Amd64.UnwindInfo)rtf.UnwindInfo).Size);
+ DumpBytes(rtf.UnwindRVA, (uint)rtf.UnwindInfo.Size);
}
}
SkipLine();
_writer.Write(instr);
if (rtf.Method.GcInfo != null && rtf.Method.GcInfo.Transitions.ContainsKey(codeOffset))
{
- _writer.WriteLine($"\t\t\t\t{rtf.Method.GcInfo.Transitions[codeOffset].GetSlotState(rtf.Method.GcInfo.SlotTable)}");
+ foreach (BaseGcTransition transition in rtf.Method.GcInfo.Transitions[codeOffset])
+ {
+ _writer.WriteLine($"\t\t\t\t{transition.ToString()}");
+ }
}
CoreDisTools.ClearOutputBuffer();
using System;
using System.Collections.Generic;
using System.IO;
+using System.Reflection.PortableExecutable;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
methodNode.AppendChild(gcNode);
Serialize(method.GcInfo, gcNode);
- foreach (GcInfo.GcTransition transition in method.GcInfo.Transitions.Values)
+ foreach (List<BaseGcTransition> transitionList in method.GcInfo.Transitions.Values)
{
- Serialize(transition, gcNode);
+ foreach (BaseGcTransition transition in transitionList)
+ {
+ Serialize(transition, gcNode);
+ }
}
if (_raw)
{
int rtfOffset = 0;
int codeOffset = rtf.CodeOffset;
- Dictionary<int, GcInfo.GcTransition> transitions = rtf.Method.GcInfo.Transitions;
- GcSlotTable slotTable = rtf.Method.GcInfo.SlotTable;
+
while (rtfOffset < rtf.Size)
{
string instr;
int instrSize = _disassembler.GetInstruction(rtf, imageOffset, rtfOffset, out instr);
- AddXMLNode("offset"+codeOffset, instr, parentNode, $"{codeOffset}");
- if (transitions.ContainsKey(codeOffset))
+ AddXMLNode("offset" + codeOffset, instr, parentNode, $"{codeOffset}");
+
+ if (rtf.Method.GcInfo != null && rtf.Method.GcInfo.Transitions.ContainsKey(codeOffset))
{
- AddXMLNode("Transition", transitions[codeOffset].GetSlotState(slotTable), parentNode, $"{codeOffset}");
+ foreach (BaseGcTransition transition in rtf.Method.GcInfo.Transitions[codeOffset])
+ {
+ AddXMLNode("Transition", transition.ToString(), parentNode, $"{codeOffset}");
+ }
}
CoreDisTools.ClearOutputBuffer();
--- /dev/null
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace R2RDump.x86
+{
+ class CallPattern
+ {
+ public static void DecodeCallPattern(uint pattern, out uint argCnt, out uint regMask, out uint argMask, out uint codeDelta)
+ {
+ uint val = callPatternTable[pattern];
+ byte[] fld = BitConverter.GetBytes(val);
+ argCnt = fld[0];
+ regMask = fld[1]; // EBP,EBX,ESI,EDI
+ argMask = fld[2];
+ codeDelta = fld[3];
+ }
+
+ public static uint[] callCommonDelta = { 6, 8, 10, 12 };
+
+ private static uint[] callPatternTable =
+ {
+ 0x0a000200, // 30109
+ 0x0c000200, // 22970
+ 0x0c000201, // 19005
+ 0x0a000300, // 12193
+ 0x0c000300, // 10614
+ 0x0e000200, // 10253
+ 0x10000200, // 9746
+ 0x0b000200, // 9698
+ 0x0d000200, // 9625
+ 0x08000200, // 8909
+ 0x0c000301, // 8522
+ 0x11000200, // 7382
+ 0x0e000300, // 7357
+ 0x12000200, // 7139
+ 0x10000300, // 7062
+ 0x11000300, // 6970
+ 0x0a000201, // 6842
+ 0x0a000100, // 6803
+ 0x0f000200, // 6795
+ 0x13000200, // 6559
+ 0x08000300, // 6079
+ 0x15000200, // 5874
+ 0x0d000201, // 5492
+ 0x0c000100, // 5193
+ 0x0d000300, // 5165
+ 0x23000200, // 5143
+ 0x1b000200, // 5035
+ 0x14000200, // 4872
+ 0x0f000300, // 4850
+ 0x0a000700, // 4781
+ 0x09000200, // 4560
+ 0x12000300, // 4496
+ 0x16000200, // 4180
+ 0x07000200, // 4021
+ 0x09000300, // 4012
+ 0x0c000700, // 3988
+ 0x0c000600, // 3946
+ 0x0e000100, // 3823
+ 0x1a000200, // 3764
+ 0x18000200, // 3744
+ 0x17000200, // 3736
+ 0x1f000200, // 3671
+ 0x13000300, // 3559
+ 0x0a000600, // 3214
+ 0x0e000600, // 3109
+ 0x08000201, // 2984
+ 0x0b000300, // 2928
+ 0x0a000301, // 2859
+ 0x07000100, // 2826
+ 0x13000100, // 2782
+ 0x09000301, // 2644
+ 0x19000200, // 2638
+ 0x11000700, // 2618
+ 0x21000200, // 2518
+ 0x0d000202, // 2484
+ 0x10000100, // 2480
+ 0x0f000600, // 2413
+ 0x14000300, // 2363
+ 0x0c000500, // 2362
+ 0x08000301, // 2285
+ 0x20000200, // 2245
+ 0x10000700, // 2240
+ 0x0f000100, // 2236
+ 0x1e000200, // 2214
+ 0x0c000400, // 2193
+ 0x16000300, // 2171
+ 0x12000600, // 2132
+ 0x22000200, // 2011
+ 0x1d000200, // 2011
+ 0x0c000f00, // 1996
+ 0x0e000700, // 1971
+ 0x0a000400, // 1970
+ 0x09000201, // 1932
+ 0x10000600, // 1903
+ 0x15000300, // 1847
+ 0x0a000101, // 1814
+ 0x0a000b00, // 1771
+ 0x0c000601, // 1737
+ 0x09000700, // 1737
+ 0x07000300, // 1684
+ };
+ }
+}
--- /dev/null
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using System.Collections.Generic;
+using System.Reflection.PortableExecutable;
+using System.Text;
+using System.Xml.Serialization;
+
+namespace R2RDump.x86
+{
+ public class GcInfo : BaseGcInfo
+ {
+ const uint byref_OFFSET_FLAG = 0x1;
+
+ public InfoHdrSmall Header { get; set; }
+ public GcSlotTable SlotTable { get; set; }
+
+ public GcInfo() { }
+
+ public GcInfo(byte[] image, int offset, Machine machine, ushort majorVersion)
+ {
+ Offset = offset;
+
+ CodeLength = (int)NativeReader.DecodeUnsignedGc(image, ref offset);
+
+ Header = InfoHdrDecoder.DecodeHeader(image, ref offset, CodeLength);
+
+ SlotTable = new GcSlotTable(image, Header, ref offset);
+
+ Transitions = new Dictionary<int, List<BaseGcTransition>>();
+ if (Header.Interruptible)
+ {
+ GetTransitionsFullyInterruptible(image, ref offset);
+ }
+ else if (Header.EbpFrame)
+ {
+ GetTransitionsEbpFrame(image, ref offset);
+ }
+ else
+ {
+ GetTransitionsNoEbp(image, ref offset);
+ }
+
+ Size = offset - Offset;
+ }
+
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ sb.AppendLine($"\tCodeLength: {CodeLength} bytes");
+ sb.AppendLine($"\tInfoHdr:");
+ sb.AppendLine($"{Header}");
+ sb.AppendLine($"{SlotTable}");
+
+ sb.AppendLine($"\tSize: {Size} bytes");
+
+ return sb.ToString();
+ }
+
+ private void AddNewTransition(BaseGcTransition transition)
+ {
+ if (!Transitions.ContainsKey(transition.CodeOffset))
+ {
+ Transitions[transition.CodeOffset] = new List<BaseGcTransition>();
+ }
+ Transitions[transition.CodeOffset].Add(transition);
+ }
+
+ private void ArgEncoding(byte[] image, ref uint isPop, ref uint argOffs, ref uint argCnt, ref uint curOffs, ref bool isThis, ref bool iptr)
+ {
+ if (isPop != 0)
+ {
+ // A Pop of 0, means little-delta
+
+ if (argOffs != 0)
+ {
+ AddNewTransition(new GcTransitionPointer((int)curOffs, argOffs, argCnt - argOffs, Action.POP, Header.EbpFrame));
+ }
+ }
+ else
+ {
+ AddNewTransition(new GcTransitionPointer((int)curOffs, argOffs, argOffs + 1, Action.PUSH, Header.EbpFrame, isThis, iptr));
+ isThis = false;
+ iptr = false;
+ }
+ }
+
+ private void GetTransitionsFullyInterruptible(byte[] image, ref int offset)
+ {
+ uint argCnt = 0;
+ bool isThis = false;
+ bool iptr = false;
+ uint curOffs = 0;
+
+ while (true)
+ {
+ uint isPop;
+ uint argOffs;
+ uint val = image[offset++];
+
+ if ((val & 0x80) == 0)
+ {
+ /* A small 'regPtr' encoding */
+
+ curOffs += val & 0x7;
+
+ Action isLive = Action.LIVE;
+ if ((val & 0x40) == 0)
+ isLive = Action.DEAD;
+ AddNewTransition(new GcTransitionRegister((int)curOffs, (Registers)((val >> 3) & 7), isLive, isThis, iptr));
+
+ isThis = false;
+ iptr = false;
+ continue;
+ }
+
+ /* This is probably an argument push/pop */
+
+ argOffs = (val & 0x38) >> 3;
+
+ /* 6 [110] and 7 [111] are reserved for other encodings */
+
+ if (argOffs < 6)
+ {
+ /* A small argument encoding */
+
+ curOffs += (val & 0x07);
+ isPop = (val & 0x40);
+
+ ArgEncoding(image, ref isPop, ref argOffs, ref argCnt, ref curOffs, ref isThis, ref iptr);
+
+ continue;
+ }
+ else if (argOffs == 6)
+ {
+ if ((val & 0x40) != 0)
+ {
+ curOffs += (((val & 0x07) + 1) << 3);
+ }
+ else
+ {
+ // non-ptr arg push
+
+ curOffs += (val & 0x07);
+ argCnt++;
+ AddNewTransition(new GcTransitionPointer((int)curOffs, argOffs, argCnt, Action.PUSH, Header.EbpFrame, false, false, false));
+ }
+
+ continue;
+ }
+
+ // argOffs was 7 [111] which is reserved for the larger encodings
+ switch (val)
+ {
+ case 0xFF:
+ return;
+ case 0xBC:
+ isThis = true;
+ break;
+ case 0xBF:
+ iptr = true;
+ break;
+ case 0xB8:
+ val = NativeReader.DecodeUnsignedGc(image, ref offset);
+ curOffs += val;
+ break;
+ case 0xF8:
+ case 0xFC:
+ isPop = val & 0x04;
+ argOffs = NativeReader.DecodeUnsignedGc(image, ref offset);
+ ArgEncoding(image, ref isPop, ref argOffs, ref argCnt, ref curOffs, ref isThis, ref iptr);
+ break;
+ case 0xFD:
+ argOffs = NativeReader.DecodeUnsignedGc(image, ref offset);
+ AddNewTransition(new GcTransitionPointer((int)curOffs, argOffs, argCnt, Action.KILL, Header.EbpFrame));
+ break;
+ case 0xF9:
+ argOffs = NativeReader.DecodeUnsignedGc(image, ref offset);
+ argCnt += argOffs;
+ break;
+ default:
+ throw new BadImageFormatException($"Unexpected special code {val}");
+ }
+ }
+ }
+
+ private void GetTransitionsEbpFrame(byte[] image, ref int offset)
+ {
+ while (true)
+ {
+ uint argMask = 0, byrefArgMask = 0;
+ uint regMask, byrefRegMask = 0;
+
+ uint argCnt = 0;
+ int argOffset = offset;
+ uint argTabSize;
+
+ uint val, nxt;
+ uint curOffs = 0;
+
+ // Get the next byte and check for a 'special' entry
+ uint encType = image[offset++];
+ GcTransitionCall transition = null;
+
+ switch (encType)
+ {
+ default:
+ // A tiny or small call entry
+ val = encType;
+
+ if ((val & 0x80) == 0x00)
+ {
+ if ((val & 0x0F) != 0)
+ {
+ // A tiny call entry
+
+ curOffs += (val & 0x0F);
+ regMask = (val & 0x70) >> 4;
+ argMask = 0;
+ }
+ else
+ {
+ Registers reg;
+ if ((val & 0x10) != 0)
+ reg = Registers.EDI;
+ else if ((val & 0x20) != 0)
+ reg = Registers.ESI;
+ else if ((val & 0x40) != 0)
+ reg = Registers.EBX;
+ else
+ throw new BadImageFormatException("Invalid register");
+ transition = new GcTransitionCall((int)curOffs);
+ transition.CallRegisters.Add(new GcTransitionCall.CallRegister(reg, false));
+ AddNewTransition(transition);
+
+ continue;
+ }
+ }
+ else
+ {
+ // A small call entry
+ curOffs += (val & 0x7F);
+ val = image[offset++];
+ regMask = val >> 5;
+ argMask = val & 0x1F;
+ }
+ break;
+
+ case 0xFD: // medium encoding
+ argMask = image[offset++];
+ val = image[offset++];
+ argMask |= (val & 0xF0) << 4;
+ nxt = image[offset++];
+ curOffs += (val & 0x0F) + ((nxt & 0x1F) << 4);
+ regMask = nxt >> 5; // EBX,ESI,EDI
+ break;
+
+ case 0xF9: // medium encoding with byrefs
+ curOffs += image[offset++];
+ val = image[offset++];
+ argMask = val & 0x1F;
+ regMask = val >> 5;
+ val = image[offset++];
+ byrefArgMask = val & 0x1F;
+ byrefRegMask = val >> 5;
+ break;
+ case 0xFE: // large encoding
+ case 0xFA: // large encoding with byrefs
+ val = image[offset++];
+ regMask = val & 0x7;
+ byrefRegMask = val >> 4;
+
+ curOffs += NativeReader.ReadUInt32(image, ref offset);
+ argMask = NativeReader.ReadUInt32(image, ref offset);
+ if (encType == 0xFA) // read byrefArgMask
+ {
+ byrefArgMask = NativeReader.ReadUInt32(image, ref offset);
+ }
+ break;
+ case 0xFB: // huge encoding
+ val = image[offset++];
+ regMask = val & 0x7;
+ byrefRegMask = val >> 4;
+ curOffs = NativeReader.ReadUInt32(image, ref offset);
+ argCnt = NativeReader.ReadUInt32(image, ref offset);
+ argTabSize = NativeReader.ReadUInt32(image, ref offset);
+ argOffset = offset;
+ offset += (int)argTabSize;
+ break;
+ case 0xFF:
+ return;
+ }
+
+ /*
+ Here we have the following values:
+
+ curOffs ... the code offset of the call
+ regMask ... mask of live pointer register variables
+ argMask ... bitmask of pushed pointer arguments
+ byrefRegMask ... byref qualifier for regMask
+ byrefArgMask ... byrer qualifier for argMask
+ */
+ transition = new GcTransitionCall((int)curOffs, Header.EbpFrame, regMask, byrefRegMask);
+ AddNewTransition(transition);
+
+ if (argCnt != 0)
+ {
+ do
+ {
+ val = NativeReader.DecodeUnsignedGc(image, ref argOffset);
+
+ uint stkOffs = val & ~byref_OFFSET_FLAG;
+ uint lowBit = val & byref_OFFSET_FLAG;
+ transition.PtrArgs.Add(new GcTransitionCall.PtrArg(stkOffs, lowBit));
+ }
+ while (--argCnt > 0);
+ }
+ else
+ {
+ transition.ArgMask = argMask;
+ if (byrefArgMask != 0)
+ transition.IArgs = byrefArgMask;
+ }
+ }
+ }
+
+ private void SaveCallTransition(byte[] image, ref int offset, uint val, uint curOffs, uint callRegMask, bool callPndTab, uint callPndTabCnt, uint callPndMask, uint lastSkip, ref uint imask)
+ {
+ uint iregMask, iargMask;
+ iregMask = imask & 0xF;
+ iargMask = imask >> 4;
+
+ GcTransitionCall transition = new GcTransitionCall((int)curOffs, Header.EbpFrame, callRegMask, iregMask);
+ AddNewTransition(transition);
+
+ if (callPndTab)
+ {
+ for (int i = 0; i < callPndTabCnt; i++)
+ {
+ uint pndOffs = NativeReader.DecodeUnsignedGc(image, ref offset);
+
+ uint stkOffs = val & ~byref_OFFSET_FLAG;
+ uint lowBit = val & byref_OFFSET_FLAG;
+ transition.PtrArgs.Add(new GcTransitionCall.PtrArg(pndOffs, 0));
+ }
+ }
+ else
+ {
+ if (callPndMask != 0)
+ transition.ArgMask = callPndMask;
+ if (iargMask != 0)
+ transition.IArgs = iargMask;
+ }
+
+ imask = lastSkip = 0;
+ }
+
+ private void GetTransitionsNoEbp(byte[] image, ref int offset)
+ {
+ uint curOffs = 0;
+ uint lastSkip = 0;
+ uint imask = 0;
+
+ for (; ; )
+ {
+ uint val = image[offset++];
+
+ if ((val & 0x80) == 0)
+ {
+ if ((val & 0x40) == 0)
+ {
+ if ((val & 0x20) == 0)
+ {
+ // push 000DDDDD push one item, 5-bit delta
+ curOffs += val & 0x1F;
+ AddNewTransition(new GcTransitionRegister((int)curOffs, Registers.ESP, Action.PUSH));
+ }
+ else
+ {
+ // push 00100000 [pushCount] ESP push multiple items
+ uint pushCount = NativeReader.DecodeUnsignedGc(image, ref offset);
+ AddNewTransition(new GcTransitionRegister((int)curOffs, Registers.ESP, Action.PUSH, false, false, (int)pushCount));
+ }
+ }
+ else
+ {
+ uint popSize;
+ uint skip;
+
+ if ((val & 0x3f) == 0)
+ {
+ //
+ // skip 01000000 [Delta] Skip arbitrary sized delta
+ //
+ skip = NativeReader.DecodeUnsignedGc(image, ref offset);
+ curOffs += skip;
+ lastSkip = skip;
+ }
+ else
+ {
+ // pop 01CCDDDD pop CC items, 4-bit delta
+ popSize = (val & 0x30) >> 4;
+ skip = val & 0x0f;
+ curOffs += skip;
+
+ if (popSize > 0)
+ {
+ AddNewTransition(new GcTransitionRegister((int)curOffs, Registers.ESP, Action.POP, false, false, (int)popSize));
+ }
+ else
+ lastSkip = skip;
+ }
+ }
+ }
+ else
+ {
+ uint callArgCnt;
+ uint callRegMask;
+ bool callPndTab = false;
+ uint callPndMask = 0;
+ uint callPndTabCnt = 0, callPndTabSize = 0;
+
+ switch ((val & 0x70) >> 4)
+ {
+ default:
+ //
+ // call 1PPPPPPP Call Pattern, P=[0..79]
+ //
+ CallPattern.DecodeCallPattern((val & 0x7f), out callArgCnt, out callRegMask, out callPndMask, out lastSkip);
+ curOffs += lastSkip;
+ SaveCallTransition(image, ref offset, val, curOffs, callRegMask, callPndTab, callPndTabCnt, callPndMask, lastSkip, ref imask);
+ break;
+
+ case 5:
+ //
+ // call 1101RRRR DDCCCMMM Call RegMask=RRRR,ArgCnt=CCC,
+ // ArgMask=MMM Delta=commonDelta[DD]
+ //
+ callRegMask = val & 0xf; // EBP,EBX,ESI,EDI
+ val = image[offset++];
+ callPndMask = (val & 0x7);
+ callArgCnt = (val >> 3) & 0x7;
+ lastSkip = CallPattern.callCommonDelta[val >> 6];
+ curOffs += lastSkip;
+ SaveCallTransition(image, ref offset, val, curOffs, callRegMask, callPndTab, callPndTabCnt, callPndMask, lastSkip, ref imask);
+ break;
+ case 6:
+ //
+ // call 1110RRRR [ArgCnt] [ArgMask]
+ // Call ArgCnt,RegMask=RRR,ArgMask
+ //
+ callRegMask = val & 0xf; // EBP,EBX,ESI,EDI
+ callArgCnt = NativeReader.DecodeUnsignedGc(image, ref offset);
+ callPndMask = NativeReader.DecodeUnsignedGc(image, ref offset);
+ SaveCallTransition(image, ref offset, val, curOffs, callRegMask, callPndTab, callPndTabCnt, callPndMask, lastSkip, ref imask);
+ break;
+ case 7:
+ switch (val & 0x0C)
+ {
+ case 0x00:
+ // iptr 11110000 [IPtrMask] Arbitrary Interior Pointer Mask
+ imask = NativeReader.DecodeUnsignedGc(image, ref offset);
+ AddNewTransition(new IPtrMask((int)curOffs, imask));
+ break;
+
+ case 0x04:
+ AddNewTransition(new CalleeSavedRegister((int)curOffs, (CalleeSavedRegisters)(val & 0x3)));
+ break;
+
+ case 0x08:
+ val = image[offset++];
+ callRegMask = val & 0xF;
+ imask = val >> 4;
+ lastSkip = NativeReader.ReadUInt32(image, ref offset);
+ curOffs += lastSkip;
+ callArgCnt = NativeReader.ReadUInt32(image, ref offset);
+ callPndTabCnt = NativeReader.ReadUInt32(image, ref offset);
+ callPndTabSize = NativeReader.ReadUInt32(image, ref offset);
+ callPndTab = true;
+ SaveCallTransition(image, ref offset, val, curOffs, callRegMask, callPndTab, callPndTabCnt, callPndMask, lastSkip, ref imask);
+ break;
+ case 0x0C:
+ return;
+ default:
+ throw new BadImageFormatException("Invalid GC encoding");
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+}
--- /dev/null
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using System.Collections.Generic;
+using System.Reflection.PortableExecutable;
+using System.Text;
+using System.Xml.Serialization;
+
+namespace R2RDump.x86
+{
+ public class GcSlotTable
+ {
+ public class GcSlot
+ {
+ [XmlAttribute("Index")]
+ public int Index { get; set; }
+ public string Register { get; set; }
+ public int StackOffset { get; set; }
+ public int LowBits { get; set; }
+ public GcSlotFlags Flags { get; set; }
+
+ public int BeginOffset { get; set; }
+ public int EndOffset { get; set; }
+
+ public GcSlot() { }
+
+ public GcSlot(int index, string reg, int stkOffs, int lowBits, GcSlotFlags flags)
+ {
+ Index = index;
+ Register = reg;
+ StackOffset = stkOffs;
+ LowBits = lowBits;
+ Flags = flags;
+
+ BeginOffset = -1;
+ EndOffset = -1;
+ }
+
+ public GcSlot(int index, string reg, int beginOffs, int endOffs, int varOffs, int lowBits, GcSlotFlags flags)
+ {
+ Index = index;
+ Register = $"E{reg}P";
+ StackOffset = varOffs;
+ LowBits = lowBits;
+ Flags = flags;
+
+ BeginOffset = beginOffs;
+ EndOffset = endOffs;
+ }
+
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ if (Flags == GcSlotFlags.GC_SLOT_UNTRACKED)
+ {
+ if (StackOffset < 0)
+ {
+ sb.AppendLine($"\t\t\t[{Register}-{-StackOffset}]");
+ }
+ else
+ {
+ sb.AppendLine($"\t\t\t[{Register}+{StackOffset}]");
+ }
+ }
+ else
+ {
+ sb.AppendLine($"\t\t\tBeginOffset: {BeginOffset}");
+ sb.AppendLine($"\t\t\tEndOffset: {EndOffset}");
+ if (Register.Equals("BP"))
+ {
+ sb.AppendLine($"\t\t\t[{Register}-{-StackOffset}]");
+ }
+ else
+ {
+ sb.AppendLine($"\t\t\t[{Register}+{-StackOffset}]");
+ }
+ }
+
+ sb.AppendLine($"\t\t\tFlags: {Flags}");
+
+ sb.Append($"\t\t\tLowBits: ");
+ if (Flags == GcSlotFlags.GC_SLOT_UNTRACKED)
+ {
+ if((LowBits & pinned_OFFSET_FLAG) != 0) sb.Append("pinned ");
+ if ((LowBits & byref_OFFSET_FLAG) != 0) sb.Append("byref ");
+ }
+ sb.AppendLine();
+
+ return sb.ToString();
+ }
+ }
+
+ private const uint OFFSET_MASK = 0x3;
+ private const uint byref_OFFSET_FLAG = 0x1; // the offset is an interior ptr
+ private const uint pinned_OFFSET_FLAG = 0x2; // the offset is a pinned ptr
+
+ public List<GcSlot> GcSlots { get; set; }
+
+ public GcSlotTable() { }
+
+ public GcSlotTable(byte[] image, InfoHdrSmall header, ref int offset)
+ {
+ GcSlots = new List<GcSlot>();
+
+ DecodeUntracked(image, header, ref offset);
+ DecodeFrameVariableLifetimeTable(image, header, ref offset);
+ }
+
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ sb.AppendLine($"\t\tGcSlots:");
+ sb.AppendLine($"\t\t\t-------------------------");
+ foreach (GcSlot slot in GcSlots)
+ {
+ sb.Append(slot.ToString());
+ sb.AppendLine($"\t\t\t-------------------------");
+ }
+
+ return sb.ToString();
+ }
+
+ private void DecodeUntracked(byte[] image, InfoHdrSmall header, ref int offset)
+ {
+ uint calleeSavedRegs = 0;
+ if (header.DoubleAlign)
+ {
+ calleeSavedRegs = 0;
+ if (header.EdiSaved) calleeSavedRegs++;
+ if (header.EsiSaved) calleeSavedRegs++;
+ if (header.EbxSaved) calleeSavedRegs++;
+ }
+
+ uint count = header.UntrackedCnt;
+ int lastStkOffs = 0;
+ while (count-- > 0)
+ {
+ int stkOffsDelta;
+ int lowBits;
+
+ char reg = header.EbpFrame ? 'B' : 'S';
+
+ stkOffsDelta = NativeReader.DecodeSigned(image, ref offset);
+ int stkOffs = lastStkOffs - stkOffsDelta;
+ lastStkOffs = stkOffs;
+
+ lowBits = (int)OFFSET_MASK & stkOffs;
+ stkOffs = (int)((uint)stkOffs & ~OFFSET_MASK);
+
+ if (header.DoubleAlign &&
+ (uint)stkOffs >= sizeof(int) * (header.FrameSize + calleeSavedRegs))
+ {
+ reg = 'B';
+ stkOffs -= sizeof(int) * (int)(header.FrameSize + calleeSavedRegs);
+ }
+
+ GcSlots.Add(new GcSlot(GcSlots.Count, $"E{reg}P", stkOffs, lowBits, GcSlotFlags.GC_SLOT_UNTRACKED));
+ }
+ }
+
+ private void DecodeFrameVariableLifetimeTable(byte[] image, InfoHdrSmall header, ref int offset)
+ {
+ uint count = header.VarPtrTableSize;
+ uint curOffs = 0;
+ while (count-- > 0)
+ {
+ uint varOffs = NativeReader.DecodeUnsignedGc(image, ref offset);
+ uint begOffs = NativeReader.DecodeUDelta(image, ref offset, curOffs);
+ uint endOffs = NativeReader.DecodeUDelta(image, ref offset, begOffs);
+
+
+ uint lowBits = varOffs & 0x3;
+ varOffs &= ~OFFSET_MASK;
+
+ curOffs = begOffs;
+
+ string reg = header.EbpFrame ? "BP" : "SP";
+ GcSlots.Add(new GcSlot(GcSlots.Count, reg, (int)begOffs, (int)endOffs, (int)varOffs, (int)lowBits, GcSlotFlags.GC_SLOT_BASE));
+ }
+ }
+ }
+}
--- /dev/null
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace R2RDump.x86
+{
+ public enum Action
+ {
+ POP = 0x00,
+ PUSH = 0x01,
+ KILL = 0x02,
+ LIVE = 0x03,
+ DEAD = 0x04
+ }
+
+ public class CalleeSavedRegister : BaseGcTransition
+ {
+ public CalleeSavedRegisters Register { get; set; }
+
+ public CalleeSavedRegister() { }
+
+ public CalleeSavedRegister(int codeOffset, CalleeSavedRegisters reg)
+ : base(codeOffset)
+ {
+ Register = reg;
+ }
+
+ public override string ToString()
+ {
+ return $"thisptr in {Register}";
+ }
+ }
+
+ public class IPtrMask : BaseGcTransition
+ {
+ public uint IMask { get; set; }
+
+ public IPtrMask() { }
+
+ public IPtrMask(int codeOffset, uint imask)
+ : base(codeOffset)
+ {
+ IMask = imask;
+ }
+
+ public override string ToString()
+ {
+ return $"iptrMask: {IMask}";
+ }
+ }
+
+ public class GcTransitionRegister : BaseGcTransition
+ {
+ public Registers Register { get; set; }
+ public Action IsLive { get; set; }
+ public int PushCountOrPopSize { get; set; }
+ public bool IsThis { get; set; }
+ public bool Iptr { get; set; }
+
+ public GcTransitionRegister() { }
+
+ public GcTransitionRegister(int codeOffset, Registers reg, Action isLive, bool isThis = false, bool iptr = false, int pushCountOrPopSize = -1)
+ : base(codeOffset)
+ {
+ Register = reg;
+ IsLive = isLive;
+ PushCountOrPopSize = pushCountOrPopSize;
+ }
+
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ if (IsLive == Action.LIVE)
+ {
+ sb.Append($"reg {Register} becoming live");
+ }
+ else if (IsLive == Action.DEAD)
+ {
+ sb.Append($"reg {Register} becoming dead");
+ }
+ else
+ {
+ sb.Append((IsLive == Action.PUSH ? "push" : "pop") + $" {Register}");
+ if (PushCountOrPopSize != -1)
+ sb.Append($" {PushCountOrPopSize}");
+ }
+
+ if (IsThis)
+ sb.Append(" 'this'");
+ if (Iptr)
+ sb.Append(" (iptr)");
+
+ return sb.ToString();
+ }
+ }
+
+ public class GcTransitionPointer : BaseGcTransition
+ {
+ private bool _isEbpFrame;
+ public uint ArgOffset { get; set; }
+ public uint ArgCount { get; set; }
+ public Action Act { get; set; }
+ public bool IsPtr { get; set; }
+ public bool IsThis { get; set; }
+ public bool Iptr { get; set; }
+
+ public GcTransitionPointer() { }
+
+ public GcTransitionPointer(int codeOffset, uint argOffs, uint argCnt, Action act, bool isEbpFrame, bool isThis = false, bool iptr = false, bool isPtr = true)
+ : base(codeOffset)
+ {
+ _isEbpFrame = isEbpFrame;
+ CodeOffset = codeOffset;
+ ArgOffset = argOffs;
+ ArgCount = argCnt;
+ Act = act;
+ IsPtr = isPtr;
+ }
+
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ if (Act == Action.KILL)
+ {
+ sb.Append($"kill args {ArgOffset}");
+ }
+ else
+ {
+ if (Act == Action.POP)
+ {
+ sb.Append($"pop ");
+ }
+ else
+ {
+ sb.Append($"push ");
+ }
+ if (IsPtr)
+ {
+ sb.Append($"{ArgOffset}");
+ if (!_isEbpFrame)
+ {
+ sb.Append($" args ({ArgCount})");
+ }
+ else if (Act == Action.POP)
+ {
+ sb.Append(" ptrs");
+ }
+
+ if (IsThis)
+ sb.Append(" 'this'");
+ if (Iptr)
+ sb.Append(" (iptr)");
+ }
+ else
+ {
+ sb.Append("non-pointer");
+ sb.Append($" ({ArgCount})");
+ }
+ }
+
+ return sb.ToString();
+ }
+ }
+
+ public class GcTransitionCall : BaseGcTransition
+ {
+ public struct CallRegister
+ {
+ public Registers Register { get; set; }
+ public bool IsByRef { get; set; }
+
+ public CallRegister(Registers reg, bool isByRef)
+ {
+ Register = reg;
+ IsByRef = isByRef;
+ }
+ }
+
+ public struct PtrArg
+ {
+ public uint StackOffset { get; set; }
+ public uint LowBit { get; set; }
+
+ public PtrArg(uint stackOffset, uint lowBit)
+ {
+ StackOffset = stackOffset;
+ LowBit = lowBit;
+ }
+ }
+
+ public List<CallRegister> CallRegisters { get; set; }
+ public List<PtrArg> PtrArgs { get; set; }
+ public uint ArgMask { get; set; }
+ public uint IArgs { get; set; }
+
+ public GcTransitionCall() { }
+
+ public GcTransitionCall(int codeOffset)
+ : base(codeOffset)
+ {
+ CallRegisters = new List<CallRegister>();
+ PtrArgs = new List<PtrArg>();
+ ArgMask = 0;
+ IArgs = 0;
+ }
+
+ public GcTransitionCall(int codeOffset, bool isEbpFrame, uint regMask, uint byRefRegMask)
+ : base(codeOffset)
+ {
+ CallRegisters = new List<CallRegister>();
+ PtrArgs = new List<PtrArg>();
+ if ((regMask & 1) != 0)
+ {
+ Registers reg = Registers.EDI;
+ bool isByRef = (byRefRegMask & 1) != 0;
+ CallRegisters.Add(new CallRegister(reg, isByRef));
+ }
+ if ((regMask & 2) != 0)
+ {
+ Registers reg = Registers.ESI;
+ bool isByRef = (byRefRegMask & 2) != 0;
+ CallRegisters.Add(new CallRegister(reg, isByRef));
+ }
+ if ((regMask & 4) != 0)
+ {
+ Registers reg = Registers.EBX;
+ bool isByRef = (byRefRegMask & 4) != 0;
+ CallRegisters.Add(new CallRegister(reg, isByRef));
+ }
+ if (!isEbpFrame)
+ {
+ if ((regMask & 8) != 0)
+ {
+ Registers reg = Registers.EBP;
+ CallRegisters.Add(new CallRegister(reg, false));
+ }
+ }
+ ArgMask = 0;
+ IArgs = 0;
+ }
+
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ sb.Append("call [ ");
+ foreach (CallRegister reg in CallRegisters)
+ {
+ sb.Append($"{reg.Register}");
+ if (reg.IsByRef)
+ sb.Append("(byref)");
+ sb.Append(" ");
+ }
+
+ if (PtrArgs.Count > 0)
+ {
+ sb.Append(" ] ptrArgs=[ ");
+ foreach (PtrArg ptrArg in PtrArgs)
+ {
+ sb.Append($"{ptrArg.StackOffset}");
+ if (ptrArg.LowBit != 0)
+ sb.Append("i");
+ sb.Append(" ");
+ }
+ sb.Append(" ]");
+ }
+ else
+ {
+ sb.Append($" ] argMask={ArgMask}");
+ if (IArgs != 0)
+ sb.Append($" (iargs={IArgs})");
+ }
+
+ return sb.ToString();
+ }
+ }
+}
--- /dev/null
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Xml.Serialization;
+
+namespace R2RDump.x86
+{
+ public struct InfoHdrSmall
+ {
+ private const uint INVALID_GS_COOKIE_OFFSET = 0;
+ private const uint INVALID_SYNC_OFFSET = 0;
+
+ public uint PrologSize { get; set; }
+ public uint EpilogSize { get; set; }
+ public byte EpilogCount { get; set; }
+ public bool EpilogAtEnd { get; set; }
+ public bool EdiSaved { get; set; } // which callee-saved regs are pushed onto stack
+ public bool EsiSaved { get; set; }
+ public bool EbxSaved { get; set; }
+ public bool EbpSaved { get; set; }
+ public bool EbpFrame { get; set; } // locals accessed relative to ebp
+ public bool Interruptible { get; set; } // is intr. at all points (except prolog/epilog), not just call-sites
+ public bool DoubleAlign { get; set; } // uses double-aligned stack (ebpFrame will be false)
+ public bool Security { get; set; } // has slot for security object
+ public bool Handlers { get; set; } // has callable handlers
+ public bool Localloc { get; set; } // uses localloc
+ public bool EditNcontinue { get; set; } // was JITed in EnC mode
+ public bool Varargs { get; set; } // function uses varargs calling convention
+ public bool ProfCallbacks { get; set; }
+ public byte GenericsContext { get; set; }// function reports a generics context parameter is present
+ public byte GenericsContextIsMethodDesc { get; set; }
+ public ReturnKinds ReturnKind { get; set; } // Available GcInfo v2 onwards, previously undefined
+ public ushort ArgCount { get; set; }
+ public uint FrameSize { get; set; }
+ public uint UntrackedCnt { get; set; }
+ public uint VarPtrTableSize { get; set; }
+
+ public uint GsCookieOffset { get; set; }
+ public uint SyncStartOffset { get; set; }
+ public uint SyncEndOffset { get; set; }
+ public uint RevPInvokeOffset { get; set; }
+
+ public bool HasArgTabOffset { get; set; }
+ public uint ArgTabOffset { get; set; }
+ [XmlIgnore]
+ public List<int> Epilogs { get; set; }
+
+ public InfoHdrSmall(uint prologSize, uint epilogSize, byte epilogCount, byte epilogAtEnd, byte ediSaved, byte esiSaved, byte ebxSaved, byte ebpSaved, byte ebpFrame,
+ byte interruptible, byte doubleAlign, byte security, byte handlers, byte localloc, byte editNcontinue, byte varargs, byte profCallbacks,
+ byte genericsContext, byte genericsContextIsMethodDesc, byte returnKind, ushort argCount, uint frameSize, uint untrackedCnt, uint varPtrTableSize)
+ {
+ PrologSize = prologSize;
+ EpilogSize = epilogSize;
+ EpilogCount = epilogCount;
+ EpilogAtEnd = epilogAtEnd == 1;
+ EdiSaved = ediSaved == 1;
+ EsiSaved = esiSaved == 1;
+ EbxSaved = ebxSaved == 1;
+ EbpSaved = ebpSaved == 1;
+ EbpFrame = ebpFrame == 1;
+ Interruptible = interruptible == 1;
+ DoubleAlign = doubleAlign == 1;
+ Security = security == 1;
+ Handlers = handlers == 1;
+ Localloc = localloc == 1;
+ EditNcontinue = editNcontinue == 1;
+ Varargs = varargs == 1;
+ ProfCallbacks = profCallbacks == 1;
+ GenericsContext = genericsContext;
+ GenericsContextIsMethodDesc = genericsContextIsMethodDesc;
+ ReturnKind = (ReturnKinds)returnKind;
+ ArgCount = argCount;
+ FrameSize = frameSize;
+ UntrackedCnt = untrackedCnt;
+ VarPtrTableSize = varPtrTableSize;
+
+ GsCookieOffset = 0;
+ SyncStartOffset = 0;
+ SyncEndOffset = 0;
+ RevPInvokeOffset = 0;
+
+ HasArgTabOffset = false;
+ ArgTabOffset = 0;
+ Epilogs = null;
+ }
+
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ sb.AppendLine($"\t\tPrologSize: {PrologSize}");
+ sb.AppendLine($"\t\tEpilogSize: {EpilogSize}");
+ sb.AppendLine($"\t\tEpilogCount: {EpilogCount}");
+ sb.Append("\t\tEpilogAtEnd: ");
+ sb.AppendLine(EpilogAtEnd ? "yes" : "no");
+
+ sb.Append($"\t\tCallee-saved regs = ");
+ if (EdiSaved) sb.Append("EDI");
+ if (EsiSaved) sb.Append("ESI");
+ if (EbxSaved) sb.Append("EBX");
+ if (EbpSaved) sb.Append("EBP");
+ sb.AppendLine();
+
+ sb.Append($"\t\tEbpFrame: ");
+ sb.AppendLine(EbpFrame ? "yes" : "no");
+ sb.Append($"\t\tFully Interruptible: ");
+ sb.AppendLine(Interruptible ? "yes" : "no");
+ sb.Append($"\t\tDoubleAlign: ");
+ sb.AppendLine(DoubleAlign ? "yes" : "no");
+ sb.AppendLine($"\t\tArguments Size: {ArgCount} DWORDs");
+ sb.AppendLine($"\t\tStack Frame Size: {FrameSize} DWORDs");
+ sb.AppendLine($"\t\tUntrackedCnt: {UntrackedCnt}");
+ sb.AppendLine($"\t\tVarPtrTableSize: {VarPtrTableSize}");
+
+ if (Security) sb.AppendLine($"\t\tSecurity Check Obj: yes");
+ if (Handlers) sb.AppendLine($"\t\tHandlers: yes");
+ if (Localloc) sb.AppendLine($"\t\tLocalloc: yes");
+ if (EditNcontinue) sb.AppendLine($"\t\tEditNcontinue: yes");
+ if (Varargs) sb.AppendLine($"\t\tVarargs: yes");
+ if (ProfCallbacks) sb.AppendLine($"\t\tProfCallbacks: yes");
+
+ sb.AppendLine($"\t\tGenericsContext: {GenericsContext}");
+ sb.AppendLine($"\t\tGenericsContextIsMethodDesc: {GenericsContextIsMethodDesc}");
+ sb.AppendLine($"\t\tReturnKind: {ReturnKind}");
+ sb.AppendLine($"\t\tRevPInvokeOffset: {RevPInvokeOffset}");
+
+ if (GsCookieOffset != INVALID_GS_COOKIE_OFFSET)
+ {
+ sb.Append("\t\tGuardStack cookie = [");
+ sb.Append(EbpFrame ? "EBP-" : "ESP+");
+ sb.AppendLine($"{GsCookieOffset}]\n");
+ }
+ if (SyncStartOffset != INVALID_GS_COOKIE_OFFSET)
+ {
+ sb.AppendLine($"\t\tSync region = [{SyncStartOffset},{SyncEndOffset}]");
+ }
+
+ sb.Append($"\t\tEpilogs:");
+ foreach (int epilog in Epilogs)
+ {
+ sb.AppendLine($" {epilog}");
+ }
+ if (HasArgTabOffset)
+ sb.AppendLine($"\t\tArgTabOffset: {ArgTabOffset}");
+
+ return sb.ToString();
+ }
+ };
+
+ public class InfoHdrDecoder {
+
+ private const uint HAS_VARPTR = 0xFFFFFFFF;
+ private const uint HAS_UNTRACKED = 0xFFFFFFFF;
+ private const uint HAS_GS_COOKIE_OFFSET = 0xFFFFFFFF;
+ private const uint HAS_SYNC_OFFSET = 0xFFFFFFFF;
+ private const uint HAS_REV_PINVOKE_FRAME_OFFSET = 0xFFFFFFFF;
+ private const uint YES = HAS_VARPTR;
+
+ public static InfoHdrSmall GetInfoHdr(byte encoding)
+ {
+ return _infoHdrShortcut[encoding];
+ }
+
+ public static InfoHdrSmall DecodeHeader(byte[] image, ref int offset, int codeLength)
+ {
+ byte nextByte = image[offset++];
+ byte encoding = (byte)(nextByte & 0x7f);
+ InfoHdrSmall header = GetInfoHdr(encoding);
+ while ((nextByte & (uint)InfoHdrAdjustConstants.MORE_BYTES_TO_FOLLOW) != 0)
+ {
+ nextByte = image[offset++];
+ encoding = (byte)(nextByte & (uint)InfoHdrAdjustConstants.ADJ_ENCODING_MAX);
+
+ if (encoding < (uint)InfoHdrAdjust.NEXT_FOUR_START)
+ {
+ if (encoding < (uint)InfoHdrAdjust.SET_ARGCOUNT)
+ {
+ header.FrameSize = (byte)(encoding - (uint)InfoHdrAdjust.SET_FRAMESIZE);
+ }
+ else if (encoding < (uint)InfoHdrAdjust.SET_PROLOGSIZE)
+ {
+ header.ArgCount = (byte)(encoding - (uint)InfoHdrAdjust.SET_ARGCOUNT);
+ }
+ else if (encoding < (uint)InfoHdrAdjust.SET_EPILOGSIZE)
+ {
+ header.PrologSize = (byte)(encoding - (uint)InfoHdrAdjust.SET_PROLOGSIZE);
+ }
+ else if (encoding < (uint)InfoHdrAdjust.SET_EPILOGCNT)
+ {
+ header.EpilogSize = (byte)(encoding - (uint)InfoHdrAdjust.SET_EPILOGSIZE);
+ }
+ else if (encoding < (uint)InfoHdrAdjust.SET_UNTRACKED)
+ {
+ header.EpilogCount = (byte)((encoding - (uint)InfoHdrAdjust.SET_EPILOGCNT) / 2);
+ header.EpilogAtEnd = ((encoding - (uint)InfoHdrAdjust.SET_EPILOGCNT) & 1) == 1 ? true : false;
+ }
+ else if (encoding < (uint)InfoHdrAdjust.FIRST_FLIP)
+ {
+ header.UntrackedCnt = (byte)(encoding - (uint)InfoHdrAdjust.SET_UNTRACKED);
+ }
+ else
+ {
+ switch (encoding)
+ {
+ case (byte)InfoHdrAdjust.FLIP_EDI_SAVED:
+ header.EdiSaved = !header.EdiSaved;
+ break;
+ case (byte)InfoHdrAdjust.FLIP_ESI_SAVED:
+ header.EsiSaved = !header.EsiSaved;
+ break;
+ case (byte)InfoHdrAdjust.FLIP_EBX_SAVED:
+ header.EbxSaved = !header.EbxSaved;
+ break;
+ case (byte)InfoHdrAdjust.FLIP_EBP_SAVED:
+ header.EbpSaved = !header.EbpSaved;
+ break;
+ case (byte)InfoHdrAdjust.FLIP_EBP_FRAME:
+ header.EbpFrame = !header.EbpFrame;
+ break;
+ case (byte)InfoHdrAdjust.FLIP_INTERRUPTIBLE:
+ header.Interruptible = !header.Interruptible;
+ break;
+ case (byte)InfoHdrAdjust.FLIP_DOUBLE_ALIGN:
+ header.DoubleAlign = !header.DoubleAlign;
+ break;
+ case (byte)InfoHdrAdjust.FLIP_SECURITY:
+ header.Security = !header.Security;
+ break;
+ case (byte)InfoHdrAdjust.FLIP_HANDLERS:
+ header.Handlers = !header.Handlers;
+ break;
+ case (byte)InfoHdrAdjust.FLIP_LOCALLOC:
+ header.Localloc = !header.Localloc;
+ break;
+ case (byte)InfoHdrAdjust.FLIP_EDITnCONTINUE:
+ header.EditNcontinue = !header.EditNcontinue;
+ break;
+ case (byte)InfoHdrAdjust.FLIP_VAR_PTR_TABLE_SZ:
+ header.VarPtrTableSize ^= HAS_VARPTR;
+ break;
+ case (byte)InfoHdrAdjust.FFFF_UNTRACKED_CNT:
+ header.UntrackedCnt = HAS_UNTRACKED;
+ break;
+ case (byte)InfoHdrAdjust.FLIP_VARARGS:
+ header.Varargs = !header.Varargs;
+ break;
+ case (byte)InfoHdrAdjust.FLIP_PROF_CALLBACKS:
+ header.ProfCallbacks = !header.ProfCallbacks;
+ break;
+ case (byte)InfoHdrAdjust.FLIP_HAS_GENERICS_CONTEXT:
+ header.GenericsContext ^= 1;
+ break;
+ case (byte)InfoHdrAdjust.FLIP_GENERICS_CONTEXT_IS_METHODDESC:
+ header.GenericsContextIsMethodDesc ^= 1;
+ break;
+ case (byte)InfoHdrAdjust.FLIP_HAS_GS_COOKIE:
+ header.GsCookieOffset ^= HAS_GS_COOKIE_OFFSET;
+ break;
+ case (byte)InfoHdrAdjust.FLIP_SYNC:
+ header.SyncStartOffset ^= HAS_SYNC_OFFSET;
+ break;
+ case (byte)InfoHdrAdjust.FLIP_REV_PINVOKE_FRAME:
+ header.RevPInvokeOffset ^= HAS_REV_PINVOKE_FRAME_OFFSET;
+ break;
+
+ case (byte)InfoHdrAdjust.NEXT_OPCODE:
+ encoding = (byte)(image[offset++] & (int)InfoHdrAdjustConstants.ADJ_ENCODING_MAX);
+ // encoding here always corresponds to codes in InfoHdrAdjust2 set
+
+ if (encoding < (int)InfoHdrAdjustConstants.SET_RET_KIND_MAX)
+ {
+ header.ReturnKind = (ReturnKinds)encoding;
+ }
+ else
+ {
+ throw new BadImageFormatException("Unexpected gcinfo header encoding");
+ }
+ break;
+ default:
+ throw new BadImageFormatException("Unexpected gcinfo header encoding");
+ }
+ }
+ }
+ else
+ {
+ byte lowBits;
+ switch (encoding >> 4)
+ {
+ case 5:
+ lowBits = (byte)(encoding & 0xf);
+ header.FrameSize <<= 4;
+ header.FrameSize += lowBits;
+ break;
+ case 6:
+ lowBits = (byte)(encoding & 0xf);
+ header.ArgCount <<= 4;
+ header.ArgCount += lowBits;
+ break;
+ case 7:
+ if ((encoding & 0x8) == 0)
+ {
+ lowBits = (byte)(encoding & 0x7);
+ header.PrologSize <<= 3;
+ header.PrologSize += lowBits;
+ }
+ else
+ {
+ lowBits = (byte)(encoding & 0x7);
+ header.EpilogSize <<= 3;
+ header.EpilogSize += lowBits;
+ }
+ break;
+ default:
+ throw new BadImageFormatException("Unexpected gcinfo header encoding");
+ }
+ }
+ }
+
+ if (header.UntrackedCnt == HAS_UNTRACKED)
+ {
+ header.HasArgTabOffset = true;
+ header.UntrackedCnt = NativeReader.DecodeUnsignedGc(image, ref offset);
+ }
+ if (header.VarPtrTableSize == HAS_VARPTR)
+ {
+ header.HasArgTabOffset = true;
+ header.VarPtrTableSize = NativeReader.DecodeUnsignedGc(image, ref offset);
+ }
+ if (header.GsCookieOffset == HAS_GS_COOKIE_OFFSET)
+ {
+ header.GsCookieOffset = NativeReader.DecodeUnsignedGc(image, ref offset);
+ }
+ if (header.SyncStartOffset == HAS_SYNC_OFFSET)
+ {
+ header.SyncStartOffset = NativeReader.DecodeUnsignedGc(image, ref offset);
+ header.SyncEndOffset = NativeReader.DecodeUnsignedGc(image, ref offset);
+ }
+ if (header.RevPInvokeOffset == HAS_REV_PINVOKE_FRAME_OFFSET)
+ {
+ header.RevPInvokeOffset = NativeReader.DecodeUnsignedGc(image, ref offset);
+ }
+
+ header.Epilogs = new List<int>();
+ if (header.EpilogCount > 1 || (header.EpilogCount != 0 && !header.EpilogAtEnd))
+ {
+ uint offs = 0;
+
+ for (int i = 0; i < header.EpilogCount; i++)
+ {
+ offs = NativeReader.DecodeUDelta(image, ref offset, offs);
+ header.Epilogs.Add((int)offs);
+ }
+ }
+ else
+ {
+ if (header.EpilogCount != 0)
+ header.Epilogs.Add(codeLength - (int)header.EpilogSize);
+ }
+
+ if (header.HasArgTabOffset)
+ {
+ header.ArgTabOffset = NativeReader.DecodeUnsignedGc(image, ref offset);
+ }
+
+ return header;
+ }
+
+ private static InfoHdrSmall[] _infoHdrShortcut = {
+ new InfoHdrSmall( 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 1139 00
+ new InfoHdrSmall( 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 128738 01
+ new InfoHdrSmall( 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 3696 02
+ new InfoHdrSmall( 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 402 03
+ new InfoHdrSmall( 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 ), // 4259 04
+ new InfoHdrSmall( 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0 ), // 3379 05
+ new InfoHdrSmall( 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 ), // 2058 06
+ new InfoHdrSmall( 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0 ), // 728 07
+ new InfoHdrSmall( 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0 ), // 984 08
+ new InfoHdrSmall( 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0 ), // 606 09
+ new InfoHdrSmall( 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0 ), // 1110 0a
+ new InfoHdrSmall( 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0 ), // 414 0b
+ new InfoHdrSmall( 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, YES ), // 1553 0c
+ new InfoHdrSmall( 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, YES ), // 584 0d
+ new InfoHdrSmall( 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, YES ), // 2182 0e
+ new InfoHdrSmall( 1, 2, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 3445 0f
+ new InfoHdrSmall( 1, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ), // 1369 10
+ new InfoHdrSmall( 1, 2, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 515 11
+ new InfoHdrSmall( 1, 2, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 21127 12
+ new InfoHdrSmall( 1, 2, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 3517 13
+ new InfoHdrSmall( 1, 2, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 750 14
+ new InfoHdrSmall( 1, 4, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 ), // 1876 15
+ new InfoHdrSmall( 1, 4, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0 ), // 1665 16
+ new InfoHdrSmall( 1, 4, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 ), // 729 17
+ new InfoHdrSmall( 1, 4, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0 ), // 484 18
+ new InfoHdrSmall( 1, 4, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 ), // 331 19
+ new InfoHdrSmall( 2, 3, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, YES ), // 361 1a
+ new InfoHdrSmall( 2, 3, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 964 1b
+ new InfoHdrSmall( 2, 3, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 3713 1c
+ new InfoHdrSmall( 2, 3, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 466 1d
+ new InfoHdrSmall( 2, 3, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ), // 1325 1e
+ new InfoHdrSmall( 2, 3, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, YES ), // 712 1f
+ new InfoHdrSmall( 2, 3, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 588 20
+ new InfoHdrSmall( 2, 3, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 20542 21
+ new InfoHdrSmall( 2, 3, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 3802 22
+ new InfoHdrSmall( 2, 3, 3, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 798 23
+ new InfoHdrSmall( 2, 5, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 ), // 1900 24
+ new InfoHdrSmall( 2, 5, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 ), // 385 25
+ new InfoHdrSmall( 2, 5, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 ), // 1617 26
+ new InfoHdrSmall( 2, 5, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0 ), // 1743 27
+ new InfoHdrSmall( 2, 5, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 ), // 909 28
+ new InfoHdrSmall( 2, 5, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0 ), // 602 29
+ new InfoHdrSmall( 2, 5, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0 ), // 352 2a
+ new InfoHdrSmall( 2, 6, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, YES ), // 657 2b
+ new InfoHdrSmall( 2, 7, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, YES ), // 1283 2c
+ new InfoHdrSmall( 2, 7, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, YES ), // 1286 2d
+ new InfoHdrSmall( 3, 4, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ), // 1495 2e
+ new InfoHdrSmall( 3, 4, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 1989 2f
+ new InfoHdrSmall( 3, 4, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ), // 1154 30
+ new InfoHdrSmall( 3, 4, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 9300 31
+ new InfoHdrSmall( 3, 4, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ), // 392 32
+ new InfoHdrSmall( 3, 4, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 1720 33
+ new InfoHdrSmall( 3, 6, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 ), // 1246 34
+ new InfoHdrSmall( 3, 6, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 ), // 800 35
+ new InfoHdrSmall( 3, 6, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 ), // 1179 36
+ new InfoHdrSmall( 3, 6, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0 ), // 1368 37
+ new InfoHdrSmall( 3, 6, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 ), // 349 38
+ new InfoHdrSmall( 3, 6, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0 ), // 505 39
+ new InfoHdrSmall( 3, 6, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 ), // 629 3a
+ new InfoHdrSmall( 3, 8, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, YES ), // 365 3b
+ new InfoHdrSmall( 4, 5, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ), // 487 3c
+ new InfoHdrSmall( 4, 5, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 1752 3d
+ new InfoHdrSmall( 4, 5, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ), // 1959 3e
+ new InfoHdrSmall( 4, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 2436 3f
+ new InfoHdrSmall( 4, 5, 2, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 861 40
+ new InfoHdrSmall( 4, 7, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 ), // 1459 41
+ new InfoHdrSmall( 4, 7, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 ), // 950 42
+ new InfoHdrSmall( 4, 7, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 ), // 1491 43
+ new InfoHdrSmall( 4, 7, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0 ), // 879 44
+ new InfoHdrSmall( 4, 7, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 ), // 408 45
+ new InfoHdrSmall( 5, 4, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 4870 46
+ new InfoHdrSmall( 5, 6, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ), // 359 47
+ new InfoHdrSmall( 5, 6, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0 ), // 915 48
+ new InfoHdrSmall( 5, 6, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0 ), // 412 49
+ new InfoHdrSmall( 5, 6, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ), // 1288 4a
+ new InfoHdrSmall( 5, 6, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, YES ), // 1591 4b
+ new InfoHdrSmall( 5, 6, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, YES ), // 361 4c
+ new InfoHdrSmall( 5, 6, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0 ), // 623 4d
+ new InfoHdrSmall( 5, 8, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0 ), // 1239 4e
+ new InfoHdrSmall( 6, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 457 4f
+ new InfoHdrSmall( 6, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 606 50
+ new InfoHdrSmall( 6, 4, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, YES ), // 1073 51
+ new InfoHdrSmall( 6, 4, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, YES ), // 508 52
+ new InfoHdrSmall( 6, 6, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ), // 330 53
+ new InfoHdrSmall( 6, 6, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ), // 1709 54
+ new InfoHdrSmall( 6, 7, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0 ), // 1164 55
+ new InfoHdrSmall( 7, 4, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), // 556 56
+ new InfoHdrSmall( 7, 5, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, YES ), // 529 57
+ new InfoHdrSmall( 7, 5, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, YES ), // 1423 58
+ new InfoHdrSmall( 7, 8, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, YES ), // 2455 59
+ new InfoHdrSmall( 7, 8, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0 ), // 956 5a
+ new InfoHdrSmall( 7, 8, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, YES ), // 1399 5b
+ new InfoHdrSmall( 7, 8, 2, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, YES ), // 587 5c
+ new InfoHdrSmall( 7, 10, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6, 1, YES ), // 743 5d
+ new InfoHdrSmall( 7, 10, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0 ), // 1004 5e
+ new InfoHdrSmall( 7, 10, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, YES ), // 487 5f
+ new InfoHdrSmall( 7, 10, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0 ), // 337 60
+ new InfoHdrSmall( 7, 10, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, YES ), // 361 61
+ new InfoHdrSmall( 8, 3, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 ), // 560 62
+ new InfoHdrSmall( 8, 6, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0 ), // 1377 63
+ new InfoHdrSmall( 9, 4, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 ), // 877 64
+ new InfoHdrSmall( 9, 7, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0 ), // 3041 65
+ new InfoHdrSmall( 9, 7, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, YES ), // 349 66
+ new InfoHdrSmall( 10, 5, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 ), // 2061 67
+ new InfoHdrSmall( 10, 5, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 ), // 577 68
+ new InfoHdrSmall( 11, 6, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 ), // 1195 69
+ new InfoHdrSmall( 12, 5, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ), // 491 6a
+ new InfoHdrSmall( 13, 8, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, YES ), // 627 6b
+ new InfoHdrSmall( 13, 8, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0 ), // 1099 6c
+ new InfoHdrSmall( 13, 10, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6, 1, YES ), // 488 6d
+ new InfoHdrSmall( 14, 7, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, YES ), // 574 6e
+ new InfoHdrSmall( 16, 7, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, YES ), // 1281 6f
+ new InfoHdrSmall( 16, 7, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, YES ), // 1881 70
+ new InfoHdrSmall( 16, 7, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, YES ), // 339 71
+ new InfoHdrSmall( 16, 7, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0 ), // 2594 72
+ new InfoHdrSmall( 16, 7, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0 ), // 339 73
+ new InfoHdrSmall( 16, 7, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, YES ), // 2107 74
+ new InfoHdrSmall( 16, 7, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, YES ), // 2372 75
+ new InfoHdrSmall( 16, 7, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, YES ), // 1078 76
+ new InfoHdrSmall( 16, 7, 2, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, YES ), // 384 77
+ new InfoHdrSmall( 16, 9, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, YES ), // 1541 78
+ new InfoHdrSmall( 16, 9, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 4, 1, YES ), // 975 79
+ new InfoHdrSmall( 19, 7, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, YES ), // 546 7a
+ new InfoHdrSmall( 24, 7, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, YES ), // 675 7b
+ new InfoHdrSmall( 45, 9, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 ), // 902 7c
+ new InfoHdrSmall( 51, 7, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, YES ), // 432 7d
+ new InfoHdrSmall( 51, 7, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, YES ), // 361 7e
+ new InfoHdrSmall( 51, 7, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0 ), // 703 7f
+ };
+ }
+}
--- /dev/null
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace R2RDump.x86
+{
+ public enum Registers
+ {
+ EAX = 0x00,
+ ECX = 0x01,
+ EDX = 0x02,
+ EBX = 0x03,
+ ESP = 0x04,
+ EBP = 0x05,
+ ESI = 0x06,
+ EDI = 0x07,
+ };
+
+ public enum CalleeSavedRegisters
+ {
+ EDI = 0x00,
+ ESI = 0x01,
+ EBX = 0x02,
+ EBP = 0x03,
+ };
+}
<Section>6891812037717</Section>
</ImportSectionEntry>
</Entries>
- <AuxiliaryData>
- <Version>2</Version>
- <CodeLength>0</CodeLength>
- <ReturnKind>RT_Object</ReturnKind>
- <ValidRangeStart>0</ValidRangeStart>
- <ValidRangeEnd>0</ValidRangeEnd>
- <SecurityObjectStackSlot>-1</SecurityObjectStackSlot>
- <GSCookieStackSlot>-1</GSCookieStackSlot>
- <PSPSymStackSlot>-1</PSPSymStackSlot>
- <GenericsInstContextStackSlot>-1</GenericsInstContextStackSlot>
- <StackBaseRegister>4294967295</StackBaseRegister>
- <SizeOfEditAndContinuePreservedArea>4294967295</SizeOfEditAndContinuePreservedArea>
- <ReversePInvokeFrameStackSlot>-1</ReversePInvokeFrameStackSlot>
- <SizeOfStackOutgoingAndScratchArea>0</SizeOfStackOutgoingAndScratchArea>
- <NumSafePoints>0</NumSafePoints>
- <NumInterruptibleRanges>0</NumInterruptibleRanges>
- <SafePointOffsets />
- <InterruptibleRanges />
- <SlotTable>
- <NumRegisters>0</NumRegisters>
- <NumStackSlots>0</NumStackSlots>
- <NumUntracked>0</NumUntracked>
- <NumSlots>0</NumSlots>
- <GcSlots />
- </SlotTable>
- <Size>22</Size>
- <Offset>3360</Offset>
- </AuxiliaryData>
</R2RImportSection>
<ImportSectionEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0">
<StartOffset>0</StartOffset>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3332</Offset>
<CodeLength>6</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3332</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>153</Size>
+ <Offset>3348</Offset>
<CodeLength>163</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>153</Size>
- <Offset>3348</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3332</Offset>
<CodeLength>6</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3332</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3448</Offset>
<CodeLength>8</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3448</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3460</Offset>
<CodeLength>9</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3460</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>32</Size>
+ <Offset>3488</Offset>
<CodeLength>31</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>32</Size>
- <Offset>3488</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3500</Offset>
<CodeLength>6</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3500</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3472</Offset>
<CodeLength>9</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Object</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3472</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
<Section>6891812037705</Section>
</ImportSectionEntry>
</Entries>
- <AuxiliaryData>
- <Version>2</Version>
- <CodeLength>0</CodeLength>
- <ReturnKind>RT_Object</ReturnKind>
- <ValidRangeStart>0</ValidRangeStart>
- <ValidRangeEnd>0</ValidRangeEnd>
- <SecurityObjectStackSlot>-1</SecurityObjectStackSlot>
- <GSCookieStackSlot>-1</GSCookieStackSlot>
- <PSPSymStackSlot>-1</PSPSymStackSlot>
- <GenericsInstContextStackSlot>-1</GenericsInstContextStackSlot>
- <StackBaseRegister>4294967295</StackBaseRegister>
- <SizeOfEditAndContinuePreservedArea>4294967295</SizeOfEditAndContinuePreservedArea>
- <ReversePInvokeFrameStackSlot>-1</ReversePInvokeFrameStackSlot>
- <SizeOfStackOutgoingAndScratchArea>0</SizeOfStackOutgoingAndScratchArea>
- <NumSafePoints>0</NumSafePoints>
- <NumInterruptibleRanges>0</NumInterruptibleRanges>
- <SafePointOffsets />
- <InterruptibleRanges />
- <SlotTable>
- <NumRegisters>0</NumRegisters>
- <NumStackSlots>0</NumStackSlots>
- <NumUntracked>0</NumUntracked>
- <NumSlots>0</NumSlots>
- <GcSlots />
- </SlotTable>
- <Size>22</Size>
- <Offset>3080</Offset>
- </AuxiliaryData>
</R2RImportSection>
<ImportSectionEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0">
<StartOffset>0</StartOffset>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>32</Size>
+ <Offset>3064</Offset>
<CodeLength>27</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>32</Size>
- <Offset>3064</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3076</Offset>
<CodeLength>6</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3076</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3028</Offset>
<CodeLength>6</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3028</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3028</Offset>
<CodeLength>6</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3028</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3028</Offset>
<CodeLength>6</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3028</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
<Section>6891812037717</Section>
</ImportSectionEntry>
</Entries>
- <AuxiliaryData>
- <Version>2</Version>
- <CodeLength>0</CodeLength>
- <ReturnKind>RT_Object</ReturnKind>
- <ValidRangeStart>0</ValidRangeStart>
- <ValidRangeEnd>0</ValidRangeEnd>
- <SecurityObjectStackSlot>-1</SecurityObjectStackSlot>
- <GSCookieStackSlot>-1</GSCookieStackSlot>
- <PSPSymStackSlot>-1</PSPSymStackSlot>
- <GenericsInstContextStackSlot>-1</GenericsInstContextStackSlot>
- <StackBaseRegister>4294967295</StackBaseRegister>
- <SizeOfEditAndContinuePreservedArea>4294967295</SizeOfEditAndContinuePreservedArea>
- <ReversePInvokeFrameStackSlot>-1</ReversePInvokeFrameStackSlot>
- <SizeOfStackOutgoingAndScratchArea>0</SizeOfStackOutgoingAndScratchArea>
- <NumSafePoints>0</NumSafePoints>
- <NumInterruptibleRanges>0</NumInterruptibleRanges>
- <SafePointOffsets />
- <InterruptibleRanges />
- <SlotTable>
- <NumRegisters>0</NumRegisters>
- <NumStackSlots>0</NumStackSlots>
- <NumUntracked>0</NumUntracked>
- <NumSlots>0</NumSlots>
- <GcSlots />
- </SlotTable>
- <Size>22</Size>
- <Offset>3644</Offset>
- </AuxiliaryData>
</R2RImportSection>
<ImportSectionEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0">
<StartOffset>0</StartOffset>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>73</Size>
+ <Offset>3512</Offset>
<CodeLength>12</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
</GcSlot>
</GcSlots>
</SlotTable>
- <Size>73</Size>
- <Offset>3512</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>587</Size>
+ <Offset>3540</Offset>
<CodeLength>317</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
</GcSlot>
</GcSlots>
</SlotTable>
- <Size>587</Size>
- <Offset>3540</Offset>
</GcInfo>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="38">
<SlotId>1</SlotId>
<IsLive>true</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is live</SlotState>
+ </GcTransition>
+ <GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="55">
+ <SlotId>0</SlotId>
+ <IsLive>true</IsLive>
+ <ChunkId>0</ChunkId>
+ <SlotState>EAX is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="55">
<SlotId>1</SlotId>
<IsLive>false</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="63">
<SlotId>1</SlotId>
<IsLive>true</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is live</SlotState>
+ </GcTransition>
+ <GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="69">
+ <SlotId>0</SlotId>
+ <IsLive>false</IsLive>
+ <ChunkId>0</ChunkId>
+ <SlotState>EAX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="69">
<SlotId>1</SlotId>
<IsLive>false</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="72">
<SlotId>1</SlotId>
<IsLive>true</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is live</SlotState>
+ </GcTransition>
+ <GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="89">
+ <SlotId>0</SlotId>
+ <IsLive>true</IsLive>
+ <ChunkId>0</ChunkId>
+ <SlotState>EAX is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="89">
<SlotId>1</SlotId>
<IsLive>false</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="97">
<SlotId>1</SlotId>
<IsLive>true</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is live</SlotState>
+ </GcTransition>
+ <GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="103">
+ <SlotId>1</SlotId>
+ <IsLive>false</IsLive>
+ <ChunkId>1</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="103">
<SlotId>0</SlotId>
<IsLive>false</IsLive>
<ChunkId>1</ChunkId>
+ <SlotState>EAX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="106">
<SlotId>1</SlotId>
<IsLive>true</IsLive>
<ChunkId>1</ChunkId>
+ <SlotState>ECX is live</SlotState>
+ </GcTransition>
+ <GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="123">
+ <SlotId>0</SlotId>
+ <IsLive>true</IsLive>
+ <ChunkId>1</ChunkId>
+ <SlotState>EAX is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="123">
<SlotId>1</SlotId>
<IsLive>false</IsLive>
<ChunkId>1</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="131">
<SlotId>1</SlotId>
<IsLive>true</IsLive>
<ChunkId>1</ChunkId>
+ <SlotState>ECX is live</SlotState>
+ </GcTransition>
+ <GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="137">
+ <SlotId>0</SlotId>
+ <IsLive>false</IsLive>
+ <ChunkId>1</ChunkId>
+ <SlotState>EAX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="137">
<SlotId>1</SlotId>
<IsLive>false</IsLive>
<ChunkId>1</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="140">
<SlotId>1</SlotId>
<IsLive>true</IsLive>
<ChunkId>1</ChunkId>
+ <SlotState>ECX is live</SlotState>
+ </GcTransition>
+ <GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="157">
+ <SlotId>0</SlotId>
+ <IsLive>true</IsLive>
+ <ChunkId>1</ChunkId>
+ <SlotState>EAX is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="157">
<SlotId>1</SlotId>
<IsLive>false</IsLive>
<ChunkId>1</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="165">
<SlotId>1</SlotId>
<IsLive>true</IsLive>
<ChunkId>2</ChunkId>
+ <SlotState>ECX is live</SlotState>
+ </GcTransition>
+ <GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="171">
+ <SlotId>0</SlotId>
+ <IsLive>false</IsLive>
+ <ChunkId>2</ChunkId>
+ <SlotState>EAX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="171">
<SlotId>1</SlotId>
<IsLive>false</IsLive>
<ChunkId>2</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="174">
<SlotId>1</SlotId>
<IsLive>true</IsLive>
<ChunkId>2</ChunkId>
+ <SlotState>ECX is live</SlotState>
+ </GcTransition>
+ <GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="191">
+ <SlotId>0</SlotId>
+ <IsLive>true</IsLive>
+ <ChunkId>2</ChunkId>
+ <SlotState>EAX is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="191">
<SlotId>1</SlotId>
<IsLive>false</IsLive>
<ChunkId>2</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="199">
<SlotId>1</SlotId>
<IsLive>true</IsLive>
<ChunkId>2</ChunkId>
+ <SlotState>ECX is live</SlotState>
+ </GcTransition>
+ <GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="205">
+ <SlotId>1</SlotId>
+ <IsLive>false</IsLive>
+ <ChunkId>2</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="205">
<SlotId>0</SlotId>
<IsLive>false</IsLive>
<ChunkId>2</ChunkId>
+ <SlotState>EAX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="208">
<SlotId>1</SlotId>
<IsLive>true</IsLive>
<ChunkId>2</ChunkId>
+ <SlotState>ECX is live</SlotState>
+ </GcTransition>
+ <GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="225">
+ <SlotId>1</SlotId>
+ <IsLive>false</IsLive>
+ <ChunkId>2</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="225">
<SlotId>0</SlotId>
<IsLive>true</IsLive>
<ChunkId>2</ChunkId>
+ <SlotState>EAX is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="233">
<SlotId>1</SlotId>
<IsLive>true</IsLive>
<ChunkId>3</ChunkId>
+ <SlotState>ECX is live</SlotState>
+ </GcTransition>
+ <GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="239">
+ <SlotId>0</SlotId>
+ <IsLive>false</IsLive>
+ <ChunkId>3</ChunkId>
+ <SlotState>EAX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="239">
<SlotId>1</SlotId>
<IsLive>false</IsLive>
<ChunkId>3</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="242">
<SlotId>1</SlotId>
<IsLive>true</IsLive>
<ChunkId>3</ChunkId>
+ <SlotState>ECX is live</SlotState>
+ </GcTransition>
+ <GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="259">
+ <SlotId>0</SlotId>
+ <IsLive>true</IsLive>
+ <ChunkId>3</ChunkId>
+ <SlotState>EAX is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="259">
<SlotId>1</SlotId>
<IsLive>false</IsLive>
<ChunkId>3</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="267">
<SlotId>1</SlotId>
<IsLive>true</IsLive>
<ChunkId>3</ChunkId>
+ <SlotState>ECX is live</SlotState>
+ </GcTransition>
+ <GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="273">
+ <SlotId>0</SlotId>
+ <IsLive>false</IsLive>
+ <ChunkId>3</ChunkId>
+ <SlotState>EAX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="273">
<SlotId>1</SlotId>
<IsLive>false</IsLive>
<ChunkId>3</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="276">
<SlotId>1</SlotId>
<IsLive>true</IsLive>
<ChunkId>3</ChunkId>
+ <SlotState>ECX is live</SlotState>
+ </GcTransition>
+ <GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="293">
+ <SlotId>0</SlotId>
+ <IsLive>true</IsLive>
+ <ChunkId>4</ChunkId>
+ <SlotState>EAX is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="293">
<SlotId>1</SlotId>
<IsLive>false</IsLive>
<ChunkId>4</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="301">
<SlotId>1</SlotId>
<IsLive>true</IsLive>
<ChunkId>4</ChunkId>
+ <SlotState>ECX is live</SlotState>
+ </GcTransition>
+ <GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="307">
+ <SlotId>0</SlotId>
+ <IsLive>false</IsLive>
+ <ChunkId>4</ChunkId>
+ <SlotState>EAX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="307">
<SlotId>1</SlotId>
<IsLive>false</IsLive>
<ChunkId>4</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>106</Size>
+ <Offset>3628</Offset>
<CodeLength>32</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
</GcSlot>
</GcSlots>
</SlotTable>
- <Size>106</Size>
- <Offset>3628</Offset>
</GcInfo>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="18">
<SlotId>0</SlotId>
<IsLive>true</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="24">
<SlotId>0</SlotId>
<IsLive>false</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
</GcInfo>
<RuntimeFunctions>
<Section>6891812037799</Section>
</ImportSectionEntry>
</Entries>
- <AuxiliaryData>
- <Version>2</Version>
- <CodeLength>0</CodeLength>
- <ReturnKind>RT_Object</ReturnKind>
- <ValidRangeStart>0</ValidRangeStart>
- <ValidRangeEnd>0</ValidRangeEnd>
- <SecurityObjectStackSlot>-1</SecurityObjectStackSlot>
- <GSCookieStackSlot>-1</GSCookieStackSlot>
- <PSPSymStackSlot>-1</PSPSymStackSlot>
- <GenericsInstContextStackSlot>-1</GenericsInstContextStackSlot>
- <StackBaseRegister>4294967295</StackBaseRegister>
- <SizeOfEditAndContinuePreservedArea>4294967295</SizeOfEditAndContinuePreservedArea>
- <ReversePInvokeFrameStackSlot>-1</ReversePInvokeFrameStackSlot>
- <SizeOfStackOutgoingAndScratchArea>0</SizeOfStackOutgoingAndScratchArea>
- <NumSafePoints>0</NumSafePoints>
- <NumInterruptibleRanges>0</NumInterruptibleRanges>
- <SafePointOffsets />
- <InterruptibleRanges />
- <SlotTable>
- <NumRegisters>0</NumRegisters>
- <NumStackSlots>0</NumStackSlots>
- <NumUntracked>0</NumUntracked>
- <NumSlots>0</NumSlots>
- <GcSlots />
- </SlotTable>
- <Size>22</Size>
- <Offset>4164</Offset>
- </AuxiliaryData>
</R2RImportSection>
<ImportSectionEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0">
<StartOffset>0</StartOffset>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>99</Size>
+ <Offset>3964</Offset>
<CodeLength>24</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
</GcSlot>
</GcSlots>
</SlotTable>
- <Size>99</Size>
- <Offset>3964</Offset>
</GcInfo>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="16">
<SlotId>0</SlotId>
<IsLive>true</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>EAX is live</SlotState>
</GcTransition>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>116</Size>
+ <Offset>3992</Offset>
<CodeLength>46</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
</GcSlot>
</GcSlots>
</SlotTable>
- <Size>116</Size>
- <Offset>3992</Offset>
</GcInfo>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="21">
<SlotId>1</SlotId>
<IsLive>true</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="27">
<SlotId>1</SlotId>
<IsLive>false</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="33">
<SlotId>0</SlotId>
<IsLive>true</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>EAX is live</SlotState>
</GcTransition>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>264</Size>
+ <Offset>4052</Offset>
<CodeLength>162</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
</GcSlot>
</GcSlots>
</SlotTable>
- <Size>264</Size>
- <Offset>4052</Offset>
</GcInfo>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="46">
<SlotId>2</SlotId>
<IsLive>true</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is live</SlotState>
+ </GcTransition>
+ <GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="54">
+ <SlotId>0</SlotId>
+ <IsLive>true</IsLive>
+ <ChunkId>0</ChunkId>
+ <SlotState>ECX is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="54">
<SlotId>2</SlotId>
<IsLive>false</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="65">
<SlotId>0</SlotId>
<IsLive>false</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="79">
<SlotId>3</SlotId>
<IsLive>true</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>E8 is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="85">
<SlotId>3</SlotId>
<IsLive>false</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>E8 is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="102">
<SlotId>1</SlotId>
<IsLive>true</IsLive>
<ChunkId>1</ChunkId>
+ <SlotState>EAX is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="110">
<SlotId>2</SlotId>
<IsLive>true</IsLive>
<ChunkId>1</ChunkId>
+ <SlotState>ECX is live</SlotState>
+ </GcTransition>
+ <GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="121">
+ <SlotId>1</SlotId>
+ <IsLive>false</IsLive>
+ <ChunkId>1</ChunkId>
+ <SlotState>EAX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="121">
<SlotId>2</SlotId>
<IsLive>false</IsLive>
<ChunkId>1</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="125">
<SlotId>2</SlotId>
<IsLive>true</IsLive>
<ChunkId>1</ChunkId>
+ <SlotState>ECX is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="136">
<SlotId>2</SlotId>
<IsLive>false</IsLive>
<ChunkId>1</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="143">
<SlotId>3</SlotId>
<IsLive>true</IsLive>
<ChunkId>1</ChunkId>
+ <SlotState>E8 is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="149">
<SlotId>3</SlotId>
<IsLive>false</IsLive>
<ChunkId>1</ChunkId>
+ <SlotState>E8 is dead</SlotState>
</GcTransition>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>106</Size>
+ <Offset>4100</Offset>
<CodeLength>32</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
</GcSlot>
</GcSlots>
</SlotTable>
- <Size>106</Size>
- <Offset>4100</Offset>
</GcInfo>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="18">
<SlotId>0</SlotId>
<IsLive>true</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="24">
<SlotId>0</SlotId>
<IsLive>false</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>73</Size>
+ <Offset>4128</Offset>
<CodeLength>45</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
</GcSlot>
</GcSlots>
</SlotTable>
- <Size>73</Size>
- <Offset>4128</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>122</Size>
+ <Offset>4020</Offset>
<CodeLength>50</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Object</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
</GcSlot>
</GcSlots>
</SlotTable>
- <Size>122</Size>
- <Offset>4020</Offset>
</GcInfo>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="33">
<SlotId>0</SlotId>
<IsLive>true</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>EAX is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="40">
<SlotId>0</SlotId>
<IsLive>false</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>EAX is dead</SlotState>
</GcTransition>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>73</Size>
+ <Offset>4152</Offset>
<CodeLength>47</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
</GcSlot>
</GcSlots>
</SlotTable>
- <Size>73</Size>
- <Offset>4152</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
<Section>6891812037705</Section>
</ImportSectionEntry>
</Entries>
- <AuxiliaryData>
- <Version>2</Version>
- <CodeLength>0</CodeLength>
- <ReturnKind>RT_Object</ReturnKind>
- <ValidRangeStart>0</ValidRangeStart>
- <ValidRangeEnd>0</ValidRangeEnd>
- <SecurityObjectStackSlot>-1</SecurityObjectStackSlot>
- <GSCookieStackSlot>-1</GSCookieStackSlot>
- <PSPSymStackSlot>-1</PSPSymStackSlot>
- <GenericsInstContextStackSlot>-1</GenericsInstContextStackSlot>
- <StackBaseRegister>4294967295</StackBaseRegister>
- <SizeOfEditAndContinuePreservedArea>4294967295</SizeOfEditAndContinuePreservedArea>
- <ReversePInvokeFrameStackSlot>-1</ReversePInvokeFrameStackSlot>
- <SizeOfStackOutgoingAndScratchArea>0</SizeOfStackOutgoingAndScratchArea>
- <NumSafePoints>0</NumSafePoints>
- <NumInterruptibleRanges>0</NumInterruptibleRanges>
- <SafePointOffsets />
- <InterruptibleRanges />
- <SlotTable>
- <NumRegisters>0</NumRegisters>
- <NumStackSlots>0</NumStackSlots>
- <NumUntracked>0</NumUntracked>
- <NumSlots>0</NumSlots>
- <GcSlots />
- </SlotTable>
- <Size>22</Size>
- <Offset>3140</Offset>
- </AuxiliaryData>
</R2RImportSection>
<ImportSectionEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0">
<StartOffset>0</StartOffset>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>106</Size>
+ <Offset>3096</Offset>
<CodeLength>39</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
</GcSlot>
</GcSlots>
</SlotTable>
- <Size>106</Size>
- <Offset>3096</Offset>
</GcInfo>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="25">
<SlotId>0</SlotId>
<IsLive>true</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="31">
<SlotId>0</SlotId>
<IsLive>false</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>106</Size>
+ <Offset>3124</Offset>
<CodeLength>32</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
</GcSlot>
</GcSlots>
</SlotTable>
- <Size>106</Size>
- <Offset>3124</Offset>
</GcInfo>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="18">
<SlotId>0</SlotId>
<IsLive>true</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="24">
<SlotId>0</SlotId>
<IsLive>false</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
</GcInfo>
<RuntimeFunctions>
<Section>6891812037761</Section>
</ImportSectionEntry>
</Entries>
- <AuxiliaryData>
- <Version>2</Version>
- <CodeLength>0</CodeLength>
- <ReturnKind>RT_Object</ReturnKind>
- <ValidRangeStart>0</ValidRangeStart>
- <ValidRangeEnd>0</ValidRangeEnd>
- <SecurityObjectStackSlot>-1</SecurityObjectStackSlot>
- <GSCookieStackSlot>-1</GSCookieStackSlot>
- <PSPSymStackSlot>-1</PSPSymStackSlot>
- <GenericsInstContextStackSlot>-1</GenericsInstContextStackSlot>
- <StackBaseRegister>4294967295</StackBaseRegister>
- <SizeOfEditAndContinuePreservedArea>4294967295</SizeOfEditAndContinuePreservedArea>
- <ReversePInvokeFrameStackSlot>-1</ReversePInvokeFrameStackSlot>
- <SizeOfStackOutgoingAndScratchArea>0</SizeOfStackOutgoingAndScratchArea>
- <NumSafePoints>0</NumSafePoints>
- <NumInterruptibleRanges>0</NumInterruptibleRanges>
- <SafePointOffsets />
- <InterruptibleRanges />
- <SlotTable>
- <NumRegisters>0</NumRegisters>
- <NumStackSlots>0</NumStackSlots>
- <NumUntracked>0</NumUntracked>
- <NumSlots>0</NumSlots>
- <GcSlots />
- </SlotTable>
- <Size>22</Size>
- <Offset>3316</Offset>
- </AuxiliaryData>
</R2RImportSection>
<ImportSectionEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0">
<StartOffset>0</StartOffset>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>94</Size>
+ <Offset>3240</Offset>
<CodeLength>61</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>94</Size>
- <Offset>3240</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>73</Size>
+ <Offset>3276</Offset>
<CodeLength>29</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
</GcSlot>
</GcSlots>
</SlotTable>
- <Size>73</Size>
- <Offset>3276</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>106</Size>
+ <Offset>3300</Offset>
<CodeLength>32</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
</GcSlot>
</GcSlots>
</SlotTable>
- <Size>106</Size>
- <Offset>3300</Offset>
</GcInfo>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="18">
<SlotId>0</SlotId>
<IsLive>true</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is live</SlotState>
</GcTransition>
<GcTransition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="24">
<SlotId>0</SlotId>
<IsLive>false</IsLive>
<ChunkId>0</ChunkId>
+ <SlotState>ECX is dead</SlotState>
</GcTransition>
</GcInfo>
<RuntimeFunctions>
<Section>6891812037717</Section>
</ImportSectionEntry>
</Entries>
- <AuxiliaryData>
- <Version>2</Version>
- <CodeLength>0</CodeLength>
- <ReturnKind>RT_Object</ReturnKind>
- <ValidRangeStart>0</ValidRangeStart>
- <ValidRangeEnd>0</ValidRangeEnd>
- <SecurityObjectStackSlot>-1</SecurityObjectStackSlot>
- <GSCookieStackSlot>-1</GSCookieStackSlot>
- <PSPSymStackSlot>-1</PSPSymStackSlot>
- <GenericsInstContextStackSlot>-1</GenericsInstContextStackSlot>
- <StackBaseRegister>4294967295</StackBaseRegister>
- <SizeOfEditAndContinuePreservedArea>4294967295</SizeOfEditAndContinuePreservedArea>
- <ReversePInvokeFrameStackSlot>-1</ReversePInvokeFrameStackSlot>
- <SizeOfStackOutgoingAndScratchArea>0</SizeOfStackOutgoingAndScratchArea>
- <NumSafePoints>0</NumSafePoints>
- <NumInterruptibleRanges>0</NumInterruptibleRanges>
- <SafePointOffsets />
- <InterruptibleRanges />
- <SlotTable>
- <NumRegisters>0</NumRegisters>
- <NumStackSlots>0</NumStackSlots>
- <NumUntracked>0</NumUntracked>
- <NumSlots>0</NumSlots>
- <GcSlots />
- </SlotTable>
- <Size>22</Size>
- <Offset>3360</Offset>
- </AuxiliaryData>
</R2RImportSection>
<ImportSectionEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0">
<StartOffset>0</StartOffset>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3332</Offset>
<CodeLength>6</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3332</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>153</Size>
+ <Offset>3348</Offset>
<CodeLength>163</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>153</Size>
- <Offset>3348</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3332</Offset>
<CodeLength>6</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3332</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3448</Offset>
<CodeLength>8</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3448</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3460</Offset>
<CodeLength>9</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3460</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>32</Size>
+ <Offset>3488</Offset>
<CodeLength>31</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>32</Size>
- <Offset>3488</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3500</Offset>
<CodeLength>6</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3500</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3472</Offset>
<CodeLength>9</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Object</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3472</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
<Section>6891812037705</Section>
</ImportSectionEntry>
</Entries>
- <AuxiliaryData>
- <Version>2</Version>
- <CodeLength>0</CodeLength>
- <ReturnKind>RT_Object</ReturnKind>
- <ValidRangeStart>0</ValidRangeStart>
- <ValidRangeEnd>0</ValidRangeEnd>
- <SecurityObjectStackSlot>-1</SecurityObjectStackSlot>
- <GSCookieStackSlot>-1</GSCookieStackSlot>
- <PSPSymStackSlot>-1</PSPSymStackSlot>
- <GenericsInstContextStackSlot>-1</GenericsInstContextStackSlot>
- <StackBaseRegister>4294967295</StackBaseRegister>
- <SizeOfEditAndContinuePreservedArea>4294967295</SizeOfEditAndContinuePreservedArea>
- <ReversePInvokeFrameStackSlot>-1</ReversePInvokeFrameStackSlot>
- <SizeOfStackOutgoingAndScratchArea>0</SizeOfStackOutgoingAndScratchArea>
- <NumSafePoints>0</NumSafePoints>
- <NumInterruptibleRanges>0</NumInterruptibleRanges>
- <SafePointOffsets />
- <InterruptibleRanges />
- <SlotTable>
- <NumRegisters>0</NumRegisters>
- <NumStackSlots>0</NumStackSlots>
- <NumUntracked>0</NumUntracked>
- <NumSlots>0</NumSlots>
- <GcSlots />
- </SlotTable>
- <Size>22</Size>
- <Offset>3080</Offset>
- </AuxiliaryData>
</R2RImportSection>
<ImportSectionEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0">
<StartOffset>0</StartOffset>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>32</Size>
+ <Offset>3064</Offset>
<CodeLength>27</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>32</Size>
- <Offset>3064</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3076</Offset>
<CodeLength>6</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3076</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3028</Offset>
<CodeLength>6</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3028</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3028</Offset>
<CodeLength>6</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3028</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
</R2RMethod>
<GcInfo>
<GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Version>2</Version>
+ <Size>22</Size>
+ <Offset>3028</Offset>
<CodeLength>6</CodeLength>
+ <Version>2</Version>
<ReturnKind>RT_Scalar</ReturnKind>
<ValidRangeStart>0</ValidRangeStart>
<ValidRangeEnd>0</ValidRangeEnd>
<NumSlots>0</NumSlots>
<GcSlots />
</SlotTable>
- <Size>22</Size>
- <Offset>3028</Offset>
</GcInfo>
</GcInfo>
<RuntimeFunctions>
<Section>268510280</Section>
</ImportSectionEntry>
</Entries>
- <AuxiliaryData>
- <Version>2</Version>
- <CodeLength>0</CodeLength>
- <ReturnKind>RT_Object</ReturnKind>
- <ValidRangeStart>0</ValidRangeStart>
- <ValidRangeEnd>0</ValidRangeEnd>
- <SecurityObjectStackSlot>-1</SecurityObjectStackSlot>
- <GSCookieStackSlot>-1</GSCookieStackSlot>
- <PSPSymStackSlot>-1</PSPSymStackSlot>
- <GenericsInstContextStackSlot>-1</GenericsInstContextStackSlot>
- <StackBaseRegister>4294967295</StackBaseRegister>
- <SizeOfEditAndContinuePreservedArea>4294967295</SizeOfEditAndContinuePreservedArea>
- <ReversePInvokeFrameStackSlot>-1</ReversePInvokeFrameStackSlot>
- <SizeOfStackOutgoingAndScratchArea>0</SizeOfStackOutgoingAndScratchArea>
- <NumSafePoints>0</NumSafePoints>
- <NumInterruptibleRanges>0</NumInterruptibleRanges>
- <SafePointOffsets />
- <InterruptibleRanges />
- <SlotTable>
- <NumRegisters>0</NumRegisters>
- <NumStackSlots>0</NumStackSlots>
- <NumUntracked>0</NumUntracked>
- <NumSlots>0</NumSlots>
- <GcSlots />
- </SlotTable>
- <Size>22</Size>
- <Offset>3244</Offset>
- </AuxiliaryData>
</R2RImportSection>
<ImportSectionEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0">
<StartOffset>0</StartOffset>
<Rid>1</Rid>
<EntryPointRuntimeFunctionId>0</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>3252</Offset>
+ <CodeLength>6</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="0">
<MethodRid>1</MethodRid>
<Rid>2</Rid>
<EntryPointRuntimeFunctionId>1</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>6</Size>
+ <Offset>3256</Offset>
+ <CodeLength>127</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>2</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>true</EbpSaved>
+ <EbpFrame>true</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="1">
<MethodRid>2</MethodRid>
<Rid>3</Rid>
<EntryPointRuntimeFunctionId>2</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>3252</Offset>
+ <CodeLength>6</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="2">
<MethodRid>3</MethodRid>
<Rid>1</Rid>
<EntryPointRuntimeFunctionId>0</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>3360</Offset>
+ <CodeLength>8</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="0">
<MethodRid>1</MethodRid>
<Rid>2</Rid>
<EntryPointRuntimeFunctionId>1</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>3364</Offset>
+ <CodeLength>9</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="1">
<MethodRid>2</MethodRid>
</FixupCell>
</Fixups>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>3374</Offset>
+ <CodeLength>19</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="3">
<MethodRid>4</MethodRid>
<Rid>5</Rid>
<EntryPointRuntimeFunctionId>4</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>3378</Offset>
+ <CodeLength>6</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="4">
<MethodRid>5</MethodRid>
<Rid>3</Rid>
<EntryPointRuntimeFunctionId>2</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>7</Size>
+ <Offset>3368</Offset>
+ <CodeLength>10</CodeLength>
+ <Header>
+ <PrologSize>2</PrologSize>
+ <EpilogSize>31</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Object</ReturnKind>
+ <ArgCount>1</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="2">
<MethodRid>3</MethodRid>
<Section>268510268</Section>
</ImportSectionEntry>
</Entries>
- <AuxiliaryData>
- <Version>2</Version>
- <CodeLength>0</CodeLength>
- <ReturnKind>RT_Object</ReturnKind>
- <ValidRangeStart>0</ValidRangeStart>
- <ValidRangeEnd>0</ValidRangeEnd>
- <SecurityObjectStackSlot>-1</SecurityObjectStackSlot>
- <GSCookieStackSlot>-1</GSCookieStackSlot>
- <PSPSymStackSlot>-1</PSPSymStackSlot>
- <GenericsInstContextStackSlot>-1</GenericsInstContextStackSlot>
- <StackBaseRegister>4294967295</StackBaseRegister>
- <SizeOfEditAndContinuePreservedArea>4294967295</SizeOfEditAndContinuePreservedArea>
- <ReversePInvokeFrameStackSlot>-1</ReversePInvokeFrameStackSlot>
- <SizeOfStackOutgoingAndScratchArea>0</SizeOfStackOutgoingAndScratchArea>
- <NumSafePoints>0</NumSafePoints>
- <NumInterruptibleRanges>0</NumInterruptibleRanges>
- <SafePointOffsets />
- <InterruptibleRanges />
- <SlotTable>
- <NumRegisters>0</NumRegisters>
- <NumStackSlots>0</NumStackSlots>
- <NumUntracked>0</NumUntracked>
- <NumSlots>0</NumSlots>
- <GcSlots />
- </SlotTable>
- <Size>22</Size>
- <Offset>3004</Offset>
- </AuxiliaryData>
</R2RImportSection>
<ImportSectionEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0">
<StartOffset>0</StartOffset>
</FixupCell>
</Fixups>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>3012</Offset>
+ <CodeLength>20</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="0">
<MethodRid>1</MethodRid>
<Rid>2</Rid>
<EntryPointRuntimeFunctionId>1</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>3016</Offset>
+ <CodeLength>6</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="1">
<MethodRid>2</MethodRid>
<Rid>1</Rid>
<EntryPointRuntimeFunctionId>0</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>2972</Offset>
+ <CodeLength>6</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="0">
<MethodRid>1</MethodRid>
<Rid>2</Rid>
<EntryPointRuntimeFunctionId>1</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>2972</Offset>
+ <CodeLength>6</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="1">
<MethodRid>2</MethodRid>
<Rid>3</Rid>
<EntryPointRuntimeFunctionId>2</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>2972</Offset>
+ <CodeLength>6</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="2">
<MethodRid>3</MethodRid>
<Section>0</Section>
</ImportSectionEntry>
</Entries>
- <AuxiliaryData>
- <Version>2</Version>
- <CodeLength>0</CodeLength>
- <ReturnKind>RT_Object</ReturnKind>
- <ValidRangeStart>0</ValidRangeStart>
- <ValidRangeEnd>0</ValidRangeEnd>
- <SecurityObjectStackSlot>-1</SecurityObjectStackSlot>
- <GSCookieStackSlot>-1</GSCookieStackSlot>
- <PSPSymStackSlot>-1</PSPSymStackSlot>
- <GenericsInstContextStackSlot>-1</GenericsInstContextStackSlot>
- <StackBaseRegister>4294967295</StackBaseRegister>
- <SizeOfEditAndContinuePreservedArea>4294967295</SizeOfEditAndContinuePreservedArea>
- <ReversePInvokeFrameStackSlot>-1</ReversePInvokeFrameStackSlot>
- <SizeOfStackOutgoingAndScratchArea>0</SizeOfStackOutgoingAndScratchArea>
- <NumSafePoints>0</NumSafePoints>
- <NumInterruptibleRanges>0</NumInterruptibleRanges>
- <SafePointOffsets />
- <InterruptibleRanges />
- <SlotTable>
- <NumRegisters>0</NumRegisters>
- <NumStackSlots>0</NumStackSlots>
- <NumUntracked>0</NumUntracked>
- <NumSlots>0</NumSlots>
- <GcSlots />
- </SlotTable>
- <Size>22</Size>
- <Offset>3404</Offset>
- </AuxiliaryData>
</R2RImportSection>
<ImportSectionEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0">
<StartOffset>0</StartOffset>
<Rid>1</Rid>
<EntryPointRuntimeFunctionId>0</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>9</Size>
+ <Offset>3412</Offset>
+ <CodeLength>13</CodeLength>
+ <Header>
+ <PrologSize>7</PrologSize>
+ <EpilogSize>4</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>true</EbpSaved>
+ <EbpFrame>true</EbpFrame>
+ <Interruptible>true</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>1</FrameSize>
+ <UntrackedCnt>1</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots>
+ <GcSlot Index="0">
+ <Register>EBP</Register>
+ <StackOffset>-4</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ </GcSlots>
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="0">
<MethodRid>1</MethodRid>
<Rid>2</Rid>
<EntryPointRuntimeFunctionId>1</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>79</Size>
+ <Offset>3421</Offset>
+ <CodeLength>260</CodeLength>
+ <Header>
+ <PrologSize>27</PrologSize>
+ <EpilogSize>7</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>true</EdiSaved>
+ <EsiSaved>true</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>true</EbpSaved>
+ <EbpFrame>true</EbpFrame>
+ <Interruptible>true</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>9</FrameSize>
+ <UntrackedCnt>9</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>true</HasArgTabOffset>
+ <ArgTabOffset>9</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots>
+ <GcSlot Index="0">
+ <Register>EBP</Register>
+ <StackOffset>-12</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ <GcSlot Index="1">
+ <Register>EBP</Register>
+ <StackOffset>-16</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ <GcSlot Index="2">
+ <Register>EBP</Register>
+ <StackOffset>-20</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ <GcSlot Index="3">
+ <Register>EBP</Register>
+ <StackOffset>-24</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ <GcSlot Index="4">
+ <Register>EBP</Register>
+ <StackOffset>-28</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ <GcSlot Index="5">
+ <Register>EBP</Register>
+ <StackOffset>-32</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ <GcSlot Index="6">
+ <Register>EBP</Register>
+ <StackOffset>-36</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ <GcSlot Index="7">
+ <Register>EBP</Register>
+ <StackOffset>-40</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ <GcSlot Index="8">
+ <Register>EBP</Register>
+ <StackOffset>-44</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ </GcSlots>
+ </SlotTable>
+ </GcInfo>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="32">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="43">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="43">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="49">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="55">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="55">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="60">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="71">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="71">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="77">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="83">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="83">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="88">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="99">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="99">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="105">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="111">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="111">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="116">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="127">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="127">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="133">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="139">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="139">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="144">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="155">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="155">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="161">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="167">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="167">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="172">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="183">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="183">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="189">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="195">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="195">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="200">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="211">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="211">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="217">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="223">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="223">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="228">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="239">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="239">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="245">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="251">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="251">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="1">
<MethodRid>2</MethodRid>
<Rid>3</Rid>
<EntryPointRuntimeFunctionId>2</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>12</Size>
+ <Offset>3500</Offset>
+ <CodeLength>22</CodeLength>
+ <Header>
+ <PrologSize>7</PrologSize>
+ <EpilogSize>4</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>true</EbpSaved>
+ <EbpFrame>true</EbpFrame>
+ <Interruptible>true</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>1</FrameSize>
+ <UntrackedCnt>1</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots>
+ <GcSlot Index="0">
+ <Register>EBP</Register>
+ <StackOffset>-4</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ </GcSlots>
+ </SlotTable>
+ </GcInfo>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="10">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="16">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="2">
<MethodRid>3</MethodRid>
<Section>0</Section>
</ImportSectionEntry>
</Entries>
- <AuxiliaryData>
- <Version>2</Version>
- <CodeLength>0</CodeLength>
- <ReturnKind>RT_Object</ReturnKind>
- <ValidRangeStart>0</ValidRangeStart>
- <ValidRangeEnd>0</ValidRangeEnd>
- <SecurityObjectStackSlot>-1</SecurityObjectStackSlot>
- <GSCookieStackSlot>-1</GSCookieStackSlot>
- <PSPSymStackSlot>-1</PSPSymStackSlot>
- <GenericsInstContextStackSlot>-1</GenericsInstContextStackSlot>
- <StackBaseRegister>4294967295</StackBaseRegister>
- <SizeOfEditAndContinuePreservedArea>4294967295</SizeOfEditAndContinuePreservedArea>
- <ReversePInvokeFrameStackSlot>-1</ReversePInvokeFrameStackSlot>
- <SizeOfStackOutgoingAndScratchArea>0</SizeOfStackOutgoingAndScratchArea>
- <NumSafePoints>0</NumSafePoints>
- <NumInterruptibleRanges>0</NumInterruptibleRanges>
- <SafePointOffsets />
- <InterruptibleRanges />
- <SlotTable>
- <NumRegisters>0</NumRegisters>
- <NumStackSlots>0</NumStackSlots>
- <NumUntracked>0</NumUntracked>
- <NumSlots>0</NumSlots>
- <GcSlots />
- </SlotTable>
- <Size>22</Size>
- <Offset>3808</Offset>
- </AuxiliaryData>
</R2RImportSection>
<ImportSectionEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0">
<StartOffset>0</StartOffset>
<Rid>1</Rid>
<EntryPointRuntimeFunctionId>0</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>13</Size>
+ <Offset>3820</Offset>
+ <CodeLength>26</CodeLength>
+ <Header>
+ <PrologSize>12</PrologSize>
+ <EpilogSize>4</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>true</EbpSaved>
+ <EbpFrame>true</EbpFrame>
+ <Interruptible>true</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>2</FrameSize>
+ <UntrackedCnt>1</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots>
+ <GcSlot Index="0">
+ <Register>EBP</Register>
+ <StackOffset>-4</StackOffset>
+ <LowBits>1</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ </GcSlots>
+ </SlotTable>
+ </GcInfo>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="16">
+ <IsThis>false</IsThis>
+ <Iptr>true</Iptr>
+ <Register>EAX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="26">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="0">
<MethodRid>1</MethodRid>
<Rid>2</Rid>
<EntryPointRuntimeFunctionId>1</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>14</Size>
+ <Offset>3833</Offset>
+ <CodeLength>37</CodeLength>
+ <Header>
+ <PrologSize>12</PrologSize>
+ <EpilogSize>4</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>true</EbpSaved>
+ <EbpFrame>true</EbpFrame>
+ <Interruptible>true</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>2</FrameSize>
+ <UntrackedCnt>1</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots>
+ <GcSlot Index="0">
+ <Register>EBP</Register>
+ <StackOffset>-4</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ </GcSlots>
+ </SlotTable>
+ </GcInfo>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="15">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="21">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="26">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="37">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="1">
<MethodRid>2</MethodRid>
</FixupCell>
</Fixups>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>38</Size>
+ <Offset>3868</Offset>
+ <CodeLength>143</CodeLength>
+ <Header>
+ <PrologSize>27</PrologSize>
+ <EpilogSize>7</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>true</EdiSaved>
+ <EsiSaved>true</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>true</EbpSaved>
+ <EbpFrame>true</EbpFrame>
+ <Interruptible>true</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>8</FrameSize>
+ <UntrackedCnt>4</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>true</HasArgTabOffset>
+ <ArgTabOffset>4</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots>
+ <GcSlot Index="0">
+ <Register>EBP</Register>
+ <StackOffset>-12</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ <GcSlot Index="1">
+ <Register>EBP</Register>
+ <StackOffset>-16</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ <GcSlot Index="2">
+ <Register>EBP</Register>
+ <StackOffset>-28</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ <GcSlot Index="3">
+ <Register>EBP</Register>
+ <StackOffset>-36</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ </GcSlots>
+ </SlotTable>
+ </GcInfo>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="36">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="42">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="42">
+ <IsThis>false</IsThis>
+ <Iptr>true</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="53">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="66">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EDX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="72">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EDX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="89">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="95">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="106">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="106">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="109">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="118">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="125">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EDX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="131">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EDX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="3">
<MethodRid>4</MethodRid>
<Rid>5</Rid>
<EntryPointRuntimeFunctionId>4</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>12</Size>
+ <Offset>3906</Offset>
+ <CodeLength>22</CodeLength>
+ <Header>
+ <PrologSize>7</PrologSize>
+ <EpilogSize>4</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>true</EbpSaved>
+ <EbpFrame>true</EbpFrame>
+ <Interruptible>true</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>1</FrameSize>
+ <UntrackedCnt>1</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots>
+ <GcSlot Index="0">
+ <Register>EBP</Register>
+ <StackOffset>-4</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ </GcSlots>
+ </SlotTable>
+ </GcInfo>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="10">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="16">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="4">
<MethodRid>5</MethodRid>
<Rid>3</Rid>
<EntryPointRuntimeFunctionId>5</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>11</Size>
+ <Offset>3918</Offset>
+ <CodeLength>36</CodeLength>
+ <Header>
+ <PrologSize>17</PrologSize>
+ <EpilogSize>6</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>true</EbpSaved>
+ <EbpFrame>true</EbpFrame>
+ <Interruptible>true</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>1</ArgCount>
+ <FrameSize>3</FrameSize>
+ <UntrackedCnt>1</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots>
+ <GcSlot Index="0">
+ <Register>EBP</Register>
+ <StackOffset>-8</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ </GcSlots>
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="5">
<MethodRid>3</MethodRid>
<Rid>3</Rid>
<EntryPointRuntimeFunctionId>2</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>21</Size>
+ <Offset>3847</Offset>
+ <CodeLength>36</CodeLength>
+ <Header>
+ <PrologSize>17</PrologSize>
+ <EpilogSize>6</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>true</EbpSaved>
+ <EbpFrame>true</EbpFrame>
+ <Interruptible>true</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Object</ReturnKind>
+ <ArgCount>1</ArgCount>
+ <FrameSize>4</FrameSize>
+ <UntrackedCnt>3</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots>
+ <GcSlot Index="0">
+ <Register>EBP</Register>
+ <StackOffset>-4</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ <GcSlot Index="1">
+ <Register>EBP</Register>
+ <StackOffset>-8</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ <GcSlot Index="2">
+ <Register>EBP</Register>
+ <StackOffset>6332</StackOffset>
+ <LowBits>1</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ </GcSlots>
+ </SlotTable>
+ </GcInfo>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="6">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="9">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="15">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>EAX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="2">
<MethodRid>3</MethodRid>
<Rid>3</Rid>
<EntryPointRuntimeFunctionId>6</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>11</Size>
+ <Offset>3918</Offset>
+ <CodeLength>36</CodeLength>
+ <Header>
+ <PrologSize>17</PrologSize>
+ <EpilogSize>6</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>true</EbpSaved>
+ <EbpFrame>true</EbpFrame>
+ <Interruptible>true</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>1</ArgCount>
+ <FrameSize>3</FrameSize>
+ <UntrackedCnt>1</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots>
+ <GcSlot Index="0">
+ <Register>EBP</Register>
+ <StackOffset>-8</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ </GcSlots>
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="6">
<MethodRid>3</MethodRid>
<Section>0</Section>
</ImportSectionEntry>
</Entries>
- <AuxiliaryData>
- <Version>2</Version>
- <CodeLength>0</CodeLength>
- <ReturnKind>RT_Object</ReturnKind>
- <ValidRangeStart>0</ValidRangeStart>
- <ValidRangeEnd>0</ValidRangeEnd>
- <SecurityObjectStackSlot>-1</SecurityObjectStackSlot>
- <GSCookieStackSlot>-1</GSCookieStackSlot>
- <PSPSymStackSlot>-1</PSPSymStackSlot>
- <GenericsInstContextStackSlot>-1</GenericsInstContextStackSlot>
- <StackBaseRegister>4294967295</StackBaseRegister>
- <SizeOfEditAndContinuePreservedArea>4294967295</SizeOfEditAndContinuePreservedArea>
- <ReversePInvokeFrameStackSlot>-1</ReversePInvokeFrameStackSlot>
- <SizeOfStackOutgoingAndScratchArea>0</SizeOfStackOutgoingAndScratchArea>
- <NumSafePoints>0</NumSafePoints>
- <NumInterruptibleRanges>0</NumInterruptibleRanges>
- <SafePointOffsets />
- <InterruptibleRanges />
- <SlotTable>
- <NumRegisters>0</NumRegisters>
- <NumStackSlots>0</NumStackSlots>
- <NumUntracked>0</NumUntracked>
- <NumSlots>0</NumSlots>
- <GcSlots />
- </SlotTable>
- <Size>22</Size>
- <Offset>3036</Offset>
- </AuxiliaryData>
</R2RImportSection>
<ImportSectionEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0">
<StartOffset>0</StartOffset>
</FixupCell>
</Fixups>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>12</Size>
+ <Offset>3044</Offset>
+ <CodeLength>28</CodeLength>
+ <Header>
+ <PrologSize>7</PrologSize>
+ <EpilogSize>4</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>true</EbpSaved>
+ <EbpFrame>true</EbpFrame>
+ <Interruptible>true</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>1</FrameSize>
+ <UntrackedCnt>1</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots>
+ <GcSlot Index="0">
+ <Register>EBP</Register>
+ <StackOffset>-4</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ </GcSlots>
+ </SlotTable>
+ </GcInfo>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="16">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="22">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="0">
<MethodRid>1</MethodRid>
<Rid>2</Rid>
<EntryPointRuntimeFunctionId>1</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>12</Size>
+ <Offset>3056</Offset>
+ <CodeLength>22</CodeLength>
+ <Header>
+ <PrologSize>7</PrologSize>
+ <EpilogSize>4</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>true</EbpSaved>
+ <EbpFrame>true</EbpFrame>
+ <Interruptible>true</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>1</FrameSize>
+ <UntrackedCnt>1</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots>
+ <GcSlot Index="0">
+ <Register>EBP</Register>
+ <StackOffset>-4</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ </GcSlots>
+ </SlotTable>
+ </GcInfo>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="10">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="16">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="1">
<MethodRid>2</MethodRid>
<Section>0</Section>
</ImportSectionEntry>
</Entries>
- <AuxiliaryData>
- <Version>2</Version>
- <CodeLength>0</CodeLength>
- <ReturnKind>RT_Object</ReturnKind>
- <ValidRangeStart>0</ValidRangeStart>
- <ValidRangeEnd>0</ValidRangeEnd>
- <SecurityObjectStackSlot>-1</SecurityObjectStackSlot>
- <GSCookieStackSlot>-1</GSCookieStackSlot>
- <PSPSymStackSlot>-1</PSPSymStackSlot>
- <GenericsInstContextStackSlot>-1</GenericsInstContextStackSlot>
- <StackBaseRegister>4294967295</StackBaseRegister>
- <SizeOfEditAndContinuePreservedArea>4294967295</SizeOfEditAndContinuePreservedArea>
- <ReversePInvokeFrameStackSlot>-1</ReversePInvokeFrameStackSlot>
- <SizeOfStackOutgoingAndScratchArea>0</SizeOfStackOutgoingAndScratchArea>
- <NumSafePoints>0</NumSafePoints>
- <NumInterruptibleRanges>0</NumInterruptibleRanges>
- <SafePointOffsets />
- <InterruptibleRanges />
- <SlotTable>
- <NumRegisters>0</NumRegisters>
- <NumStackSlots>0</NumStackSlots>
- <NumUntracked>0</NumUntracked>
- <NumSlots>0</NumSlots>
- <GcSlots />
- </SlotTable>
- <Size>22</Size>
- <Offset>3164</Offset>
- </AuxiliaryData>
</R2RImportSection>
<ImportSectionEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0">
<StartOffset>0</StartOffset>
<Rid>1</Rid>
<EntryPointRuntimeFunctionId>0</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>9</Size>
+ <Offset>3172</Offset>
+ <CodeLength>65</CodeLength>
+ <Header>
+ <PrologSize>20</PrologSize>
+ <EpilogSize>4</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>true</EbpSaved>
+ <EbpFrame>true</EbpFrame>
+ <Interruptible>true</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>true</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>5</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="0">
<MethodRid>1</MethodRid>
<Rid>2</Rid>
<EntryPointRuntimeFunctionId>1</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>9</Size>
+ <Offset>3181</Offset>
+ <CodeLength>20</CodeLength>
+ <Header>
+ <PrologSize>7</PrologSize>
+ <EpilogSize>4</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>true</EbpSaved>
+ <EbpFrame>true</EbpFrame>
+ <Interruptible>true</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>1</FrameSize>
+ <UntrackedCnt>1</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots>
+ <GcSlot Index="0">
+ <Register>EBP</Register>
+ <StackOffset>-4</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ </GcSlots>
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="1">
<MethodRid>2</MethodRid>
<Rid>3</Rid>
<EntryPointRuntimeFunctionId>2</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>12</Size>
+ <Offset>3190</Offset>
+ <CodeLength>22</CodeLength>
+ <Header>
+ <PrologSize>7</PrologSize>
+ <EpilogSize>4</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>true</EbpSaved>
+ <EbpFrame>true</EbpFrame>
+ <Interruptible>true</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>1</FrameSize>
+ <UntrackedCnt>1</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots>
+ <GcSlot Index="0">
+ <Register>EBP</Register>
+ <StackOffset>-4</StackOffset>
+ <LowBits>0</LowBits>
+ <Flags>GC_SLOT_UNTRACKED</Flags>
+ <BeginOffset>-1</BeginOffset>
+ <EndOffset>-1</EndOffset>
+ </GcSlot>
+ </GcSlots>
+ </SlotTable>
+ </GcInfo>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="10">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>true</IsLive>
+ </GcTransitionRegister>
+ <GcTransitionRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="16">
+ <IsThis>false</IsThis>
+ <Iptr>false</Iptr>
+ <Register>ECX</Register>
+ <IsLive>false</IsLive>
+ </GcTransitionRegister>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="2">
<MethodRid>3</MethodRid>
<Section>268510280</Section>
</ImportSectionEntry>
</Entries>
- <AuxiliaryData>
- <Version>2</Version>
- <CodeLength>0</CodeLength>
- <ReturnKind>RT_Object</ReturnKind>
- <ValidRangeStart>0</ValidRangeStart>
- <ValidRangeEnd>0</ValidRangeEnd>
- <SecurityObjectStackSlot>-1</SecurityObjectStackSlot>
- <GSCookieStackSlot>-1</GSCookieStackSlot>
- <PSPSymStackSlot>-1</PSPSymStackSlot>
- <GenericsInstContextStackSlot>-1</GenericsInstContextStackSlot>
- <StackBaseRegister>4294967295</StackBaseRegister>
- <SizeOfEditAndContinuePreservedArea>4294967295</SizeOfEditAndContinuePreservedArea>
- <ReversePInvokeFrameStackSlot>-1</ReversePInvokeFrameStackSlot>
- <SizeOfStackOutgoingAndScratchArea>0</SizeOfStackOutgoingAndScratchArea>
- <NumSafePoints>0</NumSafePoints>
- <NumInterruptibleRanges>0</NumInterruptibleRanges>
- <SafePointOffsets />
- <InterruptibleRanges />
- <SlotTable>
- <NumRegisters>0</NumRegisters>
- <NumStackSlots>0</NumStackSlots>
- <NumUntracked>0</NumUntracked>
- <NumSlots>0</NumSlots>
- <GcSlots />
- </SlotTable>
- <Size>22</Size>
- <Offset>3244</Offset>
- </AuxiliaryData>
</R2RImportSection>
<ImportSectionEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0">
<StartOffset>0</StartOffset>
<Rid>1</Rid>
<EntryPointRuntimeFunctionId>0</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>3252</Offset>
+ <CodeLength>6</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="0">
<MethodRid>1</MethodRid>
<Rid>2</Rid>
<EntryPointRuntimeFunctionId>1</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>6</Size>
+ <Offset>3256</Offset>
+ <CodeLength>127</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>2</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>true</EbpSaved>
+ <EbpFrame>true</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="1">
<MethodRid>2</MethodRid>
<Rid>3</Rid>
<EntryPointRuntimeFunctionId>2</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>3252</Offset>
+ <CodeLength>6</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="2">
<MethodRid>3</MethodRid>
<Rid>1</Rid>
<EntryPointRuntimeFunctionId>0</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>3360</Offset>
+ <CodeLength>8</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="0">
<MethodRid>1</MethodRid>
<Rid>2</Rid>
<EntryPointRuntimeFunctionId>1</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>3364</Offset>
+ <CodeLength>9</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="1">
<MethodRid>2</MethodRid>
</FixupCell>
</Fixups>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>3374</Offset>
+ <CodeLength>19</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="3">
<MethodRid>4</MethodRid>
<Rid>5</Rid>
<EntryPointRuntimeFunctionId>4</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>3378</Offset>
+ <CodeLength>6</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="4">
<MethodRid>5</MethodRid>
<Rid>3</Rid>
<EntryPointRuntimeFunctionId>2</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>7</Size>
+ <Offset>3368</Offset>
+ <CodeLength>10</CodeLength>
+ <Header>
+ <PrologSize>2</PrologSize>
+ <EpilogSize>31</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Object</ReturnKind>
+ <ArgCount>1</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="2">
<MethodRid>3</MethodRid>
<Section>268510268</Section>
</ImportSectionEntry>
</Entries>
- <AuxiliaryData>
- <Version>2</Version>
- <CodeLength>0</CodeLength>
- <ReturnKind>RT_Object</ReturnKind>
- <ValidRangeStart>0</ValidRangeStart>
- <ValidRangeEnd>0</ValidRangeEnd>
- <SecurityObjectStackSlot>-1</SecurityObjectStackSlot>
- <GSCookieStackSlot>-1</GSCookieStackSlot>
- <PSPSymStackSlot>-1</PSPSymStackSlot>
- <GenericsInstContextStackSlot>-1</GenericsInstContextStackSlot>
- <StackBaseRegister>4294967295</StackBaseRegister>
- <SizeOfEditAndContinuePreservedArea>4294967295</SizeOfEditAndContinuePreservedArea>
- <ReversePInvokeFrameStackSlot>-1</ReversePInvokeFrameStackSlot>
- <SizeOfStackOutgoingAndScratchArea>0</SizeOfStackOutgoingAndScratchArea>
- <NumSafePoints>0</NumSafePoints>
- <NumInterruptibleRanges>0</NumInterruptibleRanges>
- <SafePointOffsets />
- <InterruptibleRanges />
- <SlotTable>
- <NumRegisters>0</NumRegisters>
- <NumStackSlots>0</NumStackSlots>
- <NumUntracked>0</NumUntracked>
- <NumSlots>0</NumSlots>
- <GcSlots />
- </SlotTable>
- <Size>22</Size>
- <Offset>3004</Offset>
- </AuxiliaryData>
</R2RImportSection>
<ImportSectionEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0">
<StartOffset>0</StartOffset>
</FixupCell>
</Fixups>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>3012</Offset>
+ <CodeLength>20</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="0">
<MethodRid>1</MethodRid>
<Rid>2</Rid>
<EntryPointRuntimeFunctionId>1</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>3016</Offset>
+ <CodeLength>6</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="1">
<MethodRid>2</MethodRid>
<Rid>1</Rid>
<EntryPointRuntimeFunctionId>0</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>2972</Offset>
+ <CodeLength>6</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="0">
<MethodRid>1</MethodRid>
<Rid>2</Rid>
<EntryPointRuntimeFunctionId>1</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>2972</Offset>
+ <CodeLength>6</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="1">
<MethodRid>2</MethodRid>
<Rid>3</Rid>
<EntryPointRuntimeFunctionId>2</EntryPointRuntimeFunctionId>
</R2RMethod>
+ <GcInfo>
+ <GcInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Size>3</Size>
+ <Offset>2972</Offset>
+ <CodeLength>6</CodeLength>
+ <Header>
+ <PrologSize>5</PrologSize>
+ <EpilogSize>1</EpilogSize>
+ <EpilogCount>1</EpilogCount>
+ <EpilogAtEnd>true</EpilogAtEnd>
+ <EdiSaved>false</EdiSaved>
+ <EsiSaved>false</EsiSaved>
+ <EbxSaved>false</EbxSaved>
+ <EbpSaved>false</EbpSaved>
+ <EbpFrame>false</EbpFrame>
+ <Interruptible>false</Interruptible>
+ <DoubleAlign>false</DoubleAlign>
+ <Security>false</Security>
+ <Handlers>false</Handlers>
+ <Localloc>false</Localloc>
+ <EditNcontinue>false</EditNcontinue>
+ <Varargs>false</Varargs>
+ <ProfCallbacks>false</ProfCallbacks>
+ <GenericsContext>0</GenericsContext>
+ <GenericsContextIsMethodDesc>0</GenericsContextIsMethodDesc>
+ <ReturnKind>RT_Scalar</ReturnKind>
+ <ArgCount>0</ArgCount>
+ <FrameSize>0</FrameSize>
+ <UntrackedCnt>0</UntrackedCnt>
+ <VarPtrTableSize>0</VarPtrTableSize>
+ <GsCookieOffset>0</GsCookieOffset>
+ <SyncStartOffset>0</SyncStartOffset>
+ <SyncEndOffset>0</SyncEndOffset>
+ <RevPInvokeOffset>0</RevPInvokeOffset>
+ <HasArgTabOffset>false</HasArgTabOffset>
+ <ArgTabOffset>0</ArgTabOffset>
+ </Header>
+ <SlotTable>
+ <GcSlots />
+ </SlotTable>
+ </GcInfo>
+ </GcInfo>
<RuntimeFunctions>
<RuntimeFunction Index="2">
<MethodRid>3</MethodRid>
"%ProjectDir%Tools\dotnetcli\dotnet.exe" build /p:__BuildArch=x64 /p:__BuildOS=Windows_NT /p:__BuildType=Checked %ProjectDir%src\tools\r2rdump\R2RDump.csproj
"%ProjectDir%Tools\dotnetcli\dotnet.exe" build /p:__BuildArch=x64 /p:__BuildOS=Windows_NT /p:__BuildType=Debug %ProjectDir%src\tools\r2rdump\R2RDump.csproj
"%ProjectDir%Tools\dotnetcli\dotnet.exe" build /p:__BuildArch=x86 /p:__BuildOS=Windows_NT /p:__BuildType=Release %ProjectDir%src\tools\r2rdump\R2RDump.csproj
-"%ProjectDir%Tools\dotnetcli\dotnet.exe" build /p:__BuildArch=x64 /p:__BuildOS=Windows_NT /p:__BuildType=Debug %ProjectDir%src\tools\r2rdump\R2RDump.csproj
+"%ProjectDir%Tools\dotnetcli\dotnet.exe" build /p:__BuildArch=x86 /p:__BuildOS=Windows_NT /p:__BuildType=Debug %ProjectDir%src\tools\r2rdump\R2RDump.csproj
set tests=HelloWorld GcInfoTransitions GenericFunctions MultipleRuntimeFunctions