57 {
58 int offset = reader.Offset;
59 byte b = reader.ReadByte();
60 int num;
61 if ((b & 3) == 2)
62 {
63 num = b >> 2;
64 return new MethodBodyBlock(localVariablesInitialized: false, 8, default(StandaloneSignatureHandle), reader.GetMemoryBlockAt(0, num),
ImmutableArray<ExceptionRegion>.
Empty, 1 + num);
65 }
66 if ((b & 3) != 3)
67 {
69 }
70 byte b2 = reader.ReadByte();
71 if (b2 >> 4 != 3)
72 {
74 }
75 bool localVariablesInitialized = (b & 0x10) == 16;
76 bool flag = (b & 8) == 8;
77 ushort maxStack = reader.ReadUInt16();
78 num = reader.ReadInt32();
79 int num2 = reader.ReadInt32();
80 StandaloneSignatureHandle localSignatureHandle;
81 if (num2 == 0)
82 {
83 localSignatureHandle = default(StandaloneSignatureHandle);
84 }
85 else
86 {
87 if (((ulong)num2 & 0x7F000000uL) != 285212672)
88 {
90 }
91 localSignatureHandle = StandaloneSignatureHandle.FromRowId(num2 & 0xFFFFFF);
92 }
94 reader.Offset += num;
96 if (flag)
97 {
98 reader.Align(4);
99 byte b3 = reader.ReadByte();
100 if ((b3 & 1) != 1)
101 {
103 }
104 bool flag2 = (b3 & 0x40) == 64;
105 int num3 = reader.ReadByte();
106 if (flag2)
107 {
108 num3 += reader.ReadUInt16() << 8;
110 }
111 else
112 {
113 reader.Offset += 2;
115 }
116 }
117 else
118 {
120 }
121 return new MethodBodyBlock(localVariablesInitialized, maxStack, localSignatureHandle, memoryBlockAt, exceptionRegions, reader.Offset -
offset);
122 }
static readonly ImmutableArray< T > Empty
static ImmutableArray< ExceptionRegion > ReadSmallExceptionHandlers(ref BlobReader memReader, int count)
MethodBodyBlock(bool localVariablesInitialized, ushort maxStack, StandaloneSignatureHandle localSignatureHandle, MemoryBlock il, ImmutableArray< ExceptionRegion > exceptionRegions, int size)
static ImmutableArray< ExceptionRegion > ReadFatExceptionHandlers(ref BlobReader memReader, int count)
static string InvalidSehHeader
static string InvalidMethodHeader1
static string Format(string resourceFormat, object p1)
static string InvalidLocalSignatureToken
static string InvalidMethodHeader2
unsafe MemoryBlock GetMemoryBlockAt(int offset, int length)