Skip to content

Instantly share code, notes, and snippets.

@Paxxi
Created August 7, 2017 18:19
Show Gist options
  • Save Paxxi/3b3561ae3d1020898fb904db40b51ef2 to your computer and use it in GitHub Desktop.
Save Paxxi/3b3561ae3d1020898fb904db40b51ef2 to your computer and use it in GitHub Desktop.
.method assembly hidebysig static void
Parse(valuetype [System.Runtime]System.ReadOnlySpan`1<char> address,
uint16* numbers,
int32 start,
string& scopeId) cil managed
{
// Code size 852 (0x354)
.maxstack 5
.locals init ([0] int32 number,
[1] int32 index,
[2] int32 compressorIndex,
[3] bool numberIsValid,
[4] int32 PrefixLength,
[5] bool V_5,
[6] int32 i,
[7] char V_7,
[8] bool V_8,
[9] bool V_9,
[10] valuetype [System.Runtime]System.ReadOnlySpan`1<char> V_10,
[11] bool V_11,
[12] bool V_12,
[13] bool V_13,
[14] int32 j,
[15] bool V_15,
[16] bool V_16,
[17] bool V_17,
[18] bool V_18,
[19] bool V_19,
[20] bool V_20,
[21] bool V_21,
[22] bool V_22,
[23] int32 toIndex,
[24] int32 fromIndex,
[25] int32 V_25,
[26] bool V_26)
IL_0000: nop
IL_0001: ldc.i4.0
IL_0002: stloc.0
IL_0003: ldc.i4.0
IL_0004: stloc.1
IL_0005: ldc.i4.m1
IL_0006: stloc.2
IL_0007: ldc.i4.1
IL_0008: stloc.3
IL_0009: ldc.i4.0
IL_000a: stloc.s PrefixLength
IL_000c: ldarga.s address
IL_000e: ldarg.2
IL_000f: call instance !0 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Item(int32)
IL_0014: ldc.i4.s 91
IL_0016: ceq
IL_0018: stloc.s V_5
IL_001a: ldloc.s V_5
IL_001c: brfalse.s IL_0025
IL_001e: nop
IL_001f: ldarg.2
IL_0020: ldc.i4.1
IL_0021: add
IL_0022: starg.s start
IL_0024: nop
IL_0025: ldarg.2
IL_0026: stloc.s i
IL_0028: br IL_02c5
IL_002d: nop
IL_002e: ldarga.s address
IL_0030: ldloc.s i
IL_0032: call instance !0 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Item(int32)
IL_0037: stloc.s V_7
IL_0039: ldloc.s V_7
IL_003b: ldc.i4.s 37
IL_003d: beq.s IL_005a
IL_003f: br.s IL_0041
IL_0041: ldloc.s V_7
IL_0043: ldc.i4.s 47
IL_0045: beq IL_0255
IL_004a: br.s IL_004c
IL_004c: ldloc.s V_7
IL_004e: ldc.i4.s 58
IL_0050: beq IL_0107
IL_0055: br IL_02a9
IL_005a: ldloc.3
IL_005b: stloc.s V_8
IL_005d: ldloc.s V_8
IL_005f: brfalse.s IL_0072
IL_0061: nop
IL_0062: ldarg.1
IL_0063: ldloc.1
IL_0064: dup
IL_0065: ldc.i4.1
IL_0066: add
IL_0067: stloc.1
IL_0068: conv.i
IL_0069: ldc.i4.2
IL_006a: mul
IL_006b: add
IL_006c: ldloc.0
IL_006d: conv.u2
IL_006e: stind.i2
IL_006f: ldc.i4.0
IL_0070: stloc.3
IL_0071: nop
IL_0072: ldloc.s i
IL_0074: starg.s start
IL_0076: ldloc.s i
IL_0078: ldc.i4.1
IL_0079: add
IL_007a: stloc.s i
IL_007c: br.s IL_0086
IL_007e: nop
IL_007f: nop
IL_0080: ldloc.s i
IL_0082: ldc.i4.1
IL_0083: add
IL_0084: stloc.s i
IL_0086: ldloc.s i
IL_0088: ldarga.s address
IL_008a: call instance int32 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Length()
IL_008f: bge.s IL_00b0
IL_0091: ldarga.s address
IL_0093: ldloc.s i
IL_0095: call instance !0 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Item(int32)
IL_009a: ldc.i4.s 93
IL_009c: beq.s IL_00b0
IL_009e: ldarga.s address
IL_00a0: ldloc.s i
IL_00a2: call instance !0 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Item(int32)
IL_00a7: ldc.i4.s 47
IL_00a9: ceq
IL_00ab: ldc.i4.0
IL_00ac: ceq
IL_00ae: br.s IL_00b1
IL_00b0: ldc.i4.0
IL_00b1: stloc.s V_9
IL_00b3: ldloc.s V_9
IL_00b5: brtrue.s IL_007e
IL_00b7: ldarg.3
IL_00b8: ldarga.s address
IL_00ba: ldarg.2
IL_00bb: ldloc.s i
IL_00bd: ldarg.2
IL_00be: sub
IL_00bf: call instance valuetype [System.Runtime]System.ReadOnlySpan`1<!0> valuetype [System.Runtime]System.ReadOnlySpan`1<char>::Slice(int32,
int32)
IL_00c4: stloc.s V_10
IL_00c6: ldloca.s V_10
IL_00c8: constrained. valuetype [System.Runtime]System.ReadOnlySpan`1<char>
IL_00ce: callvirt instance string [System.Runtime]System.Object::ToString()
IL_00d3: stind.ref
IL_00d4: br.s IL_00de
IL_00d6: nop
IL_00d7: nop
IL_00d8: ldloc.s i
IL_00da: ldc.i4.1
IL_00db: add
IL_00dc: stloc.s i
IL_00de: ldloc.s i
IL_00e0: ldarga.s address
IL_00e2: call instance int32 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Length()
IL_00e7: bge.s IL_00fb
IL_00e9: ldarga.s address
IL_00eb: ldloc.s i
IL_00ed: call instance !0 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Item(int32)
IL_00f2: ldc.i4.s 93
IL_00f4: ceq
IL_00f6: ldc.i4.0
IL_00f7: ceq
IL_00f9: br.s IL_00fc
IL_00fb: ldc.i4.0
IL_00fc: stloc.s V_11
IL_00fe: ldloc.s V_11
IL_0100: brtrue.s IL_00d6
IL_0102: br IL_02c4
IL_0107: ldarg.1
IL_0108: ldloc.1
IL_0109: dup
IL_010a: ldc.i4.1
IL_010b: add
IL_010c: stloc.1
IL_010d: conv.i
IL_010e: ldc.i4.2
IL_010f: mul
IL_0110: add
IL_0111: ldloc.0
IL_0112: conv.u2
IL_0113: stind.i2
IL_0114: ldc.i4.0
IL_0115: stloc.0
IL_0116: ldloc.s i
IL_0118: ldc.i4.1
IL_0119: add
IL_011a: stloc.s i
IL_011c: ldarga.s address
IL_011e: ldloc.s i
IL_0120: call instance !0 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Item(int32)
IL_0125: ldc.i4.s 58
IL_0127: ceq
IL_0129: stloc.s V_12
IL_012b: ldloc.s V_12
IL_012d: brfalse.s IL_013b
IL_012f: nop
IL_0130: ldloc.1
IL_0131: stloc.2
IL_0132: ldloc.s i
IL_0134: ldc.i4.1
IL_0135: add
IL_0136: stloc.s i
IL_0138: nop
IL_0139: br.s IL_0152
IL_013b: ldloc.2
IL_013c: ldc.i4.0
IL_013d: bge.s IL_0145
IL_013f: ldloc.1
IL_0140: ldc.i4.6
IL_0141: clt
IL_0143: br.s IL_0146
IL_0145: ldc.i4.0
IL_0146: stloc.s V_13
IL_0148: ldloc.s V_13
IL_014a: brfalse.s IL_0152
IL_014c: nop
IL_014d: br IL_02c4
IL_0152: ldloc.s i
IL_0154: stloc.s j
IL_0156: br IL_0200
IL_015b: nop
IL_015c: ldarga.s address
IL_015e: ldloc.s j
IL_0160: call instance !0 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Item(int32)
IL_0165: ldc.i4.s 46
IL_0167: ceq
IL_0169: stloc.s V_15
IL_016b: ldloc.s V_15
IL_016d: brfalse IL_01f9
IL_0172: nop
IL_0173: br.s IL_017d
IL_0175: nop
IL_0176: ldloc.s j
IL_0178: ldc.i4.1
IL_0179: add
IL_017a: stloc.s j
IL_017c: nop
IL_017d: ldloc.s j
IL_017f: ldarga.s address
IL_0181: call instance int32 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Length()
IL_0186: bge.s IL_01b4
IL_0188: ldarga.s address
IL_018a: ldloc.s j
IL_018c: call instance !0 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Item(int32)
IL_0191: ldc.i4.s 93
IL_0193: beq.s IL_01b4
IL_0195: ldarga.s address
IL_0197: ldloc.s j
IL_0199: call instance !0 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Item(int32)
IL_019e: ldc.i4.s 47
IL_01a0: beq.s IL_01b4
IL_01a2: ldarga.s address
IL_01a4: ldloc.s j
IL_01a6: call instance !0 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Item(int32)
IL_01ab: ldc.i4.s 37
IL_01ad: ceq
IL_01af: ldc.i4.0
IL_01b0: ceq
IL_01b2: br.s IL_01b5
IL_01b4: ldc.i4.0
IL_01b5: stloc.s V_16
IL_01b7: ldloc.s V_16
IL_01b9: brtrue.s IL_0175
IL_01bb: ldarga.s address
IL_01bd: constrained. valuetype [System.Runtime]System.ReadOnlySpan`1<char>
IL_01c3: callvirt instance string [System.Runtime]System.Object::ToString()
IL_01c8: ldloc.s i
IL_01ca: ldloc.s j
IL_01cc: call int32 System.IPv4AddressHelper::ParseHostNumber(string,
int32,
int32)
IL_01d1: stloc.0
IL_01d2: ldarg.1
IL_01d3: ldloc.1
IL_01d4: dup
IL_01d5: ldc.i4.1
IL_01d6: add
IL_01d7: stloc.1
IL_01d8: conv.i
IL_01d9: ldc.i4.2
IL_01da: mul
IL_01db: add
IL_01dc: ldloc.0
IL_01dd: ldc.i4.s 16
IL_01df: shr
IL_01e0: conv.u2
IL_01e1: stind.i2
IL_01e2: ldarg.1
IL_01e3: ldloc.1
IL_01e4: dup
IL_01e5: ldc.i4.1
IL_01e6: add
IL_01e7: stloc.1
IL_01e8: conv.i
IL_01e9: ldc.i4.2
IL_01ea: mul
IL_01eb: add
IL_01ec: ldloc.0
IL_01ed: conv.u2
IL_01ee: stind.i2
IL_01ef: ldloc.s j
IL_01f1: stloc.s i
IL_01f3: ldc.i4.0
IL_01f4: stloc.0
IL_01f5: ldc.i4.0
IL_01f6: stloc.3
IL_01f7: br.s IL_0253
IL_01f9: nop
IL_01fa: ldloc.s j
IL_01fc: ldc.i4.1
IL_01fd: add
IL_01fe: stloc.s j
IL_0200: ldloc.s j
IL_0202: ldarga.s address
IL_0204: call instance int32 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Length()
IL_0209: bge.s IL_0249
IL_020b: ldarga.s address
IL_020d: ldloc.s j
IL_020f: call instance !0 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Item(int32)
IL_0214: ldc.i4.s 93
IL_0216: beq.s IL_0249
IL_0218: ldarga.s address
IL_021a: ldloc.s j
IL_021c: call instance !0 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Item(int32)
IL_0221: ldc.i4.s 58
IL_0223: beq.s IL_0249
IL_0225: ldarga.s address
IL_0227: ldloc.s j
IL_0229: call instance !0 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Item(int32)
IL_022e: ldc.i4.s 37
IL_0230: beq.s IL_0249
IL_0232: ldarga.s address
IL_0234: ldloc.s j
IL_0236: call instance !0 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Item(int32)
IL_023b: ldc.i4.s 47
IL_023d: beq.s IL_0249
IL_023f: ldloc.s j
IL_0241: ldloc.s i
IL_0243: ldc.i4.4
IL_0244: add
IL_0245: clt
IL_0247: br.s IL_024a
IL_0249: ldc.i4.0
IL_024a: stloc.s V_17
IL_024c: ldloc.s V_17
IL_024e: brtrue IL_015b
IL_0253: br.s IL_02c4
IL_0255: ldloc.3
IL_0256: stloc.s V_18
IL_0258: ldloc.s V_18
IL_025a: brfalse.s IL_026d
IL_025c: nop
IL_025d: ldarg.1
IL_025e: ldloc.1
IL_025f: dup
IL_0260: ldc.i4.1
IL_0261: add
IL_0262: stloc.1
IL_0263: conv.i
IL_0264: ldc.i4.2
IL_0265: mul
IL_0266: add
IL_0267: ldloc.0
IL_0268: conv.u2
IL_0269: stind.i2
IL_026a: ldc.i4.0
IL_026b: stloc.3
IL_026c: nop
IL_026d: ldloc.s i
IL_026f: ldc.i4.1
IL_0270: add
IL_0271: stloc.s i
IL_0273: br.s IL_0291
IL_0275: nop
IL_0276: ldloc.s PrefixLength
IL_0278: ldc.i4.s 10
IL_027a: mul
IL_027b: ldarga.s address
IL_027d: ldloc.s i
IL_027f: call instance !0 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Item(int32)
IL_0284: ldc.i4.s 48
IL_0286: sub
IL_0287: add
IL_0288: stloc.s PrefixLength
IL_028a: nop
IL_028b: ldloc.s i
IL_028d: ldc.i4.1
IL_028e: add
IL_028f: stloc.s i
IL_0291: ldarga.s address
IL_0293: ldloc.s i
IL_0295: call instance !0 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Item(int32)
IL_029a: ldc.i4.s 93
IL_029c: ceq
IL_029e: ldc.i4.0
IL_029f: ceq
IL_02a1: stloc.s V_19
IL_02a3: ldloc.s V_19
IL_02a5: brtrue.s IL_0275
IL_02a7: br.s IL_02c4
IL_02a9: ldloc.0
IL_02aa: ldc.i4.s 16
IL_02ac: mul
IL_02ad: ldarga.s address
IL_02af: ldloc.s i
IL_02b1: dup
IL_02b2: ldc.i4.1
IL_02b3: add
IL_02b4: stloc.s i
IL_02b6: call instance !0 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Item(int32)
IL_02bb: call int32 [System.Runtime]System.Uri::FromHex(char)
IL_02c0: add
IL_02c1: stloc.0
IL_02c2: br.s IL_02c4
IL_02c4: nop
IL_02c5: ldloc.s i
IL_02c7: ldarga.s address
IL_02c9: call instance int32 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Length()
IL_02ce: bge.s IL_02e2
IL_02d0: ldarga.s address
IL_02d2: ldloc.s i
IL_02d4: call instance !0 valuetype [System.Runtime]System.ReadOnlySpan`1<char>::get_Item(int32)
IL_02d9: ldc.i4.s 93
IL_02db: ceq
IL_02dd: ldc.i4.0
IL_02de: ceq
IL_02e0: br.s IL_02e3
IL_02e2: ldc.i4.0
IL_02e3: stloc.s V_20
IL_02e5: ldloc.s V_20
IL_02e7: brtrue IL_002d
IL_02ec: ldloc.3
IL_02ed: stloc.s V_21
IL_02ef: ldloc.s V_21
IL_02f1: brfalse.s IL_0302
IL_02f3: nop
IL_02f4: ldarg.1
IL_02f5: ldloc.1
IL_02f6: dup
IL_02f7: ldc.i4.1
IL_02f8: add
IL_02f9: stloc.1
IL_02fa: conv.i
IL_02fb: ldc.i4.2
IL_02fc: mul
IL_02fd: add
IL_02fe: ldloc.0
IL_02ff: conv.u2
IL_0300: stind.i2
IL_0301: nop
IL_0302: ldloc.2
IL_0303: ldc.i4.0
IL_0304: cgt
IL_0306: stloc.s V_22
IL_0308: ldloc.s V_22
IL_030a: brfalse.s IL_0353
IL_030c: nop
IL_030d: ldc.i4.7
IL_030e: stloc.s toIndex
IL_0310: ldloc.1
IL_0311: ldc.i4.1
IL_0312: sub
IL_0313: stloc.s fromIndex
IL_0315: ldloc.1
IL_0316: ldloc.2
IL_0317: sub
IL_0318: stloc.s V_25
IL_031a: br.s IL_0347
IL_031c: nop
IL_031d: ldarg.1
IL_031e: ldloc.s toIndex
IL_0320: dup
IL_0321: ldc.i4.1
IL_0322: sub
IL_0323: stloc.s toIndex
IL_0325: conv.i
IL_0326: ldc.i4.2
IL_0327: mul
IL_0328: add
IL_0329: ldarg.1
IL_032a: ldloc.s fromIndex
IL_032c: conv.i
IL_032d: ldc.i4.2
IL_032e: mul
IL_032f: add
IL_0330: ldind.u2
IL_0331: stind.i2
IL_0332: ldarg.1
IL_0333: ldloc.s fromIndex
IL_0335: dup
IL_0336: ldc.i4.1
IL_0337: sub
IL_0338: stloc.s fromIndex
IL_033a: conv.i
IL_033b: ldc.i4.2
IL_033c: mul
IL_033d: add
IL_033e: ldc.i4.0
IL_033f: stind.i2
IL_0340: nop
IL_0341: ldloc.s V_25
IL_0343: ldc.i4.1
IL_0344: sub
IL_0345: stloc.s V_25
IL_0347: ldloc.s V_25
IL_0349: ldc.i4.0
IL_034a: cgt
IL_034c: stloc.s V_26
IL_034e: ldloc.s V_26
IL_0350: brtrue.s IL_031c
IL_0352: nop
IL_0353: ret
} // end of method IPv6AddressHelper::Parse
.method assembly hidebysig static void
Parse(string address,
uint16* numbers,
int32 start,
string& scopeId) cil managed
{
// Code size 798 (0x31e)
.maxstack 5
.locals init ([0] int32 number,
[1] int32 index,
[2] int32 compressorIndex,
[3] bool numberIsValid,
[4] int32 PrefixLength,
[5] bool V_5,
[6] int32 i,
[7] char V_7,
[8] bool V_8,
[9] bool V_9,
[10] bool V_10,
[11] bool V_11,
[12] bool V_12,
[13] int32 j,
[14] bool V_14,
[15] bool V_15,
[16] bool V_16,
[17] bool V_17,
[18] bool V_18,
[19] bool V_19,
[20] bool V_20,
[21] bool V_21,
[22] int32 toIndex,
[23] int32 fromIndex,
[24] int32 V_24,
[25] bool V_25)
IL_0000: nop
IL_0001: ldc.i4.0
IL_0002: stloc.0
IL_0003: ldc.i4.0
IL_0004: stloc.1
IL_0005: ldc.i4.m1
IL_0006: stloc.2
IL_0007: ldc.i4.1
IL_0008: stloc.3
IL_0009: ldc.i4.0
IL_000a: stloc.s PrefixLength
IL_000c: ldarg.0
IL_000d: ldarg.2
IL_000e: callvirt instance char [System.Runtime]System.String::get_Chars(int32)
IL_0013: ldc.i4.s 91
IL_0015: ceq
IL_0017: stloc.s V_5
IL_0019: ldloc.s V_5
IL_001b: brfalse.s IL_0024
IL_001d: nop
IL_001e: ldarg.2
IL_001f: ldc.i4.1
IL_0020: add
IL_0021: starg.s start
IL_0023: nop
IL_0024: ldarg.2
IL_0025: stloc.s i
IL_0027: br IL_0291
IL_002c: nop
IL_002d: ldarg.0
IL_002e: ldloc.s i
IL_0030: callvirt instance char [System.Runtime]System.String::get_Chars(int32)
IL_0035: stloc.s V_7
IL_0037: ldloc.s V_7
IL_0039: ldc.i4.s 37
IL_003b: beq.s IL_0058
IL_003d: br.s IL_003f
IL_003f: ldloc.s V_7
IL_0041: ldc.i4.s 47
IL_0043: beq IL_0224
IL_0048: br.s IL_004a
IL_004a: ldloc.s V_7
IL_004c: ldc.i4.s 58
IL_004e: beq IL_00f0
IL_0053: br IL_0276
IL_0058: ldloc.3
IL_0059: stloc.s V_8
IL_005b: ldloc.s V_8
IL_005d: brfalse.s IL_0070
IL_005f: nop
IL_0060: ldarg.1
IL_0061: ldloc.1
IL_0062: dup
IL_0063: ldc.i4.1
IL_0064: add
IL_0065: stloc.1
IL_0066: conv.i
IL_0067: ldc.i4.2
IL_0068: mul
IL_0069: add
IL_006a: ldloc.0
IL_006b: conv.u2
IL_006c: stind.i2
IL_006d: ldc.i4.0
IL_006e: stloc.3
IL_006f: nop
IL_0070: ldloc.s i
IL_0072: starg.s start
IL_0074: ldloc.s i
IL_0076: ldc.i4.1
IL_0077: add
IL_0078: stloc.s i
IL_007a: br.s IL_0084
IL_007c: nop
IL_007d: nop
IL_007e: ldloc.s i
IL_0080: ldc.i4.1
IL_0081: add
IL_0082: stloc.s i
IL_0084: ldloc.s i
IL_0086: ldarg.0
IL_0087: callvirt instance int32 [System.Runtime]System.String::get_Length()
IL_008c: bge.s IL_00ab
IL_008e: ldarg.0
IL_008f: ldloc.s i
IL_0091: callvirt instance char [System.Runtime]System.String::get_Chars(int32)
IL_0096: ldc.i4.s 93
IL_0098: beq.s IL_00ab
IL_009a: ldarg.0
IL_009b: ldloc.s i
IL_009d: callvirt instance char [System.Runtime]System.String::get_Chars(int32)
IL_00a2: ldc.i4.s 47
IL_00a4: ceq
IL_00a6: ldc.i4.0
IL_00a7: ceq
IL_00a9: br.s IL_00ac
IL_00ab: ldc.i4.0
IL_00ac: stloc.s V_9
IL_00ae: ldloc.s V_9
IL_00b0: brtrue.s IL_007c
IL_00b2: ldarg.3
IL_00b3: ldarg.0
IL_00b4: ldarg.2
IL_00b5: ldloc.s i
IL_00b7: ldarg.2
IL_00b8: sub
IL_00b9: callvirt instance string [System.Runtime]System.String::Substring(int32,
int32)
IL_00be: stind.ref
IL_00bf: br.s IL_00c9
IL_00c1: nop
IL_00c2: nop
IL_00c3: ldloc.s i
IL_00c5: ldc.i4.1
IL_00c6: add
IL_00c7: stloc.s i
IL_00c9: ldloc.s i
IL_00cb: ldarg.0
IL_00cc: callvirt instance int32 [System.Runtime]System.String::get_Length()
IL_00d1: bge.s IL_00e4
IL_00d3: ldarg.0
IL_00d4: ldloc.s i
IL_00d6: callvirt instance char [System.Runtime]System.String::get_Chars(int32)
IL_00db: ldc.i4.s 93
IL_00dd: ceq
IL_00df: ldc.i4.0
IL_00e0: ceq
IL_00e2: br.s IL_00e5
IL_00e4: ldc.i4.0
IL_00e5: stloc.s V_10
IL_00e7: ldloc.s V_10
IL_00e9: brtrue.s IL_00c1
IL_00eb: br IL_0290
IL_00f0: ldarg.1
IL_00f1: ldloc.1
IL_00f2: dup
IL_00f3: ldc.i4.1
IL_00f4: add
IL_00f5: stloc.1
IL_00f6: conv.i
IL_00f7: ldc.i4.2
IL_00f8: mul
IL_00f9: add
IL_00fa: ldloc.0
IL_00fb: conv.u2
IL_00fc: stind.i2
IL_00fd: ldc.i4.0
IL_00fe: stloc.0
IL_00ff: ldloc.s i
IL_0101: ldc.i4.1
IL_0102: add
IL_0103: stloc.s i
IL_0105: ldarg.0
IL_0106: ldloc.s i
IL_0108: callvirt instance char [System.Runtime]System.String::get_Chars(int32)
IL_010d: ldc.i4.s 58
IL_010f: ceq
IL_0111: stloc.s V_11
IL_0113: ldloc.s V_11
IL_0115: brfalse.s IL_0123
IL_0117: nop
IL_0118: ldloc.1
IL_0119: stloc.2
IL_011a: ldloc.s i
IL_011c: ldc.i4.1
IL_011d: add
IL_011e: stloc.s i
IL_0120: nop
IL_0121: br.s IL_013a
IL_0123: ldloc.2
IL_0124: ldc.i4.0
IL_0125: bge.s IL_012d
IL_0127: ldloc.1
IL_0128: ldc.i4.6
IL_0129: clt
IL_012b: br.s IL_012e
IL_012d: ldc.i4.0
IL_012e: stloc.s V_12
IL_0130: ldloc.s V_12
IL_0132: brfalse.s IL_013a
IL_0134: nop
IL_0135: br IL_0290
IL_013a: ldloc.s i
IL_013c: stloc.s j
IL_013e: br IL_01d4
IL_0143: nop
IL_0144: ldarg.0
IL_0145: ldloc.s j
IL_0147: callvirt instance char [System.Runtime]System.String::get_Chars(int32)
IL_014c: ldc.i4.s 46
IL_014e: ceq
IL_0150: stloc.s V_14
IL_0152: ldloc.s V_14
IL_0154: brfalse.s IL_01cd
IL_0156: nop
IL_0157: br.s IL_0161
IL_0159: nop
IL_015a: ldloc.s j
IL_015c: ldc.i4.1
IL_015d: add
IL_015e: stloc.s j
IL_0160: nop
IL_0161: ldloc.s j
IL_0163: ldarg.0
IL_0164: callvirt instance int32 [System.Runtime]System.String::get_Length()
IL_0169: bge.s IL_0194
IL_016b: ldarg.0
IL_016c: ldloc.s j
IL_016e: callvirt instance char [System.Runtime]System.String::get_Chars(int32)
IL_0173: ldc.i4.s 93
IL_0175: beq.s IL_0194
IL_0177: ldarg.0
IL_0178: ldloc.s j
IL_017a: callvirt instance char [System.Runtime]System.String::get_Chars(int32)
IL_017f: ldc.i4.s 47
IL_0181: beq.s IL_0194
IL_0183: ldarg.0
IL_0184: ldloc.s j
IL_0186: callvirt instance char [System.Runtime]System.String::get_Chars(int32)
IL_018b: ldc.i4.s 37
IL_018d: ceq
IL_018f: ldc.i4.0
IL_0190: ceq
IL_0192: br.s IL_0195
IL_0194: ldc.i4.0
IL_0195: stloc.s V_15
IL_0197: ldloc.s V_15
IL_0199: brtrue.s IL_0159
IL_019b: ldarg.0
IL_019c: ldloc.s i
IL_019e: ldloc.s j
IL_01a0: call int32 System.IPv4AddressHelper::ParseHostNumber(string,
int32,
int32)
IL_01a5: stloc.0
IL_01a6: ldarg.1
IL_01a7: ldloc.1
IL_01a8: dup
IL_01a9: ldc.i4.1
IL_01aa: add
IL_01ab: stloc.1
IL_01ac: conv.i
IL_01ad: ldc.i4.2
IL_01ae: mul
IL_01af: add
IL_01b0: ldloc.0
IL_01b1: ldc.i4.s 16
IL_01b3: shr
IL_01b4: conv.u2
IL_01b5: stind.i2
IL_01b6: ldarg.1
IL_01b7: ldloc.1
IL_01b8: dup
IL_01b9: ldc.i4.1
IL_01ba: add
IL_01bb: stloc.1
IL_01bc: conv.i
IL_01bd: ldc.i4.2
IL_01be: mul
IL_01bf: add
IL_01c0: ldloc.0
IL_01c1: conv.u2
IL_01c2: stind.i2
IL_01c3: ldloc.s j
IL_01c5: stloc.s i
IL_01c7: ldc.i4.0
IL_01c8: stloc.0
IL_01c9: ldc.i4.0
IL_01ca: stloc.3
IL_01cb: br.s IL_0222
IL_01cd: nop
IL_01ce: ldloc.s j
IL_01d0: ldc.i4.1
IL_01d1: add
IL_01d2: stloc.s j
IL_01d4: ldloc.s j
IL_01d6: ldarg.0
IL_01d7: callvirt instance int32 [System.Runtime]System.String::get_Length()
IL_01dc: bge.s IL_0218
IL_01de: ldarg.0
IL_01df: ldloc.s j
IL_01e1: callvirt instance char [System.Runtime]System.String::get_Chars(int32)
IL_01e6: ldc.i4.s 93
IL_01e8: beq.s IL_0218
IL_01ea: ldarg.0
IL_01eb: ldloc.s j
IL_01ed: callvirt instance char [System.Runtime]System.String::get_Chars(int32)
IL_01f2: ldc.i4.s 58
IL_01f4: beq.s IL_0218
IL_01f6: ldarg.0
IL_01f7: ldloc.s j
IL_01f9: callvirt instance char [System.Runtime]System.String::get_Chars(int32)
IL_01fe: ldc.i4.s 37
IL_0200: beq.s IL_0218
IL_0202: ldarg.0
IL_0203: ldloc.s j
IL_0205: callvirt instance char [System.Runtime]System.String::get_Chars(int32)
IL_020a: ldc.i4.s 47
IL_020c: beq.s IL_0218
IL_020e: ldloc.s j
IL_0210: ldloc.s i
IL_0212: ldc.i4.4
IL_0213: add
IL_0214: clt
IL_0216: br.s IL_0219
IL_0218: ldc.i4.0
IL_0219: stloc.s V_16
IL_021b: ldloc.s V_16
IL_021d: brtrue IL_0143
IL_0222: br.s IL_0290
IL_0224: ldloc.3
IL_0225: stloc.s V_17
IL_0227: ldloc.s V_17
IL_0229: brfalse.s IL_023c
IL_022b: nop
IL_022c: ldarg.1
IL_022d: ldloc.1
IL_022e: dup
IL_022f: ldc.i4.1
IL_0230: add
IL_0231: stloc.1
IL_0232: conv.i
IL_0233: ldc.i4.2
IL_0234: mul
IL_0235: add
IL_0236: ldloc.0
IL_0237: conv.u2
IL_0238: stind.i2
IL_0239: ldc.i4.0
IL_023a: stloc.3
IL_023b: nop
IL_023c: ldloc.s i
IL_023e: ldc.i4.1
IL_023f: add
IL_0240: stloc.s i
IL_0242: br.s IL_025f
IL_0244: nop
IL_0245: ldloc.s PrefixLength
IL_0247: ldc.i4.s 10
IL_0249: mul
IL_024a: ldarg.0
IL_024b: ldloc.s i
IL_024d: callvirt instance char [System.Runtime]System.String::get_Chars(int32)
IL_0252: ldc.i4.s 48
IL_0254: sub
IL_0255: add
IL_0256: stloc.s PrefixLength
IL_0258: nop
IL_0259: ldloc.s i
IL_025b: ldc.i4.1
IL_025c: add
IL_025d: stloc.s i
IL_025f: ldarg.0
IL_0260: ldloc.s i
IL_0262: callvirt instance char [System.Runtime]System.String::get_Chars(int32)
IL_0267: ldc.i4.s 93
IL_0269: ceq
IL_026b: ldc.i4.0
IL_026c: ceq
IL_026e: stloc.s V_18
IL_0270: ldloc.s V_18
IL_0272: brtrue.s IL_0244
IL_0274: br.s IL_0290
IL_0276: ldloc.0
IL_0277: ldc.i4.s 16
IL_0279: mul
IL_027a: ldarg.0
IL_027b: ldloc.s i
IL_027d: dup
IL_027e: ldc.i4.1
IL_027f: add
IL_0280: stloc.s i
IL_0282: callvirt instance char [System.Runtime]System.String::get_Chars(int32)
IL_0287: call int32 [System.Runtime]System.Uri::FromHex(char)
IL_028c: add
IL_028d: stloc.0
IL_028e: br.s IL_0290
IL_0290: nop
IL_0291: ldloc.s i
IL_0293: ldarg.0
IL_0294: callvirt instance int32 [System.Runtime]System.String::get_Length()
IL_0299: bge.s IL_02ac
IL_029b: ldarg.0
IL_029c: ldloc.s i
IL_029e: callvirt instance char [System.Runtime]System.String::get_Chars(int32)
IL_02a3: ldc.i4.s 93
IL_02a5: ceq
IL_02a7: ldc.i4.0
IL_02a8: ceq
IL_02aa: br.s IL_02ad
IL_02ac: ldc.i4.0
IL_02ad: stloc.s V_19
IL_02af: ldloc.s V_19
IL_02b1: brtrue IL_002c
IL_02b6: ldloc.3
IL_02b7: stloc.s V_20
IL_02b9: ldloc.s V_20
IL_02bb: brfalse.s IL_02cc
IL_02bd: nop
IL_02be: ldarg.1
IL_02bf: ldloc.1
IL_02c0: dup
IL_02c1: ldc.i4.1
IL_02c2: add
IL_02c3: stloc.1
IL_02c4: conv.i
IL_02c5: ldc.i4.2
IL_02c6: mul
IL_02c7: add
IL_02c8: ldloc.0
IL_02c9: conv.u2
IL_02ca: stind.i2
IL_02cb: nop
IL_02cc: ldloc.2
IL_02cd: ldc.i4.0
IL_02ce: cgt
IL_02d0: stloc.s V_21
IL_02d2: ldloc.s V_21
IL_02d4: brfalse.s IL_031d
IL_02d6: nop
IL_02d7: ldc.i4.7
IL_02d8: stloc.s toIndex
IL_02da: ldloc.1
IL_02db: ldc.i4.1
IL_02dc: sub
IL_02dd: stloc.s fromIndex
IL_02df: ldloc.1
IL_02e0: ldloc.2
IL_02e1: sub
IL_02e2: stloc.s V_24
IL_02e4: br.s IL_0311
IL_02e6: nop
IL_02e7: ldarg.1
IL_02e8: ldloc.s toIndex
IL_02ea: dup
IL_02eb: ldc.i4.1
IL_02ec: sub
IL_02ed: stloc.s toIndex
IL_02ef: conv.i
IL_02f0: ldc.i4.2
IL_02f1: mul
IL_02f2: add
IL_02f3: ldarg.1
IL_02f4: ldloc.s fromIndex
IL_02f6: conv.i
IL_02f7: ldc.i4.2
IL_02f8: mul
IL_02f9: add
IL_02fa: ldind.u2
IL_02fb: stind.i2
IL_02fc: ldarg.1
IL_02fd: ldloc.s fromIndex
IL_02ff: dup
IL_0300: ldc.i4.1
IL_0301: sub
IL_0302: stloc.s fromIndex
IL_0304: conv.i
IL_0305: ldc.i4.2
IL_0306: mul
IL_0307: add
IL_0308: ldc.i4.0
IL_0309: stind.i2
IL_030a: nop
IL_030b: ldloc.s V_24
IL_030d: ldc.i4.1
IL_030e: sub
IL_030f: stloc.s V_24
IL_0311: ldloc.s V_24
IL_0313: ldc.i4.0
IL_0314: cgt
IL_0316: stloc.s V_25
IL_0318: ldloc.s V_25
IL_031a: brtrue.s IL_02e6
IL_031c: nop
IL_031d: ret
} // end of method IPv6AddressHelper::Parse
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment