-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Problems with LSRA's resolution phase #47194
Comments
@dotnet/jit-contrib |
In below assembly code, there are 54 places where we do the following: ; ...
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
; ... In all, there are 55 places where the jump to ; ...
mov gword ptr [ebp-40CH], ecx
mov eax, ecx
;; bbWeight=1 PerfScore 12.58
G_M36558_IG02:
jmp G_M36558_IG174
; ... To summarize, we can do better by adding the resolution code inside ; ...
G_M36558_IG174:
mov eax, gword ptr [ebp-40CH]
; ... TL;DR : Assembly code; Assembly listing for method ByteMark:read_comfile(System.IO.StreamReader)
; Emitting BLENDED_CODE for Pentium 4 - Windows
; optimized code
; ebp based frame
; fully interruptible
; Final local variable assignments
;
; V00 arg0 [V00,T75] ( 4, 18 ) ref -> [ebp-0x40C] EH class-hnd EH-live
; V01 loc0 [V01,T09] ( 8, 40 ) ref -> esi class-hnd
; V02 loc1 [V02,T00] (107,428 ) ref -> esi class-hnd
; V03 loc2 [V03,T76] ( 4, 16 ) int -> edi
; V04 loc3 [V04,T01] ( 15,340 ) int -> edi
; V05 loc4 [V05,T08] ( 6, 52 ) ref -> ebx class-hnd
; V06 loc5 [V06,T11] ( 8, 32 ) bool -> edx
;* V07 loc6 [V07 ] ( 0, 0 ) int -> zero-ref
; V08 tmp0 [V08,T40] ( 2, 32 ) ref -> esi class-hnd "dup spill"
; V09 tmp1 [V09,T209] ( 2, 16 ) int -> edi "dup spill"
; V10 tmp2 [V10,T104] ( 2, 16 ) ref -> edi class-hnd "impAppendStmt"
; V11 tmp3 [V11,T105] ( 2, 16 ) ref -> edi class-hnd "impAppendStmt"
; V12 tmp4 [V12,T106] ( 2, 16 ) ref -> edi class-hnd "impAppendStmt"
; V13 tmp5 [V13,T107] ( 2, 16 ) ref -> edi class-hnd "impAppendStmt"
; V14 tmp6 [V14,T108] ( 2, 16 ) ref -> edi class-hnd "impAppendStmt"
; V15 tmp7 [V15,T109] ( 2, 16 ) ref -> edi class-hnd "impAppendStmt"
; V16 tmp8 [V16,T110] ( 2, 16 ) ref -> edi class-hnd "impAppendStmt"
; V17 tmp9 [V17,T111] ( 2, 16 ) ref -> edi class-hnd "impAppendStmt"
; V18 tmp10 [V18,T112] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V19 tmp11 [V19,T113] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V20 tmp12 [V20,T114] ( 2, 16 ) ref -> edi class-hnd "impAppendStmt"
; V21 tmp13 [V21,T115] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V22 tmp14 [V22,T116] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
;* V23 tmp15 [V23 ] ( 0, 0 ) int -> zero-ref "dup spill"
; V24 tmp16 [V24,T117] ( 2, 16 ) ref -> edi class-hnd "impAppendStmt"
; V25 tmp17 [V25,T118] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V26 tmp18 [V26,T42] ( 3, 24 ) int -> eax "dup spill"
; V27 tmp19 [V27,T119] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V28 tmp20 [V28,T120] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V29 tmp21 [V29,T121] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V30 tmp22 [V30,T122] ( 2, 16 ) ref -> edi class-hnd "impAppendStmt"
; V31 tmp23 [V31,T123] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V32 tmp24 [V32,T124] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V33 tmp25 [V33,T125] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V34 tmp26 [V34,T126] ( 2, 16 ) ref -> edi class-hnd "impAppendStmt"
; V35 tmp27 [V35,T127] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V36 tmp28 [V36,T128] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V37 tmp29 [V37,T129] ( 2, 16 ) ref -> edi class-hnd "impAppendStmt"
; V38 tmp30 [V38,T130] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V39 tmp31 [V39,T43] ( 3, 24 ) int -> eax "dup spill"
; V40 tmp32 [V40,T131] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V41 tmp33 [V41,T132] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V42 tmp34 [V42,T133] ( 2, 16 ) ref -> edi class-hnd "impAppendStmt"
; V43 tmp35 [V43,T134] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V44 tmp36 [V44,T135] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V45 tmp37 [V45,T136] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V46 tmp38 [V46,T137] ( 2, 16 ) ref -> edi class-hnd "impAppendStmt"
; V47 tmp39 [V47,T138] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V48 tmp40 [V48,T44] ( 3, 24 ) int -> eax "dup spill"
; V49 tmp41 [V49,T139] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V50 tmp42 [V50,T140] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V51 tmp43 [V51,T141] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V52 tmp44 [V52,T142] ( 2, 16 ) ref -> edi class-hnd "impAppendStmt"
; V53 tmp45 [V53,T143] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V54 tmp46 [V54,T144] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V55 tmp47 [V55,T145] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V56 tmp48 [V56,T146] ( 2, 16 ) ref -> edi class-hnd "impAppendStmt"
; V57 tmp49 [V57,T147] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V58 tmp50 [V58,T148] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V59 tmp51 [V59,T149] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
;* V60 tmp52 [V60 ] ( 0, 0 ) int -> zero-ref "dup spill"
; V61 tmp53 [V61,T150] ( 2, 16 ) ref -> edi class-hnd "impAppendStmt"
; V62 tmp54 [V62,T151] ( 2, 16 ) ref -> ebx class-hnd "impAppendStmt"
; V63 tmp55 [V63,T45] ( 3, 24 ) int -> eax "dup spill"
;* V64 tmp56 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff"
; V65 tmp57 [V65,T06] ( 2,128 ) int -> edi "dup spill"
; V66 tmp58 [V66,T46] ( 3, 24 ) int -> edx "Inlining Arg"
; V67 tmp59 [V67,T322] ( 2, 8 ) ref -> ebx class-hnd "Inline return value spill temp"
;* V68 tmp60 [V68 ] ( 0, 0 ) ref -> zero-ref
; V69 tmp61 [V69,T294] ( 3, 12 ) ref -> eax
;* V70 tmp62 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp"
; V71 tmp63 [V71,T05] ( 2,128 ) ref -> edx class-hnd "Inlining Arg"
;* V72 tmp64 [V72 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V73 tmp65 [V73,T323] ( 2, 8 ) struct ( 8) [ebp-0x28] do-not-enreg[SB] must-init "Inline return value spill temp"
; V74 tmp66 [V74,T12] ( 4, 32 ) struct ( 8) [ebp-0x30] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V75 tmp67 [V75 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V76 tmp68 [V76,T47] ( 3, 24 ) int -> ebx "Inlining Arg"
; V77 tmp69 [V77,T152] ( 2, 16 ) byref -> edi "Inlining Arg"
; V78 tmp70 [V78,T210] ( 2, 16 ) struct ( 4) [ebp-0x34] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V79 tmp71 [V79,T211] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V80 tmp72 [V80,T378] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V81 tmp73 [V81,T77] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V82 tmp74 [V82 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V83 tmp75 [V83,T153] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V84 tmp76 [V84 ] ( 3, 12 ) long -> [ebp-0x3C] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V85 tmp77 [V85,T295] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V86 tmp78 [V86,T324] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V87 tmp79 [V87,T212] ( 2, 16 ) struct ( 8) [ebp-0x44] do-not-enreg[SB] must-init "Inlining Arg"
;* V88 tmp80 [V88 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V89 tmp81 [V89,T325] ( 2, 8 ) struct ( 8) [ebp-0x4C] do-not-enreg[SB] must-init "Inline return value spill temp"
; V90 tmp82 [V90,T13] ( 4, 32 ) struct ( 8) [ebp-0x54] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V91 tmp83 [V91 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V92 tmp84 [V92,T48] ( 3, 24 ) int -> ebx "Inlining Arg"
; V93 tmp85 [V93,T154] ( 2, 16 ) byref -> edi "Inlining Arg"
; V94 tmp86 [V94,T213] ( 2, 16 ) struct ( 4) [ebp-0x58] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V95 tmp87 [V95,T214] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V96 tmp88 [V96,T379] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V97 tmp89 [V97,T78] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V98 tmp90 [V98 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V99 tmp91 [V99,T155] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V100 tmp92 [V100 ] ( 2, 8 ) int -> [ebp-0x5C] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V101 tmp93 [V101,T296] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V102 tmp94 [V102,T326] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V103 tmp95 [V103,T215] ( 2, 16 ) struct ( 8) [ebp-0x64] do-not-enreg[SB] must-init "Inlining Arg"
;* V104 tmp96 [V104 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V105 tmp97 [V105,T327] ( 2, 8 ) struct ( 8) [ebp-0x6C] do-not-enreg[SB] must-init "Inline return value spill temp"
; V106 tmp98 [V106,T14] ( 4, 32 ) struct ( 8) [ebp-0x74] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V107 tmp99 [V107 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V108 tmp100 [V108,T49] ( 3, 24 ) int -> [ebp-0x78] "Inlining Arg"
; V109 tmp101 [V109,T156] ( 2, 16 ) byref -> edi "Inlining Arg"
; V110 tmp102 [V110,T216] ( 2, 16 ) struct ( 4) [ebp-0x7C] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V111 tmp103 [V111,T217] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V112 tmp104 [V112,T380] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V113 tmp105 [V113,T79] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V114 tmp106 [V114 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V115 tmp107 [V115,T157] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V116 tmp108 [V116 ] ( 3, 10 ) int -> [ebp-0x80] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V117 tmp109 [V117,T297] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V118 tmp110 [V118,T328] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V119 tmp111 [V119,T218] ( 2, 16 ) struct ( 8) [ebp-0x88] do-not-enreg[SB] must-init "Inlining Arg"
;* V120 tmp112 [V120 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V121 tmp113 [V121,T329] ( 2, 8 ) struct ( 8) [ebp-0x90] do-not-enreg[SB] must-init "Inline return value spill temp"
; V122 tmp114 [V122,T15] ( 4, 32 ) struct ( 8) [ebp-0x98] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V123 tmp115 [V123 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V124 tmp116 [V124,T50] ( 3, 24 ) int -> [ebp-0x9C] "Inlining Arg"
; V125 tmp117 [V125,T158] ( 2, 16 ) byref -> edi "Inlining Arg"
; V126 tmp118 [V126,T219] ( 2, 16 ) struct ( 4) [ebp-0xA0] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V127 tmp119 [V127,T220] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V128 tmp120 [V128,T381] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V129 tmp121 [V129,T80] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V130 tmp122 [V130 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V131 tmp123 [V131,T159] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V132 tmp124 [V132 ] ( 2, 8 ) int -> [ebp-0xA4] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V133 tmp125 [V133,T298] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V134 tmp126 [V134,T330] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V135 tmp127 [V135,T221] ( 2, 16 ) struct ( 8) [ebp-0xAC] do-not-enreg[SB] must-init "Inlining Arg"
;* V136 tmp128 [V136 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V137 tmp129 [V137,T331] ( 2, 8 ) struct ( 8) [ebp-0xB4] do-not-enreg[SB] must-init "Inline return value spill temp"
; V138 tmp130 [V138,T16] ( 4, 32 ) struct ( 8) [ebp-0xBC] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V139 tmp131 [V139 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V140 tmp132 [V140,T51] ( 3, 24 ) int -> [ebp-0xC0] "Inlining Arg"
; V141 tmp133 [V141,T160] ( 2, 16 ) byref -> edi "Inlining Arg"
; V142 tmp134 [V142,T222] ( 2, 16 ) struct ( 4) [ebp-0xC4] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V143 tmp135 [V143,T223] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V144 tmp136 [V144,T382] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V145 tmp137 [V145,T81] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V146 tmp138 [V146 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V147 tmp139 [V147,T161] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V148 tmp140 [V148 ] ( 2, 8 ) int -> [ebp-0xC8] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V149 tmp141 [V149,T299] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V150 tmp142 [V150,T332] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V151 tmp143 [V151,T224] ( 2, 16 ) struct ( 8) [ebp-0xD0] do-not-enreg[SB] must-init "Inlining Arg"
;* V152 tmp144 [V152 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V153 tmp145 [V153,T333] ( 2, 8 ) struct ( 8) [ebp-0xD8] do-not-enreg[SB] must-init "Inline return value spill temp"
; V154 tmp146 [V154,T17] ( 4, 32 ) struct ( 8) [ebp-0xE0] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V155 tmp147 [V155 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V156 tmp148 [V156,T52] ( 3, 24 ) int -> [ebp-0xE4] "Inlining Arg"
; V157 tmp149 [V157,T162] ( 2, 16 ) byref -> edi "Inlining Arg"
; V158 tmp150 [V158,T225] ( 2, 16 ) struct ( 4) [ebp-0xE8] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V159 tmp151 [V159,T226] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V160 tmp152 [V160,T383] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V161 tmp153 [V161,T82] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V162 tmp154 [V162 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V163 tmp155 [V163,T163] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V164 tmp156 [V164 ] ( 2, 8 ) int -> [ebp-0xEC] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V165 tmp157 [V165,T300] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V166 tmp158 [V166,T334] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V167 tmp159 [V167,T227] ( 2, 16 ) struct ( 8) [ebp-0xF4] do-not-enreg[SB] must-init "Inlining Arg"
;* V168 tmp160 [V168 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V169 tmp161 [V169,T335] ( 2, 8 ) struct ( 8) [ebp-0xFC] do-not-enreg[SB] must-init "Inline return value spill temp"
; V170 tmp162 [V170,T18] ( 4, 32 ) struct ( 8) [ebp-0x104] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V171 tmp163 [V171 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V172 tmp164 [V172,T53] ( 3, 24 ) int -> [ebp-0x108] "Inlining Arg"
; V173 tmp165 [V173,T164] ( 2, 16 ) byref -> edi "Inlining Arg"
; V174 tmp166 [V174,T228] ( 2, 16 ) struct ( 4) [ebp-0x10C] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V175 tmp167 [V175,T229] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V176 tmp168 [V176,T384] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V177 tmp169 [V177,T83] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V178 tmp170 [V178 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V179 tmp171 [V179,T165] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V180 tmp172 [V180 ] ( 3, 10 ) int -> [ebp-0x110] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V181 tmp173 [V181,T301] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V182 tmp174 [V182,T336] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V183 tmp175 [V183,T230] ( 2, 16 ) struct ( 8) [ebp-0x118] do-not-enreg[SB] must-init "Inlining Arg"
;* V184 tmp176 [V184 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V185 tmp177 [V185,T337] ( 2, 8 ) struct ( 8) [ebp-0x120] do-not-enreg[SB] must-init "Inline return value spill temp"
; V186 tmp178 [V186,T19] ( 4, 32 ) struct ( 8) [ebp-0x128] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V187 tmp179 [V187 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V188 tmp180 [V188,T54] ( 3, 24 ) int -> [ebp-0x12C] "Inlining Arg"
; V189 tmp181 [V189,T166] ( 2, 16 ) byref -> edi "Inlining Arg"
; V190 tmp182 [V190,T231] ( 2, 16 ) struct ( 4) [ebp-0x130] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V191 tmp183 [V191,T232] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V192 tmp184 [V192,T385] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V193 tmp185 [V193,T84] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V194 tmp186 [V194 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V195 tmp187 [V195,T167] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V196 tmp188 [V196 ] ( 2, 8 ) int -> [ebp-0x134] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V197 tmp189 [V197,T302] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V198 tmp190 [V198,T338] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V199 tmp191 [V199,T233] ( 2, 16 ) struct ( 8) [ebp-0x13C] do-not-enreg[SB] must-init "Inlining Arg"
;* V200 tmp192 [V200 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V201 tmp193 [V201,T339] ( 2, 8 ) struct ( 8) [ebp-0x144] do-not-enreg[SB] must-init "Inline return value spill temp"
; V202 tmp194 [V202,T20] ( 4, 32 ) struct ( 8) [ebp-0x14C] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V203 tmp195 [V203 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V204 tmp196 [V204,T55] ( 3, 24 ) int -> [ebp-0x150] "Inlining Arg"
; V205 tmp197 [V205,T168] ( 2, 16 ) byref -> edi "Inlining Arg"
; V206 tmp198 [V206,T234] ( 2, 16 ) struct ( 4) [ebp-0x154] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V207 tmp199 [V207,T235] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V208 tmp200 [V208,T386] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V209 tmp201 [V209,T85] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V210 tmp202 [V210 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V211 tmp203 [V211,T169] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V212 tmp204 [V212 ] ( 2, 8 ) int -> [ebp-0x158] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V213 tmp205 [V213,T303] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V214 tmp206 [V214,T340] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V215 tmp207 [V215,T236] ( 2, 16 ) struct ( 8) [ebp-0x160] do-not-enreg[SB] must-init "Inlining Arg"
;* V216 tmp208 [V216 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V217 tmp209 [V217,T341] ( 2, 8 ) struct ( 8) [ebp-0x168] do-not-enreg[SB] must-init "Inline return value spill temp"
; V218 tmp210 [V218,T21] ( 4, 32 ) struct ( 8) [ebp-0x170] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V219 tmp211 [V219 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V220 tmp212 [V220,T56] ( 3, 24 ) int -> [ebp-0x174] "Inlining Arg"
; V221 tmp213 [V221,T170] ( 2, 16 ) byref -> edi "Inlining Arg"
; V222 tmp214 [V222,T237] ( 2, 16 ) struct ( 4) [ebp-0x178] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V223 tmp215 [V223,T238] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V224 tmp216 [V224,T387] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V225 tmp217 [V225,T86] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V226 tmp218 [V226 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V227 tmp219 [V227,T171] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V228 tmp220 [V228 ] ( 2, 8 ) int -> [ebp-0x17C] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V229 tmp221 [V229,T304] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V230 tmp222 [V230,T342] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V231 tmp223 [V231,T239] ( 2, 16 ) struct ( 8) [ebp-0x184] do-not-enreg[SB] must-init "Inlining Arg"
;* V232 tmp224 [V232 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V233 tmp225 [V233,T343] ( 2, 8 ) struct ( 8) [ebp-0x18C] do-not-enreg[SB] must-init "Inline return value spill temp"
; V234 tmp226 [V234,T22] ( 4, 32 ) struct ( 8) [ebp-0x194] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V235 tmp227 [V235 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V236 tmp228 [V236,T57] ( 3, 24 ) int -> [ebp-0x198] "Inlining Arg"
; V237 tmp229 [V237,T172] ( 2, 16 ) byref -> edi "Inlining Arg"
; V238 tmp230 [V238,T240] ( 2, 16 ) struct ( 4) [ebp-0x19C] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V239 tmp231 [V239,T241] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V240 tmp232 [V240,T388] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V241 tmp233 [V241,T87] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V242 tmp234 [V242 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V243 tmp235 [V243,T173] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V244 tmp236 [V244 ] ( 2, 8 ) int -> [ebp-0x1A0] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V245 tmp237 [V245,T305] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V246 tmp238 [V246,T344] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V247 tmp239 [V247,T242] ( 2, 16 ) struct ( 8) [ebp-0x1A8] do-not-enreg[SB] must-init "Inlining Arg"
;* V248 tmp240 [V248 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V249 tmp241 [V249,T345] ( 2, 8 ) struct ( 8) [ebp-0x1B0] do-not-enreg[SB] must-init "Inline return value spill temp"
; V250 tmp242 [V250,T23] ( 4, 32 ) struct ( 8) [ebp-0x1B8] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V251 tmp243 [V251 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V252 tmp244 [V252,T58] ( 3, 24 ) int -> [ebp-0x1BC] "Inlining Arg"
; V253 tmp245 [V253,T174] ( 2, 16 ) byref -> edi "Inlining Arg"
; V254 tmp246 [V254,T243] ( 2, 16 ) struct ( 4) [ebp-0x1C0] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V255 tmp247 [V255,T244] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V256 tmp248 [V256,T389] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V257 tmp249 [V257,T88] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V258 tmp250 [V258 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V259 tmp251 [V259,T175] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V260 tmp252 [V260 ] ( 2, 8 ) int -> [ebp-0x1C4] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V261 tmp253 [V261,T306] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V262 tmp254 [V262,T346] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V263 tmp255 [V263,T245] ( 2, 16 ) struct ( 8) [ebp-0x1CC] do-not-enreg[SB] must-init "Inlining Arg"
;* V264 tmp256 [V264 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V265 tmp257 [V265,T347] ( 2, 8 ) struct ( 8) [ebp-0x1D4] do-not-enreg[SB] must-init "Inline return value spill temp"
; V266 tmp258 [V266,T24] ( 4, 32 ) struct ( 8) [ebp-0x1DC] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V267 tmp259 [V267 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V268 tmp260 [V268,T59] ( 3, 24 ) int -> [ebp-0x1E0] "Inlining Arg"
; V269 tmp261 [V269,T176] ( 2, 16 ) byref -> edi "Inlining Arg"
; V270 tmp262 [V270,T246] ( 2, 16 ) struct ( 4) [ebp-0x1E4] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V271 tmp263 [V271,T247] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V272 tmp264 [V272,T390] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V273 tmp265 [V273,T89] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V274 tmp266 [V274 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V275 tmp267 [V275,T177] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V276 tmp268 [V276 ] ( 2, 8 ) int -> [ebp-0x1E8] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V277 tmp269 [V277,T307] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V278 tmp270 [V278,T348] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V279 tmp271 [V279,T248] ( 2, 16 ) struct ( 8) [ebp-0x1F0] do-not-enreg[SB] must-init "Inlining Arg"
;* V280 tmp272 [V280 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V281 tmp273 [V281,T349] ( 2, 8 ) struct ( 8) [ebp-0x1F8] do-not-enreg[SB] must-init "Inline return value spill temp"
; V282 tmp274 [V282,T25] ( 4, 32 ) struct ( 8) [ebp-0x200] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V283 tmp275 [V283 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V284 tmp276 [V284,T60] ( 3, 24 ) int -> [ebp-0x204] "Inlining Arg"
; V285 tmp277 [V285,T178] ( 2, 16 ) byref -> edi "Inlining Arg"
; V286 tmp278 [V286,T249] ( 2, 16 ) struct ( 4) [ebp-0x208] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V287 tmp279 [V287,T250] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V288 tmp280 [V288,T391] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V289 tmp281 [V289,T90] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V290 tmp282 [V290 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V291 tmp283 [V291,T179] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V292 tmp284 [V292 ] ( 2, 8 ) int -> [ebp-0x20C] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V293 tmp285 [V293,T308] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V294 tmp286 [V294,T350] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V295 tmp287 [V295,T251] ( 2, 16 ) struct ( 8) [ebp-0x214] do-not-enreg[SB] must-init "Inlining Arg"
;* V296 tmp288 [V296 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V297 tmp289 [V297,T351] ( 2, 8 ) struct ( 8) [ebp-0x21C] do-not-enreg[SB] must-init "Inline return value spill temp"
; V298 tmp290 [V298,T26] ( 4, 32 ) struct ( 8) [ebp-0x224] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V299 tmp291 [V299 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V300 tmp292 [V300,T61] ( 3, 24 ) int -> [ebp-0x228] "Inlining Arg"
; V301 tmp293 [V301,T180] ( 2, 16 ) byref -> edi "Inlining Arg"
; V302 tmp294 [V302,T252] ( 2, 16 ) struct ( 4) [ebp-0x22C] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V303 tmp295 [V303,T253] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V304 tmp296 [V304,T392] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V305 tmp297 [V305,T91] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V306 tmp298 [V306 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V307 tmp299 [V307,T181] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V308 tmp300 [V308 ] ( 2, 8 ) int -> [ebp-0x230] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V309 tmp301 [V309,T309] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V310 tmp302 [V310,T352] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V311 tmp303 [V311,T254] ( 2, 16 ) struct ( 8) [ebp-0x238] do-not-enreg[SB] must-init "Inlining Arg"
;* V312 tmp304 [V312 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V313 tmp305 [V313,T353] ( 2, 8 ) struct ( 8) [ebp-0x240] do-not-enreg[SB] must-init "Inline return value spill temp"
; V314 tmp306 [V314,T27] ( 4, 32 ) struct ( 8) [ebp-0x248] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V315 tmp307 [V315 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V316 tmp308 [V316,T62] ( 3, 24 ) int -> [ebp-0x24C] "Inlining Arg"
; V317 tmp309 [V317,T182] ( 2, 16 ) byref -> edi "Inlining Arg"
; V318 tmp310 [V318,T255] ( 2, 16 ) struct ( 4) [ebp-0x250] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V319 tmp311 [V319,T256] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V320 tmp312 [V320,T393] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V321 tmp313 [V321,T92] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V322 tmp314 [V322 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V323 tmp315 [V323,T183] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V324 tmp316 [V324 ] ( 2, 8 ) int -> [ebp-0x254] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V325 tmp317 [V325,T310] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V326 tmp318 [V326,T354] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V327 tmp319 [V327,T257] ( 2, 16 ) struct ( 8) [ebp-0x25C] do-not-enreg[SB] must-init "Inlining Arg"
;* V328 tmp320 [V328 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V329 tmp321 [V329,T355] ( 2, 8 ) struct ( 8) [ebp-0x264] do-not-enreg[SB] must-init "Inline return value spill temp"
; V330 tmp322 [V330,T28] ( 4, 32 ) struct ( 8) [ebp-0x26C] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V331 tmp323 [V331 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V332 tmp324 [V332,T63] ( 3, 24 ) int -> [ebp-0x270] "Inlining Arg"
; V333 tmp325 [V333,T184] ( 2, 16 ) byref -> edi "Inlining Arg"
; V334 tmp326 [V334,T258] ( 2, 16 ) struct ( 4) [ebp-0x274] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V335 tmp327 [V335,T259] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V336 tmp328 [V336,T394] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V337 tmp329 [V337,T93] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V338 tmp330 [V338 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V339 tmp331 [V339,T185] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V340 tmp332 [V340 ] ( 3, 10 ) int -> [ebp-0x278] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V341 tmp333 [V341,T311] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V342 tmp334 [V342,T356] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V343 tmp335 [V343,T260] ( 2, 16 ) struct ( 8) [ebp-0x280] do-not-enreg[SB] must-init "Inlining Arg"
;* V344 tmp336 [V344 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V345 tmp337 [V345,T357] ( 2, 8 ) struct ( 8) [ebp-0x288] do-not-enreg[SB] must-init "Inline return value spill temp"
; V346 tmp338 [V346,T29] ( 4, 32 ) struct ( 8) [ebp-0x290] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V347 tmp339 [V347 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V348 tmp340 [V348,T64] ( 3, 24 ) int -> [ebp-0x294] "Inlining Arg"
; V349 tmp341 [V349,T186] ( 2, 16 ) byref -> edi "Inlining Arg"
; V350 tmp342 [V350,T261] ( 2, 16 ) struct ( 4) [ebp-0x298] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V351 tmp343 [V351,T262] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V352 tmp344 [V352,T395] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V353 tmp345 [V353,T94] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V354 tmp346 [V354 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V355 tmp347 [V355,T187] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V356 tmp348 [V356 ] ( 2, 8 ) int -> [ebp-0x29C] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V357 tmp349 [V357,T312] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V358 tmp350 [V358,T358] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V359 tmp351 [V359,T263] ( 2, 16 ) struct ( 8) [ebp-0x2A4] do-not-enreg[SB] must-init "Inlining Arg"
;* V360 tmp352 [V360 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V361 tmp353 [V361,T359] ( 2, 8 ) struct ( 8) [ebp-0x2AC] do-not-enreg[SB] must-init "Inline return value spill temp"
; V362 tmp354 [V362,T30] ( 4, 32 ) struct ( 8) [ebp-0x2B4] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V363 tmp355 [V363 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V364 tmp356 [V364,T65] ( 3, 24 ) int -> [ebp-0x2B8] "Inlining Arg"
; V365 tmp357 [V365,T188] ( 2, 16 ) byref -> edi "Inlining Arg"
; V366 tmp358 [V366,T264] ( 2, 16 ) struct ( 4) [ebp-0x2BC] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V367 tmp359 [V367,T265] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V368 tmp360 [V368,T396] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V369 tmp361 [V369,T95] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V370 tmp362 [V370 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V371 tmp363 [V371,T189] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V372 tmp364 [V372 ] ( 2, 8 ) int -> [ebp-0x2C0] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V373 tmp365 [V373,T313] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V374 tmp366 [V374,T360] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V375 tmp367 [V375,T266] ( 2, 16 ) struct ( 8) [ebp-0x2C8] do-not-enreg[SB] must-init "Inlining Arg"
;* V376 tmp368 [V376 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V377 tmp369 [V377,T361] ( 2, 8 ) struct ( 8) [ebp-0x2D0] do-not-enreg[SB] must-init "Inline return value spill temp"
; V378 tmp370 [V378,T31] ( 4, 32 ) struct ( 8) [ebp-0x2D8] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V379 tmp371 [V379 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V380 tmp372 [V380,T66] ( 3, 24 ) int -> [ebp-0x2DC] "Inlining Arg"
; V381 tmp373 [V381,T190] ( 2, 16 ) byref -> edi "Inlining Arg"
; V382 tmp374 [V382,T267] ( 2, 16 ) struct ( 4) [ebp-0x2E0] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V383 tmp375 [V383,T268] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V384 tmp376 [V384,T397] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V385 tmp377 [V385,T96] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V386 tmp378 [V386 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V387 tmp379 [V387,T191] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V388 tmp380 [V388 ] ( 2, 8 ) int -> [ebp-0x2E4] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V389 tmp381 [V389,T314] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V390 tmp382 [V390,T362] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V391 tmp383 [V391,T269] ( 2, 16 ) struct ( 8) [ebp-0x2EC] do-not-enreg[SB] must-init "Inlining Arg"
;* V392 tmp384 [V392 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V393 tmp385 [V393,T363] ( 2, 8 ) struct ( 8) [ebp-0x2F4] do-not-enreg[SB] must-init "Inline return value spill temp"
; V394 tmp386 [V394,T32] ( 4, 32 ) struct ( 8) [ebp-0x2FC] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V395 tmp387 [V395 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V396 tmp388 [V396,T67] ( 3, 24 ) int -> [ebp-0x300] "Inlining Arg"
; V397 tmp389 [V397,T192] ( 2, 16 ) byref -> edi "Inlining Arg"
; V398 tmp390 [V398,T270] ( 2, 16 ) struct ( 4) [ebp-0x304] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V399 tmp391 [V399,T271] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V400 tmp392 [V400,T398] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V401 tmp393 [V401,T97] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V402 tmp394 [V402 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V403 tmp395 [V403,T193] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V404 tmp396 [V404 ] ( 2, 8 ) int -> [ebp-0x308] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V405 tmp397 [V405,T315] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V406 tmp398 [V406,T364] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V407 tmp399 [V407,T272] ( 2, 16 ) struct ( 8) [ebp-0x310] do-not-enreg[SB] must-init "Inlining Arg"
;* V408 tmp400 [V408 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V409 tmp401 [V409,T365] ( 2, 8 ) struct ( 8) [ebp-0x318] do-not-enreg[SB] must-init "Inline return value spill temp"
; V410 tmp402 [V410,T33] ( 4, 32 ) struct ( 8) [ebp-0x320] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V411 tmp403 [V411 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V412 tmp404 [V412,T68] ( 3, 24 ) int -> [ebp-0x324] "Inlining Arg"
; V413 tmp405 [V413,T194] ( 2, 16 ) byref -> edi "Inlining Arg"
; V414 tmp406 [V414,T273] ( 2, 16 ) struct ( 4) [ebp-0x328] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V415 tmp407 [V415,T274] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V416 tmp408 [V416,T399] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V417 tmp409 [V417,T98] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V418 tmp410 [V418 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V419 tmp411 [V419,T195] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V420 tmp412 [V420 ] ( 2, 8 ) int -> [ebp-0x32C] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V421 tmp413 [V421,T316] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V422 tmp414 [V422,T366] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V423 tmp415 [V423,T275] ( 2, 16 ) struct ( 8) [ebp-0x334] do-not-enreg[SB] must-init "Inlining Arg"
;* V424 tmp416 [V424 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V425 tmp417 [V425,T367] ( 2, 8 ) struct ( 8) [ebp-0x33C] do-not-enreg[SB] must-init "Inline return value spill temp"
; V426 tmp418 [V426,T34] ( 4, 32 ) struct ( 8) [ebp-0x344] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V427 tmp419 [V427 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V428 tmp420 [V428,T69] ( 3, 24 ) int -> [ebp-0x348] "Inlining Arg"
; V429 tmp421 [V429,T196] ( 2, 16 ) byref -> edi "Inlining Arg"
; V430 tmp422 [V430,T276] ( 2, 16 ) struct ( 4) [ebp-0x34C] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V431 tmp423 [V431,T277] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V432 tmp424 [V432,T400] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V433 tmp425 [V433,T99] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V434 tmp426 [V434 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V435 tmp427 [V435,T197] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V436 tmp428 [V436 ] ( 2, 8 ) int -> [ebp-0x350] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V437 tmp429 [V437,T317] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V438 tmp430 [V438,T368] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V439 tmp431 [V439,T278] ( 2, 16 ) struct ( 8) [ebp-0x358] do-not-enreg[SB] must-init "Inlining Arg"
;* V440 tmp432 [V440 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V441 tmp433 [V441,T369] ( 2, 8 ) struct ( 8) [ebp-0x360] do-not-enreg[SB] must-init "Inline return value spill temp"
; V442 tmp434 [V442,T35] ( 4, 32 ) struct ( 8) [ebp-0x368] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V443 tmp435 [V443 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V444 tmp436 [V444,T70] ( 3, 24 ) int -> [ebp-0x36C] "Inlining Arg"
; V445 tmp437 [V445,T198] ( 2, 16 ) byref -> edi "Inlining Arg"
; V446 tmp438 [V446,T279] ( 2, 16 ) struct ( 4) [ebp-0x370] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V447 tmp439 [V447,T280] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V448 tmp440 [V448,T401] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V449 tmp441 [V449,T100] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V450 tmp442 [V450 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V451 tmp443 [V451,T199] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V452 tmp444 [V452 ] ( 2, 8 ) int -> [ebp-0x374] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V453 tmp445 [V453,T318] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V454 tmp446 [V454,T370] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V455 tmp447 [V455,T281] ( 2, 16 ) struct ( 8) [ebp-0x37C] do-not-enreg[SB] must-init "Inlining Arg"
;* V456 tmp448 [V456 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V457 tmp449 [V457,T371] ( 2, 8 ) struct ( 8) [ebp-0x384] do-not-enreg[SB] must-init "Inline return value spill temp"
; V458 tmp450 [V458,T36] ( 4, 32 ) struct ( 8) [ebp-0x38C] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V459 tmp451 [V459 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V460 tmp452 [V460,T71] ( 3, 24 ) int -> [ebp-0x390] "Inlining Arg"
; V461 tmp453 [V461,T200] ( 2, 16 ) byref -> edi "Inlining Arg"
; V462 tmp454 [V462,T282] ( 2, 16 ) struct ( 4) [ebp-0x394] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V463 tmp455 [V463,T283] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V464 tmp456 [V464,T402] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V465 tmp457 [V465,T101] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V466 tmp458 [V466 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V467 tmp459 [V467,T201] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V468 tmp460 [V468 ] ( 2, 8 ) int -> [ebp-0x398] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V469 tmp461 [V469,T319] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V470 tmp462 [V470,T372] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V471 tmp463 [V471,T284] ( 2, 16 ) struct ( 8) [ebp-0x3A0] do-not-enreg[SB] must-init "Inlining Arg"
;* V472 tmp464 [V472 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V473 tmp465 [V473,T373] ( 2, 8 ) struct ( 8) [ebp-0x3A8] do-not-enreg[SB] must-init "Inline return value spill temp"
; V474 tmp466 [V474,T37] ( 4, 32 ) struct ( 8) [ebp-0x3B0] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V475 tmp467 [V475 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V476 tmp468 [V476,T72] ( 3, 24 ) int -> [ebp-0x3B4] "Inlining Arg"
; V477 tmp469 [V477,T202] ( 2, 16 ) byref -> edi "Inlining Arg"
; V478 tmp470 [V478,T285] ( 2, 16 ) struct ( 4) [ebp-0x3B8] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V479 tmp471 [V479,T286] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V480 tmp472 [V480,T403] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V481 tmp473 [V481,T102] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V482 tmp474 [V482 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V483 tmp475 [V483,T203] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V484 tmp476 [V484 ] ( 2, 8 ) int -> [ebp-0x3BC] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V485 tmp477 [V485,T320] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V486 tmp478 [V486,T374] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V487 tmp479 [V487,T287] ( 2, 16 ) struct ( 8) [ebp-0x3C4] do-not-enreg[SB] must-init "Inlining Arg"
;* V488 tmp480 [V488 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "impAppendStmt"
; V489 tmp481 [V489,T375] ( 2, 8 ) struct ( 8) [ebp-0x3CC] do-not-enreg[SB] must-init "Inline return value spill temp"
; V490 tmp482 [V490,T38] ( 4, 32 ) struct ( 8) [ebp-0x3D4] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V491 tmp483 [V491 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V492 tmp484 [V492,T73] ( 3, 24 ) int -> [ebp-0x3D8] "Inlining Arg"
; V493 tmp485 [V493,T204] ( 2, 16 ) byref -> edi "Inlining Arg"
; V494 tmp486 [V494,T288] ( 2, 16 ) struct ( 4) [ebp-0x3DC] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V495 tmp487 [V495,T289] ( 2, 16 ) bool -> ecx "Inlining Arg"
;* V496 tmp488 [V496,T404] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V497 tmp489 [V497,T103] ( 3, 16 ) ref -> edx class-hnd "Inlining Arg"
;* V498 tmp490 [V498 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] "Inlining Arg"
; V499 tmp491 [V499,T205] ( 2, 16 ) ref -> edx class-hnd "Inlining Arg"
; V500 tmp492 [V500 ] ( 2, 8 ) int -> [ebp-0x3E0] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V501 tmp493 [V501,T321] ( 3, 8 ) int -> ecx "Inline stloc first use temp"
; V502 tmp494 [V502,T376] ( 2, 8 ) int -> ecx "Inline return value spill temp"
; V503 tmp495 [V503,T290] ( 2, 16 ) struct ( 8) [ebp-0x3E8] do-not-enreg[SB] must-init "Inlining Arg"
; V504 tmp496 [V504,T291] ( 2, 16 ) struct ( 8) [ebp-0x3F0] do-not-enreg[SB] must-init "impAppendStmt"
; V505 tmp497 [V505,T377] ( 2, 8 ) struct ( 8) [ebp-0x3F8] do-not-enreg[SB] must-init "Inline return value spill temp"
; V506 tmp498 [V506,T39] ( 4, 32 ) struct ( 8) [ebp-0x400] do-not-enreg[SFB] must-init "NewObj constructor temp"
;* V507 tmp499 [V507 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SB] ld-addr-op "Inline ldloca(s) first use temp"
; V508 tmp500 [V508,T74] ( 3, 24 ) int -> [ebp-0x404] "Inlining Arg"
; V509 tmp501 [V509,T206] ( 2, 16 ) byref -> edi "Inlining Arg"
; V510 tmp502 [V510,T292] ( 2, 16 ) struct ( 4) [ebp-0x408] do-not-enreg[SFB] must-init "NewObj constructor temp"
; V511 tmp503 [V511,T293] ( 2, 16 ) bool -> ecx "Inlining Arg"
; V512 tmp504 [V512,T207] ( 2, 16 ) ref -> ecx "argument with side effect"
; V513 tmp505 [V513,T03] ( 3,192 ) ref -> ecx "arr expr"
; V514 tmp506 [V514,T04] ( 3,192 ) ref -> edx "arr expr"
; V515 tmp507 [V515,T208] ( 2, 16 ) ref -> edx "argument with side effect"
; V516 EHSlots [V516 ] ( 1, 1 ) blk (16) [ebp-0x20] do-not-enreg[X] must-init addr-exposed "lvaShadowSPslotsVar"
; V517 cse0 [V517,T07] ( 4, 72 ) ref -> ebx "CSE - moderate"
;* V518 cse1 [V518,T405] ( 0, 0 ) int -> zero-ref "CSE - moderate"
; V519 cse2 [V519,T10] ( 2, 36 ) int -> ecx "CSE - moderate"
; V520 cse3 [V520,T02] ( 57,228 ) ref -> edx "CSE - aggressive"
; V521 rat0 [V521,T41] ( 3, 24 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
; TEMP_01 byref -> [ebp-0x410]
;
; Lcl frame size = 1028
G_M36558_IG01:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x404
vzeroupper
vxorps xmm4, xmm4
vmovdqu xmmword ptr [ebp-410H], xmm4
mov eax, -0x3F0
vmovdqu xmmword ptr [ebp+eax-10H], xmm4
vmovdqu xmmword ptr [eax+ebp], xmm4
vmovdqu xmmword ptr [ebp+eax+10H], xmm4
add eax, 48
jne SHORT -5 instr
mov gword ptr [ebp-40CH], ecx
mov eax, ecx
;; bbWeight=1 PerfScore 12.58
G_M36558_IG02:
jmp G_M36558_IG174
;; bbWeight=1 PerfScore 2.00
G_M36558_IG03:
mov ecx, dword ptr [esi+4]
push ecx
lea ecx, bword ptr [esi+8]
mov edx, 61
call hackishModuleName:hackishMethodName()
mov edi, eax
cmp edi, -1
jne SHORT G_M36558_IG04
mov ecx, gword ptr [D1FFAB1EH]
call hackishModuleName:hackishMethodName()
mov ecx, gword ptr [D1FFAB1EH]
mov edx, esi
call System.String:Concat(System.String,System.String):System.String
mov ecx, eax
call hackishModuleName:hackishMethodName()
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 67.00
G_M36558_IG04:
push edi
mov ecx, esi
xor edx, edx
call hackishModuleName:hackishMethodName(int,int):System.String:this
mov ebx, eax
lea edx, [edi+1]
mov ecx, dword ptr [esi+4]
sub ecx, edx
push ecx
mov ecx, esi
call hackishModuleName:hackishMethodName(int,int):System.String:this
mov esi, eax
cmp dword ptr [ebx], ebx
call System.Globalization.CultureInfo:get_CurrentCulture():System.Globalization.CultureInfo
mov ecx, eax
mov eax, dword ptr [eax]
mov eax, dword ptr [eax+48]
call gword ptr [eax+28]hackishModuleName:hackishMethodName()
mov ecx, eax
mov edx, ebx
cmp dword ptr [ecx], ecx
call System.Globalization.TextInfo:ToUpper(System.String):System.String:this
mov ebx, eax
mov edi, 49
mov ecx, 0xD1FFAB1E
mov edx, 13
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
;; bbWeight=4 PerfScore 95.00
G_M36558_IG05:
mov ecx, gword ptr [classVar[0xd1ffab1e]]
cmp edi, dword ptr [ecx+4]
jae G_M36558_IG205
mov edx, gword ptr [ecx+4*edi+8]
mov ecx, ebx
call hackishModuleName:hackishMethodName()
test eax, eax
jne SHORT G_M36558_IG06
dec edi
test edi, edi
jge SHORT G_M36558_IG05
;; bbWeight=32 PerfScore 320.00
G_M36558_IG06:
test edi, edi
jge SHORT G_M36558_IG07
mov ecx, gword ptr [D1FFAB1EH]
mov edx, ebx
call System.String:Concat(System.String,System.String):System.String
mov ecx, eax
call hackishModuleName:hackishMethodName()
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 35.00
G_M36558_IG07:
cmp edi, 49
mov eax, gword ptr [ebp-40CH]
ja G_M36558_IG174
lea ecx, [@RWD00]
mov ecx, dword ptr [ecx+4*edi]
lea edx, G_M36558_IG02
add ecx, edx
jmp ecx
;; bbWeight=4 PerfScore 32.00
G_M36558_IG08:
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 5.00
G_M36558_IG09:
xor ecx, ecx
mov dword ptr [ebp-30H], ecx
mov dword ptr [ebp-2CH], ecx
lea edi, bword ptr [esi+8]
mov ebx, dword ptr [esi+4]
mov ecx, ebx
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG11
;; bbWeight=4 PerfScore 42.00
G_M36558_IG10:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG11:
mov bword ptr [ebp-34H], edi
lea edi, bword ptr [ebp-30H]
lea esi, bword ptr [ebp-34H]
movsd
mov dword ptr [ebp-2CH], ebx
lea edi, bword ptr [ebp-28H]
lea esi, bword ptr [ebp-30H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-44H]
lea esi, bword ptr [ebp-28H]
movsd
movsd
push dword ptr [ebp-40H]
push bword ptr [ebp-44H]
lea ecx, [ebp-3CH]
push ecx
mov ecx, 7
call System.Number:TryParseInt64IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG176
;; bbWeight=4 PerfScore 70.00
G_M36558_IG12:
lea ecx, [classVar[0xd1ffab1e]]
mov edx, dword ptr [ebp-3CH]
mov dword ptr [ecx], edx
mov edx, dword ptr [ebp-38H]
mov dword ptr [ecx+4], edx
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 32.00
G_M36558_IG13:
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 5.00
G_M36558_IG14:
xor ecx, ecx
mov dword ptr [ebp-54H], ecx
mov dword ptr [ebp-50H], ecx
lea edi, bword ptr [esi+8]
mov ebx, dword ptr [esi+4]
mov ecx, ebx
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG16
;; bbWeight=4 PerfScore 42.00
G_M36558_IG15:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG16:
mov bword ptr [ebp-58H], edi
lea edi, bword ptr [ebp-54H]
lea esi, bword ptr [ebp-58H]
movsd
mov dword ptr [ebp-50H], ebx
lea edi, bword ptr [ebp-4CH]
lea esi, bword ptr [ebp-54H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-64H]
lea esi, bword ptr [ebp-4CH]
movsd
movsd
push dword ptr [ebp-60H]
push bword ptr [ebp-64H]
lea ecx, [ebp-5CH]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG177
;; bbWeight=4 PerfScore 70.00
G_M36558_IG17:
mov eax, dword ptr [ebp-5CH]
mov dword ptr [classVar[0xd1ffab1e]], eax
call ByteMark:SetRequestSecs()
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 24.00
G_M36558_IG18:
mov ecx, esi
call ByteMark:getflag(System.String):bool
mov byte ptr [classVar[0xd1ffab1e]], al
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 21.00
G_M36558_IG19:
lea edx, [classVar[0xd1ffab1e]]
call CORINFO_HELP_CHECKED_ASSIGN_REF_ESI
;; bbWeight=4 PerfScore 8.00
G_M36558_IG20:
lea edx, [classVar[0xd1ffab1e]]
mov bword ptr [ebp-410H], edx
mov ecx, gword ptr [classVar[0xd1ffab1e]]
call System.IO.File:AppendText(System.String):System.IO.StreamWriter
mov edx, bword ptr [ebp-410H]
call CORINFO_HELP_CHECKED_ASSIGN_REF_EAX
mov byte ptr [classVar[0xd1ffab1e]], 1
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 40.00
G_M36558_IG21:
mov ecx, gword ptr [D1FFAB1EH]
mov edx, gword ptr [classVar[0xd1ffab1e]]
call hackishModuleName:hackishMethodName()
mov byte ptr [classVar[0xd1ffab1e]], 0
call CORINFO_HELP_ENDCATCH
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=0 PerfScore 0.00
G_M36558_IG22:
mov ecx, esi
call ByteMark:getflag(System.String):bool
mov byte ptr [classVar[0xd1ffab1e]], al
xor edi, edi
mov ebx, gword ptr [classVar[0xd1ffab1e]]
cmp dword ptr [ebx+4], 0
mov eax, gword ptr [ebp-40CH]
jle G_M36558_IG174
cmp byte ptr [classVar[0xd1ffab1e]], 0
sete cl
movzx ecx, cl
;; bbWeight=4 PerfScore 39.00
G_M36558_IG23:
mov edx, ebx
cmp edi, dword ptr [edx+4]
jae G_M36558_IG205
mov edx, gword ptr [edx+4*edi+8]
mov byte ptr [edx+20], cl
inc edi
cmp dword ptr [ebx+4], edi
jg SHORT G_M36558_IG23
;; bbWeight=32 PerfScore 304.00
G_M36558_IG24:
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 8.00
G_M36558_IG25:
mov edi, gword ptr [classVar[0xd1ffab1e]]
mov ebx, gword ptr [classVar[0xd1ffab1e]]
mov ecx, esi
call ByteMark:getflag(System.String):bool
movzx edx, al
mov byte ptr [ebx+20], al
mov byte ptr [edi+20], dl
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 34.00
G_M36558_IG26:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG27:
xor ecx, ecx
mov dword ptr [ebp-74H], ecx
mov dword ptr [ebp-70H], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-78H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG29
;; bbWeight=4 PerfScore 47.00
G_M36558_IG28:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG29:
mov bword ptr [ebp-7CH], edi
lea edi, bword ptr [ebp-74H]
lea esi, bword ptr [ebp-7CH]
movsd
mov esi, dword ptr [ebp-78H]
mov dword ptr [ebp-70H], esi
lea edi, bword ptr [ebp-6CH]
lea esi, bword ptr [ebp-74H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-88H]
lea esi, bword ptr [ebp-6CH]
movsd
movsd
push dword ptr [ebp-84H]
push bword ptr [ebp-88H]
lea ecx, [ebp-80H]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG178
;; bbWeight=4 PerfScore 74.00
G_M36558_IG30:
mov ecx, dword ptr [ebp-80H]
add ecx, 0x8000
cmp ecx, 0xFFFF
ja G_M36558_IG193
;; bbWeight=2 PerfScore 5.00
G_M36558_IG31:
mov ecx, dword ptr [ebp-80H]
mov word ptr [ebx+28], cx
mov ecx, gword ptr [classVar[0xd1ffab1e]]
mov edx, gword ptr [classVar[0xd1ffab1e]]
movsx edx, word ptr [edx+28]
mov word ptr [ecx+28], dx
mov ecx, gword ptr [classVar[0xd1ffab1e]]
mov dword ptr [ecx+12], 1
mov ecx, gword ptr [classVar[0xd1ffab1e]]
mov dword ptr [ecx+12], 1
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 56.00
G_M36558_IG32:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG33:
xor ecx, ecx
mov dword ptr [ebp-98H], ecx
mov dword ptr [ebp-94H], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-9CH], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG35
;; bbWeight=4 PerfScore 47.00
G_M36558_IG34:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG35:
mov bword ptr [ebp-A0H], edi
lea edi, bword ptr [ebp-98H]
lea esi, bword ptr [ebp-A0H]
movsd
mov esi, dword ptr [ebp-9CH]
mov dword ptr [ebp-94H], esi
lea edi, bword ptr [ebp-90H]
lea esi, bword ptr [ebp-98H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-ACH]
lea esi, bword ptr [ebp-90H]
movsd
movsd
push dword ptr [ebp-A8H]
push bword ptr [ebp-ACH]
lea ecx, [ebp-A4H]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG179
;; bbWeight=4 PerfScore 74.00
G_M36558_IG36:
mov ecx, dword ptr [ebp-A4H]
mov dword ptr [ebx+24], ecx
mov ecx, gword ptr [classVar[0xd1ffab1e]]
mov edx, gword ptr [classVar[0xd1ffab1e]]
mov edx, dword ptr [edx+24]
mov dword ptr [ecx+24], edx
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 40.00
G_M36558_IG37:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG38:
xor ecx, ecx
mov dword ptr [ebp-BCH], ecx
mov dword ptr [ebp-B8H], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-C0H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG40
;; bbWeight=4 PerfScore 47.00
G_M36558_IG39:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG40:
mov bword ptr [ebp-C4H], edi
lea edi, bword ptr [ebp-BCH]
lea esi, bword ptr [ebp-C4H]
movsd
mov esi, dword ptr [ebp-C0H]
mov dword ptr [ebp-B8H], esi
lea edi, bword ptr [ebp-B4H]
lea esi, bword ptr [ebp-BCH]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-D0H]
lea esi, bword ptr [ebp-B4H]
movsd
movsd
push dword ptr [ebp-CCH]
push bword ptr [ebp-D0H]
lea ecx, [ebp-C8H]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG180
;; bbWeight=4 PerfScore 74.00
G_M36558_IG41:
mov ecx, dword ptr [ebp-C8H]
mov dword ptr [ebx+16], ecx
mov ecx, gword ptr [classVar[0xd1ffab1e]]
mov eax, gword ptr [classVar[0xd1ffab1e]]
mov eax, dword ptr [eax+16]
mov dword ptr [ecx+16], eax
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 40.00
G_M36558_IG42:
mov edi, gword ptr [classVar[0xd1ffab1e]]
mov ecx, esi
call ByteMark:getflag(System.String):bool
mov byte ptr [edi+20], al
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 25.00
G_M36558_IG43:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG44:
xor ecx, ecx
mov dword ptr [ebp-E0H], ecx
mov dword ptr [ebp-DCH], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-E4H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG46
;; bbWeight=4 PerfScore 47.00
G_M36558_IG45:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG46:
mov bword ptr [ebp-E8H], edi
lea edi, bword ptr [ebp-E0H]
lea esi, bword ptr [ebp-E8H]
movsd
mov esi, dword ptr [ebp-E4H]
mov dword ptr [ebp-DCH], esi
lea edi, bword ptr [ebp-D8H]
lea esi, bword ptr [ebp-E0H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-F4H]
lea esi, bword ptr [ebp-D8H]
movsd
movsd
push dword ptr [ebp-F0H]
push bword ptr [ebp-F4H]
lea ecx, [ebp-ECH]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG181
;; bbWeight=4 PerfScore 74.00
G_M36558_IG47:
mov ecx, dword ptr [ebp-ECH]
mov dword ptr [ebx+24], ecx
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 20.00
G_M36558_IG48:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG49:
xor ecx, ecx
mov dword ptr [ebp-104H], ecx
mov dword ptr [ebp-100H], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-108H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG51
;; bbWeight=4 PerfScore 47.00
G_M36558_IG50:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG51:
mov bword ptr [ebp-10CH], edi
lea edi, bword ptr [ebp-104H]
lea esi, bword ptr [ebp-10CH]
movsd
mov esi, dword ptr [ebp-108H]
mov dword ptr [ebp-100H], esi
lea edi, bword ptr [ebp-FCH]
lea esi, bword ptr [ebp-104H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-118H]
lea esi, bword ptr [ebp-FCH]
movsd
movsd
push dword ptr [ebp-114H]
push bword ptr [ebp-118H]
lea ecx, [ebp-110H]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG182
;; bbWeight=4 PerfScore 74.00
G_M36558_IG52:
mov ecx, dword ptr [ebp-110H]
add ecx, 0x8000
cmp ecx, 0xFFFF
ja G_M36558_IG193
;; bbWeight=2 PerfScore 5.00
G_M36558_IG53:
mov ecx, dword ptr [ebp-110H]
mov word ptr [ebx+28], cx
mov ecx, gword ptr [classVar[0xd1ffab1e]]
mov dword ptr [ecx+12], 1
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 28.00
G_M36558_IG54:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG55:
xor ecx, ecx
mov dword ptr [ebp-128H], ecx
mov dword ptr [ebp-124H], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-12CH], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG57
;; bbWeight=4 PerfScore 47.00
G_M36558_IG56:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG57:
mov bword ptr [ebp-130H], edi
lea edi, bword ptr [ebp-128H]
lea esi, bword ptr [ebp-130H]
movsd
mov esi, dword ptr [ebp-12CH]
mov dword ptr [ebp-124H], esi
lea edi, bword ptr [ebp-120H]
lea esi, bword ptr [ebp-128H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-13CH]
lea esi, bword ptr [ebp-120H]
movsd
movsd
push dword ptr [ebp-138H]
push bword ptr [ebp-13CH]
lea ecx, [ebp-134H]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG183
;; bbWeight=4 PerfScore 74.00
G_M36558_IG58:
mov ecx, dword ptr [ebp-134H]
mov dword ptr [ebx+16], ecx
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 20.00
G_M36558_IG59:
mov edi, gword ptr [classVar[0xd1ffab1e]]
mov ecx, esi
call ByteMark:getflag(System.String):bool
mov byte ptr [edi+20], al
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 25.00
G_M36558_IG60:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG61:
xor ecx, ecx
mov dword ptr [ebp-14CH], ecx
mov dword ptr [ebp-148H], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-150H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG63
;; bbWeight=4 PerfScore 47.00
G_M36558_IG62:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG63:
mov bword ptr [ebp-154H], edi
lea edi, bword ptr [ebp-14CH]
lea esi, bword ptr [ebp-154H]
movsd
mov esi, dword ptr [ebp-150H]
mov dword ptr [ebp-148H], esi
lea edi, bword ptr [ebp-144H]
lea esi, bword ptr [ebp-14CH]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-160H]
lea esi, bword ptr [ebp-144H]
movsd
movsd
push dword ptr [ebp-15CH]
push bword ptr [ebp-160H]
lea ecx, [ebp-158H]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG184
;; bbWeight=4 PerfScore 74.00
G_M36558_IG64:
mov ecx, dword ptr [ebp-158H]
mov dword ptr [ebx+24], ecx
mov ecx, gword ptr [classVar[0xd1ffab1e]]
mov dword ptr [ecx+12], 1
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 28.00
G_M36558_IG65:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG66:
xor ecx, ecx
mov dword ptr [ebp-170H], ecx
mov dword ptr [ebp-16CH], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-174H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG68
;; bbWeight=4 PerfScore 47.00
G_M36558_IG67:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG68:
mov bword ptr [ebp-178H], edi
lea edi, bword ptr [ebp-170H]
lea esi, bword ptr [ebp-178H]
movsd
mov esi, dword ptr [ebp-174H]
mov dword ptr [ebp-16CH], esi
lea edi, bword ptr [ebp-168H]
lea esi, bword ptr [ebp-170H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-184H]
lea esi, bword ptr [ebp-168H]
movsd
movsd
push dword ptr [ebp-180H]
push bword ptr [ebp-184H]
lea ecx, [ebp-17CH]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG185
;; bbWeight=4 PerfScore 74.00
G_M36558_IG69:
mov ecx, dword ptr [ebp-17CH]
mov dword ptr [ebx+28], ecx
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 20.00
G_M36558_IG70:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG71:
xor ecx, ecx
mov dword ptr [ebp-194H], ecx
mov dword ptr [ebp-190H], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-198H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG73
;; bbWeight=4 PerfScore 47.00
G_M36558_IG72:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG73:
mov bword ptr [ebp-19CH], edi
lea edi, bword ptr [ebp-194H]
lea esi, bword ptr [ebp-19CH]
movsd
mov esi, dword ptr [ebp-198H]
mov dword ptr [ebp-190H], esi
lea edi, bword ptr [ebp-18CH]
lea esi, bword ptr [ebp-194H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-1A8H]
lea esi, bword ptr [ebp-18CH]
movsd
movsd
push dword ptr [ebp-1A4H]
push bword ptr [ebp-1A8H]
lea ecx, [ebp-1A0H]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG186
;; bbWeight=4 PerfScore 74.00
G_M36558_IG74:
mov ecx, dword ptr [ebp-1A0H]
mov dword ptr [ebx+16], ecx
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 20.00
G_M36558_IG75:
mov edi, gword ptr [classVar[0xd1ffab1e]]
mov ebx, gword ptr [classVar[0xd1ffab1e]]
mov ecx, esi
call ByteMark:getflag(System.String):bool
movzx edx, al
mov byte ptr [ebx+20], al
mov byte ptr [edi+20], dl
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 34.00
G_M36558_IG76:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG77:
xor ecx, ecx
mov dword ptr [ebp-1B8H], ecx
mov dword ptr [ebp-1B4H], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-1BCH], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG79
;; bbWeight=4 PerfScore 47.00
G_M36558_IG78:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG79:
mov bword ptr [ebp-1C0H], edi
lea edi, bword ptr [ebp-1B8H]
lea esi, bword ptr [ebp-1C0H]
movsd
mov esi, dword ptr [ebp-1BCH]
mov dword ptr [ebp-1B4H], esi
lea edi, bword ptr [ebp-1B0H]
lea esi, bword ptr [ebp-1B8H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-1CCH]
lea esi, bword ptr [ebp-1B0H]
movsd
movsd
push dword ptr [ebp-1C8H]
push bword ptr [ebp-1CCH]
lea ecx, [ebp-1C4H]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG187
;; bbWeight=4 PerfScore 74.00
G_M36558_IG80:
mov ecx, dword ptr [ebp-1C4H]
mov dword ptr [ebx+24], ecx
mov ecx, gword ptr [classVar[0xd1ffab1e]]
mov edx, gword ptr [classVar[0xd1ffab1e]]
mov edx, dword ptr [edx+24]
mov dword ptr [ecx+24], edx
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 40.00
G_M36558_IG81:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG82:
xor ecx, ecx
mov dword ptr [ebp-1DCH], ecx
mov dword ptr [ebp-1D8H], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-1E0H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG84
;; bbWeight=4 PerfScore 47.00
G_M36558_IG83:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG84:
mov bword ptr [ebp-1E4H], edi
lea edi, bword ptr [ebp-1DCH]
lea esi, bword ptr [ebp-1E4H]
movsd
mov esi, dword ptr [ebp-1E0H]
mov dword ptr [ebp-1D8H], esi
lea edi, bword ptr [ebp-1D4H]
lea esi, bword ptr [ebp-1DCH]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-1F0H]
lea esi, bword ptr [ebp-1D4H]
movsd
movsd
push dword ptr [ebp-1ECH]
push bword ptr [ebp-1F0H]
lea ecx, [ebp-1E8H]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG188
;; bbWeight=4 PerfScore 74.00
G_M36558_IG85:
mov ecx, dword ptr [ebp-1E8H]
mov dword ptr [ebx+28], ecx
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 20.00
G_M36558_IG86:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG87:
xor ecx, ecx
mov dword ptr [ebp-200H], ecx
mov dword ptr [ebp-1FCH], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-204H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG89
;; bbWeight=4 PerfScore 47.00
G_M36558_IG88:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG89:
mov bword ptr [ebp-208H], edi
lea edi, bword ptr [ebp-200H]
lea esi, bword ptr [ebp-208H]
movsd
mov esi, dword ptr [ebp-204H]
mov dword ptr [ebp-1FCH], esi
lea edi, bword ptr [ebp-1F8H]
lea esi, bword ptr [ebp-200H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-214H]
lea esi, bword ptr [ebp-1F8H]
movsd
movsd
push dword ptr [ebp-210H]
push bword ptr [ebp-214H]
lea ecx, [ebp-20CH]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG189
;; bbWeight=4 PerfScore 74.00
G_M36558_IG90:
mov ecx, dword ptr [ebp-20CH]
mov dword ptr [ebx+16], ecx
mov ecx, gword ptr [classVar[0xd1ffab1e]]
mov eax, gword ptr [classVar[0xd1ffab1e]]
mov eax, dword ptr [eax+16]
mov dword ptr [ecx+16], eax
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 40.00
G_M36558_IG91:
mov edi, gword ptr [classVar[0xd1ffab1e]]
mov ecx, esi
call ByteMark:getflag(System.String):bool
mov byte ptr [edi+20], al
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 25.00
G_M36558_IG92:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG93:
xor ecx, ecx
mov dword ptr [ebp-224H], ecx
mov dword ptr [ebp-220H], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-228H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG95
;; bbWeight=4 PerfScore 47.00
G_M36558_IG94:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG95:
mov bword ptr [ebp-22CH], edi
lea edi, bword ptr [ebp-224H]
lea esi, bword ptr [ebp-22CH]
movsd
mov esi, dword ptr [ebp-228H]
mov dword ptr [ebp-220H], esi
lea edi, bword ptr [ebp-21CH]
lea esi, bword ptr [ebp-224H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-238H]
lea esi, bword ptr [ebp-21CH]
movsd
movsd
push dword ptr [ebp-234H]
push bword ptr [ebp-238H]
lea ecx, [ebp-230H]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG190
;; bbWeight=4 PerfScore 74.00
G_M36558_IG96:
mov ecx, dword ptr [ebp-230H]
mov dword ptr [ebx+24], ecx
mov ecx, gword ptr [classVar[0xd1ffab1e]]
mov dword ptr [ecx+12], 1
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 28.00
G_M36558_IG97:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG98:
xor ecx, ecx
mov dword ptr [ebp-248H], ecx
mov dword ptr [ebp-244H], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-24CH], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG100
;; bbWeight=4 PerfScore 47.00
G_M36558_IG99:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG100:
mov bword ptr [ebp-250H], edi
lea edi, bword ptr [ebp-248H]
lea esi, bword ptr [ebp-250H]
movsd
mov esi, dword ptr [ebp-24CH]
mov dword ptr [ebp-244H], esi
lea edi, bword ptr [ebp-240H]
lea esi, bword ptr [ebp-248H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-25CH]
lea esi, bword ptr [ebp-240H]
movsd
movsd
push dword ptr [ebp-258H]
push bword ptr [ebp-25CH]
lea ecx, [ebp-254H]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG191
;; bbWeight=4 PerfScore 74.00
G_M36558_IG101:
mov ecx, dword ptr [ebp-254H]
mov dword ptr [ebx+16], ecx
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 20.00
G_M36558_IG102:
mov edi, gword ptr [classVar[0xd1ffab1e]]
mov ebx, gword ptr [classVar[0xd1ffab1e]]
mov ecx, esi
call ByteMark:getflag(System.String):bool
movzx edx, al
mov byte ptr [ebx+20], al
mov byte ptr [edi+20], dl
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 34.00
G_M36558_IG103:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG104:
xor ecx, ecx
mov dword ptr [ebp-26CH], ecx
mov dword ptr [ebp-268H], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-270H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG106
;; bbWeight=4 PerfScore 47.00
G_M36558_IG105:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG106:
mov bword ptr [ebp-274H], edi
lea edi, bword ptr [ebp-26CH]
lea esi, bword ptr [ebp-274H]
movsd
mov esi, dword ptr [ebp-270H]
mov dword ptr [ebp-268H], esi
lea edi, bword ptr [ebp-264H]
lea esi, bword ptr [ebp-26CH]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-280H]
lea esi, bword ptr [ebp-264H]
movsd
movsd
push dword ptr [ebp-27CH]
push bword ptr [ebp-280H]
lea ecx, [ebp-278H]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG192
;; bbWeight=4 PerfScore 74.00
G_M36558_IG107:
mov ecx, dword ptr [ebp-278H]
add ecx, 0x8000
cmp ecx, 0xFFFF
ja G_M36558_IG193
;; bbWeight=2 PerfScore 5.00
G_M36558_IG108:
mov ecx, dword ptr [ebp-278H]
mov word ptr [ebx+22], cx
mov ecx, gword ptr [classVar[0xd1ffab1e]]
mov edx, gword ptr [classVar[0xd1ffab1e]]
movsx edx, word ptr [edx+22]
mov word ptr [ecx+22], dx
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 40.00
G_M36558_IG109:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG110:
xor ecx, ecx
mov dword ptr [ebp-290H], ecx
mov dword ptr [ebp-28CH], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-294H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG112
;; bbWeight=4 PerfScore 47.00
G_M36558_IG111:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG112:
mov bword ptr [ebp-298H], edi
lea edi, bword ptr [ebp-290H]
lea esi, bword ptr [ebp-298H]
movsd
mov esi, dword ptr [ebp-294H]
mov dword ptr [ebp-28CH], esi
lea edi, bword ptr [ebp-288H]
lea esi, bword ptr [ebp-290H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-2A4H]
lea esi, bword ptr [ebp-288H]
movsd
movsd
push dword ptr [ebp-2A0H]
push bword ptr [ebp-2A4H]
lea ecx, [ebp-29CH]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG194
;; bbWeight=4 PerfScore 74.00
G_M36558_IG113:
mov ecx, dword ptr [ebp-29CH]
mov dword ptr [ebx+16], ecx
mov ecx, gword ptr [classVar[0xd1ffab1e]]
mov eax, gword ptr [classVar[0xd1ffab1e]]
mov eax, dword ptr [eax+16]
mov dword ptr [ecx+16], eax
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 40.00
G_M36558_IG114:
mov edi, gword ptr [classVar[0xd1ffab1e]]
mov ecx, esi
call ByteMark:getflag(System.String):bool
mov byte ptr [edi+20], al
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 25.00
G_M36558_IG115:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG116:
xor ecx, ecx
mov dword ptr [ebp-2B4H], ecx
mov dword ptr [ebp-2B0H], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-2B8H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG118
;; bbWeight=4 PerfScore 47.00
G_M36558_IG117:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG118:
mov bword ptr [ebp-2BCH], edi
lea edi, bword ptr [ebp-2B4H]
lea esi, bword ptr [ebp-2BCH]
movsd
mov esi, dword ptr [ebp-2B8H]
mov dword ptr [ebp-2B0H], esi
lea edi, bword ptr [ebp-2ACH]
lea esi, bword ptr [ebp-2B4H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-2C8H]
lea esi, bword ptr [ebp-2ACH]
movsd
movsd
push dword ptr [ebp-2C4H]
push bword ptr [ebp-2C8H]
lea ecx, [ebp-2C0H]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG195
;; bbWeight=4 PerfScore 74.00
G_M36558_IG119:
mov ecx, dword ptr [ebp-2C0H]
mov dword ptr [ebx+24], ecx
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 20.00
G_M36558_IG120:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG121:
xor ecx, ecx
mov dword ptr [ebp-2D8H], ecx
mov dword ptr [ebp-2D4H], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-2DCH], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG123
;; bbWeight=4 PerfScore 47.00
G_M36558_IG122:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG123:
mov bword ptr [ebp-2E0H], edi
lea edi, bword ptr [ebp-2D8H]
lea esi, bword ptr [ebp-2E0H]
movsd
mov esi, dword ptr [ebp-2DCH]
mov dword ptr [ebp-2D4H], esi
lea edi, bword ptr [ebp-2D0H]
lea esi, bword ptr [ebp-2D8H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-2ECH]
lea esi, bword ptr [ebp-2D0H]
movsd
movsd
push dword ptr [ebp-2E8H]
push bword ptr [ebp-2ECH]
lea ecx, [ebp-2E4H]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG196
;; bbWeight=4 PerfScore 74.00
G_M36558_IG124:
mov ecx, dword ptr [ebp-2E4H]
mov dword ptr [ebx+28], ecx
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 20.00
G_M36558_IG125:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG126:
xor ecx, ecx
mov dword ptr [ebp-2FCH], ecx
mov dword ptr [ebp-2F8H], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-300H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG128
;; bbWeight=4 PerfScore 47.00
G_M36558_IG127:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG128:
mov bword ptr [ebp-304H], edi
lea edi, bword ptr [ebp-2FCH]
lea esi, bword ptr [ebp-304H]
movsd
mov esi, dword ptr [ebp-300H]
mov dword ptr [ebp-2F8H], esi
lea edi, bword ptr [ebp-2F4H]
lea esi, bword ptr [ebp-2FCH]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-310H]
lea esi, bword ptr [ebp-2F4H]
movsd
movsd
push dword ptr [ebp-30CH]
push bword ptr [ebp-310H]
lea ecx, [ebp-308H]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG197
;; bbWeight=4 PerfScore 74.00
G_M36558_IG129:
mov ecx, dword ptr [ebp-308H]
mov dword ptr [ebx+16], ecx
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 20.00
G_M36558_IG130:
mov edi, gword ptr [classVar[0xd1ffab1e]]
mov ecx, esi
call ByteMark:getflag(System.String):bool
mov byte ptr [edi+20], al
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 25.00
G_M36558_IG131:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG132:
xor ecx, ecx
mov dword ptr [ebp-320H], ecx
mov dword ptr [ebp-31CH], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-324H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG134
;; bbWeight=4 PerfScore 47.00
G_M36558_IG133:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG134:
mov bword ptr [ebp-328H], edi
lea edi, bword ptr [ebp-320H]
lea esi, bword ptr [ebp-328H]
movsd
mov esi, dword ptr [ebp-324H]
mov dword ptr [ebp-31CH], esi
lea edi, bword ptr [ebp-318H]
lea esi, bword ptr [ebp-320H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-334H]
lea esi, bword ptr [ebp-318H]
movsd
movsd
push dword ptr [ebp-330H]
push bword ptr [ebp-334H]
lea ecx, [ebp-32CH]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG198
;; bbWeight=4 PerfScore 74.00
G_M36558_IG135:
mov ecx, dword ptr [ebp-32CH]
mov dword ptr [ebx+24], ecx
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 20.00
G_M36558_IG136:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG137:
xor ecx, ecx
mov dword ptr [ebp-344H], ecx
mov dword ptr [ebp-340H], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-348H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG139
;; bbWeight=4 PerfScore 47.00
G_M36558_IG138:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG139:
mov bword ptr [ebp-34CH], edi
lea edi, bword ptr [ebp-344H]
lea esi, bword ptr [ebp-34CH]
movsd
mov esi, dword ptr [ebp-348H]
mov dword ptr [ebp-340H], esi
lea edi, bword ptr [ebp-33CH]
lea esi, bword ptr [ebp-344H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-358H]
lea esi, bword ptr [ebp-33CH]
movsd
movsd
push dword ptr [ebp-354H]
push bword ptr [ebp-358H]
lea ecx, [ebp-350H]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG199
;; bbWeight=4 PerfScore 74.00
G_M36558_IG140:
mov ecx, dword ptr [ebp-350H]
mov dword ptr [ebx+28], ecx
mov ecx, gword ptr [classVar[0xd1ffab1e]]
mov dword ptr [ecx+12], 1
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 28.00
G_M36558_IG141:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG142:
xor ecx, ecx
mov dword ptr [ebp-368H], ecx
mov dword ptr [ebp-364H], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-36CH], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG144
;; bbWeight=4 PerfScore 47.00
G_M36558_IG143:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG144:
mov bword ptr [ebp-370H], edi
lea edi, bword ptr [ebp-368H]
lea esi, bword ptr [ebp-370H]
movsd
mov esi, dword ptr [ebp-36CH]
mov dword ptr [ebp-364H], esi
lea edi, bword ptr [ebp-360H]
lea esi, bword ptr [ebp-368H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-37CH]
lea esi, bword ptr [ebp-360H]
movsd
movsd
push dword ptr [ebp-378H]
push bword ptr [ebp-37CH]
lea ecx, [ebp-374H]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG200
;; bbWeight=4 PerfScore 74.00
G_M36558_IG145:
mov ecx, dword ptr [ebp-374H]
mov dword ptr [ebx+16], ecx
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 20.00
G_M36558_IG146:
mov edi, gword ptr [classVar[0xd1ffab1e]]
mov ebx, gword ptr [classVar[0xd1ffab1e]]
mov ecx, esi
call ByteMark:getflag(System.String):bool
movzx edx, al
mov byte ptr [ebx+20], al
mov byte ptr [edi+20], dl
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 34.00
G_M36558_IG147:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG148:
xor ecx, ecx
mov dword ptr [ebp-38CH], ecx
mov dword ptr [ebp-388H], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-390H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG150
;; bbWeight=4 PerfScore 47.00
G_M36558_IG149:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG150:
mov bword ptr [ebp-394H], edi
lea edi, bword ptr [ebp-38CH]
lea esi, bword ptr [ebp-394H]
movsd
mov esi, dword ptr [ebp-390H]
mov dword ptr [ebp-388H], esi
lea edi, bword ptr [ebp-384H]
lea esi, bword ptr [ebp-38CH]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-3A0H]
lea esi, bword ptr [ebp-384H]
movsd
movsd
push dword ptr [ebp-39CH]
push bword ptr [ebp-3A0H]
lea ecx, [ebp-398H]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG201
;; bbWeight=4 PerfScore 74.00
G_M36558_IG151:
mov ecx, dword ptr [ebp-398H]
mov dword ptr [ebx+32], ecx
mov ecx, gword ptr [classVar[0xd1ffab1e]]
mov edx, gword ptr [classVar[0xd1ffab1e]]
mov edx, dword ptr [edx+32]
mov dword ptr [ecx+32], edx
mov ecx, gword ptr [classVar[0xd1ffab1e]]
mov dword ptr [ecx+12], 1
mov ecx, gword ptr [classVar[0xd1ffab1e]]
mov dword ptr [ecx+12], 1
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 56.00
G_M36558_IG152:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG153:
xor ecx, ecx
mov dword ptr [ebp-3B0H], ecx
mov dword ptr [ebp-3ACH], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-3B4H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG155
;; bbWeight=4 PerfScore 47.00
G_M36558_IG154:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG155:
mov bword ptr [ebp-3B8H], edi
lea edi, bword ptr [ebp-3B0H]
lea esi, bword ptr [ebp-3B8H]
movsd
mov esi, dword ptr [ebp-3B4H]
mov dword ptr [ebp-3ACH], esi
lea edi, bword ptr [ebp-3A8H]
lea esi, bword ptr [ebp-3B0H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-3C4H]
lea esi, bword ptr [ebp-3A8H]
movsd
movsd
push dword ptr [ebp-3C0H]
push bword ptr [ebp-3C4H]
lea ecx, [ebp-3BCH]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG202
;; bbWeight=4 PerfScore 74.00
G_M36558_IG156:
mov ecx, dword ptr [ebp-3BCH]
mov dword ptr [ebx+16], ecx
mov ecx, gword ptr [classVar[0xd1ffab1e]]
mov eax, gword ptr [classVar[0xd1ffab1e]]
mov eax, dword ptr [eax+16]
mov dword ptr [ecx+16], eax
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 40.00
G_M36558_IG157:
mov edi, gword ptr [classVar[0xd1ffab1e]]
mov ecx, esi
call ByteMark:getflag(System.String):bool
mov byte ptr [edi+20], al
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 25.00
G_M36558_IG158:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG159:
xor ecx, ecx
mov dword ptr [ebp-3D4H], ecx
mov dword ptr [ebp-3D0H], ecx
lea edi, bword ptr [esi+8]
mov edx, dword ptr [esi+4]
mov esi, edx
mov dword ptr [ebp-3D8H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
test ecx, ecx
jne SHORT G_M36558_IG161
;; bbWeight=4 PerfScore 47.00
G_M36558_IG160:
mov ecx, edx
call hackishModuleName:hackishMethodName()
;; bbWeight=2 PerfScore 2.50
G_M36558_IG161:
mov bword ptr [ebp-3DCH], edi
lea edi, bword ptr [ebp-3D4H]
lea esi, bword ptr [ebp-3DCH]
movsd
mov esi, dword ptr [ebp-3D8H]
mov dword ptr [ebp-3D0H], esi
lea edi, bword ptr [ebp-3CCH]
lea esi, bword ptr [ebp-3D4H]
movsd
movsd
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
lea edi, bword ptr [ebp-3E8H]
lea esi, bword ptr [ebp-3CCH]
movsd
movsd
push dword ptr [ebp-3E4H]
push bword ptr [ebp-3E8H]
lea ecx, [ebp-3E0H]
push ecx
mov ecx, 7
call System.Number:TryParseInt32IntegerStyle()
mov ecx, eax
test ecx, ecx
jne G_M36558_IG203
;; bbWeight=4 PerfScore 74.00
G_M36558_IG162:
mov edx, dword ptr [ebp-3E0H]
mov dword ptr [ebx+24], edx
mov edx, gword ptr [classVar[0xd1ffab1e]]
mov dword ptr [edx+12], 1
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 28.00
G_M36558_IG163:
mov ebx, gword ptr [classVar[0xd1ffab1e]]
test esi, esi
je G_M36558_IG204
;; bbWeight=4 PerfScore 9.00
G_M36558_IG164:
xor edx, edx
mov dword ptr [ebp-400H], edx
mov dword ptr [ebp-3FCH], edx
lea edi, bword ptr [esi+8]
mov ecx, dword ptr [esi+4]
mov esi, ecx
mov dword ptr [ebp-404H], esi
mov ecx, esi
not ecx
shr ecx, 31
mov edx, gword ptr [D1FFAB1EH]
push edx
call System.Diagnostics.Debug:Assert(bool,System.String,System.String)
mov bword ptr [ebp-408H], edi
lea edi, bword ptr [ebp-400H]
lea esi, bword ptr [ebp-408H]
movsd
mov esi, dword ptr [ebp-404H]
mov dword ptr [ebp-3FCH], esi
lea edi, bword ptr [ebp-3F8H]
lea esi, bword ptr [ebp-400H]
movsd
movsd
lea edi, bword ptr [ebp-3F0H]
lea esi, bword ptr [ebp-3F8H]
movsd
movsd
push dword ptr [ebp-3ECH]
push bword ptr [ebp-3F0H]
call System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov edx, eax
mov ecx, 7
call System.Number:ParseInt32(System.ReadOnlySpan`1[Char],int,System.Globalization.NumberFormatInfo):int
mov dword ptr [ebx+16], eax
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 128.00
G_M36558_IG165:
mov ecx, esi
call System.Int32:Parse(System.String):int
mov dword ptr [classVar[0xd1ffab1e]], eax
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 21.00
G_M36558_IG166:
mov edi, gword ptr [classVar[0xd1ffab1e]]
mov ecx, esi
call ByteMark:getflag(System.String):bool
mov byte ptr [edi+20], al
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 25.00
G_M36558_IG167:
mov edi, gword ptr [classVar[0xd1ffab1e]]
mov ecx, esi
call ByteMark:getflag(System.String):bool
mov byte ptr [edi+20], al
mov eax, gword ptr [ebp-40CH]
jmp G_M36558_IG174
;; bbWeight=4 PerfScore 25.00
G_M36558_IG168:
mov edi, gword ptr [classVar[0xd1ffab1e]]
mov ecx, esi
call ByteMark:getflag(System.String):bool
mov byte ptr [edi+20], al
mov eax, gword ptr [ebp-40CH]
jmp SHORT G_M36558_IG174
;; bbWeight=4 PerfScore 25.00
G_M36558_IG169:
mov edi, gword ptr [classVar[0xd1ffab1e]]
mov ecx, esi
call ByteMark:getflag(System.String):bool
mov byte ptr [edi+20], al
mov eax, gword ptr [ebp-40CH]
jmp SHORT G_M36558_IG174
;; bbWeight=4 PerfScore 25.00
G_M36558_IG170:
mov edi, gword ptr [classVar[0xd1ffab1e]]
mov ecx, esi
call ByteMark:getflag(System.String):bool
mov byte ptr [edi+20], al
mov eax, gword ptr [ebp-40CH]
jmp SHORT G_M36558_IG174
;; bbWeight=4 PerfScore 25.00
G_M36558_IG171:
mov edi, gword ptr [classVar[0xd1ffab1e]]
mov ecx, esi
call ByteMark:getflag(System.String):bool
mov byte ptr [edi+20], al
mov eax, gword ptr [ebp-40CH]
jmp SHORT G_M36558_IG174
;; bbWeight=4 PerfScore 25.00
G_M36558_IG172:
mov edi, gword ptr [classVar[0xd1ffab1e]]
mov ecx, esi
call ByteMark:getflag(System.String):bool
mov byte ptr [edi+20], al
mov eax, gword ptr [ebp-40CH]
jmp SHORT G_M36558_IG174
;; bbWeight=4 PerfScore 25.00
G_M36558_IG173:
mov edi, gword ptr [classVar[0xd1ffab1e]]
mov ecx, esi
call ByteMark:getflag(System.String):bool
mov byte ptr [edi+20], al
mov eax, gword ptr [ebp-40CH]
;; bbWeight=4 PerfScore 17.00
G_M36558_IG174:
mov ecx, eax
mov edx, dword ptr [eax]
mov edx, dword ptr [edx+48]
call gword ptr [edx+28]hackishModuleName:hackishMethodName():System.String:this
mov esi, eax
test esi, esi
jne G_M36558_IG03
;; bbWeight=8 PerfScore 70.00
G_M36558_IG175:
lea esp, [ebp-0CH]
pop ebx
pop esi
pop edi
pop ebp
ret
;; bbWeight=1 PerfScore 3.50
G_M36558_IG176:
mov edx, 11
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG177:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG178:
mov edx, 7
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG179:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG180:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG181:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG182:
mov edx, 7
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG183:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG184:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG185:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG186:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG187:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG188:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG189:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG190:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG191:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG192:
mov edx, 7
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG193:
mov ecx, 7
call System.Number:ThrowOverflowException(int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG194:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG195:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG196:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG197:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG198:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG199:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG200:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG201:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG202:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG203:
mov edx, 9
call System.Number:ThrowOverflowOrFormatException(int,int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG204:
mov ecx, 17
call System.ThrowHelper:ThrowArgumentNullException(int)
int3
;; bbWeight=0 PerfScore 0.00
G_M36558_IG205:
call CORINFO_HELP_RNGCHKFAIL
int3
;; bbWeight=0 PerfScore 0.00
RWD00 dd G_M36558_IG08 - G_M36558_IG02
dd G_M36558_IG13 - G_M36558_IG02
dd G_M36558_IG18 - G_M36558_IG02
dd G_M36558_IG19 - G_M36558_IG02
dd G_M36558_IG22 - G_M36558_IG02
dd G_M36558_IG25 - G_M36558_IG02
dd G_M36558_IG26 - G_M36558_IG02
dd G_M36558_IG32 - G_M36558_IG02
dd G_M36558_IG37 - G_M36558_IG02
dd G_M36558_IG42 - G_M36558_IG02
dd G_M36558_IG43 - G_M36558_IG02
dd G_M36558_IG48 - G_M36558_IG02
dd G_M36558_IG54 - G_M36558_IG02
dd G_M36558_IG59 - G_M36558_IG02
dd G_M36558_IG60 - G_M36558_IG02
dd G_M36558_IG65 - G_M36558_IG02
dd G_M36558_IG70 - G_M36558_IG02
dd G_M36558_IG75 - G_M36558_IG02
dd G_M36558_IG76 - G_M36558_IG02
dd G_M36558_IG81 - G_M36558_IG02
dd G_M36558_IG86 - G_M36558_IG02
dd G_M36558_IG91 - G_M36558_IG02
dd G_M36558_IG92 - G_M36558_IG02
dd G_M36558_IG97 - G_M36558_IG02
dd G_M36558_IG102 - G_M36558_IG02
dd G_M36558_IG103 - G_M36558_IG02
dd G_M36558_IG109 - G_M36558_IG02
dd G_M36558_IG114 - G_M36558_IG02
dd G_M36558_IG115 - G_M36558_IG02
dd G_M36558_IG120 - G_M36558_IG02
dd G_M36558_IG125 - G_M36558_IG02
dd G_M36558_IG130 - G_M36558_IG02
dd G_M36558_IG131 - G_M36558_IG02
dd G_M36558_IG136 - G_M36558_IG02
dd G_M36558_IG141 - G_M36558_IG02
dd G_M36558_IG146 - G_M36558_IG02
dd G_M36558_IG147 - G_M36558_IG02
dd G_M36558_IG152 - G_M36558_IG02
dd G_M36558_IG157 - G_M36558_IG02
dd G_M36558_IG158 - G_M36558_IG02
dd G_M36558_IG163 - G_M36558_IG02
dd G_M36558_IG165 - G_M36558_IG02
dd G_M36558_IG166 - G_M36558_IG02
dd G_M36558_IG167 - G_M36558_IG02
dd G_M36558_IG168 - G_M36558_IG02
dd G_M36558_IG169 - G_M36558_IG02
dd G_M36558_IG170 - G_M36558_IG02
dd G_M36558_IG171 - G_M36558_IG02
dd G_M36558_IG172 - G_M36558_IG02
dd G_M36558_IG173 - G_M36558_IG02
; Total bytes of code 6937, prolog size 62, PerfScore 6761.78, instruction count 1729, allocated bytes for code 6942 (MethodHash=6e137131) for method ByteMark:read_comfile(System.IO.StreamReader)
; ============================================================
*************** EH table for ByteMark:read_comfile(System.IO.StreamReader)
1 EH table entries, 1 total EH entries reported to VM
EH#0: try [G_M36558_IG20..G_M36558_IG21) handled by [G_M36558_IG21..G_M36558_IG22) (class: 100000B)
The changes were making EH-writethru enable for variables having single def. Below, |
Here is another case where resolution introduces unneeded movs: public void Case5(int x, int y)
{
var a = array;
for (int i = 0;i < 1000; i++)
{
try
{
a[i] = x + y;
}
catch { }
}
} Assembly code; Assembly listing for method MiniBench.Tweet:Case5(int,int):this
; Emitting BLENDED_CODE for X64 CPU with AVX - Windows
; optimized code
; rbp based frame
; fully interruptible
; Final local variable assignments
;
; V00 this [V00,T04] ( 3, 3 ) ref -> rcx this class-hnd
; V01 arg1 [V01,T02] ( 3, 6 ) int -> [rbp+18H] EH EH-live
; V02 arg2 [V02,T03] ( 3, 6 ) int -> [rbp+20H] EH EH-live
; V03 loc0 [V03,T01] ( 3, 8 ) ref -> [rbp-18H] EH class-hnd EH-live
; V04 loc1 [V04,T00] ( 6, 33 ) int -> [rbp-0CH] EH do-not-enreg[H] EH-live
; V05 OutArgs [V05 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff"
; V07 PSPSym [V07 ] ( 1, 1 ) long -> [rbp-20H] do-not-enreg[X] addr-exposed "PSPSym"
;
; Lcl frame size = 56
G_M51048_IG01:
push rbp
push rsi
sub rsp, 56
lea rbp, [rsp+40H]
mov qword ptr [rbp-20H], rsp
mov dword ptr [rbp+18H], edx
mov dword ptr [rbp+20H], r8d
;; bbWeight=1 PerfScore 5.75
G_M51048_IG02:
mov rsi, gword ptr [rcx+8]
mov gword ptr [rbp-18H], rsi
xor eax, eax
mov dword ptr [rbp-0CH], eax
;; bbWeight=1 PerfScore 4.25
G_M51048_IG03:
mov eax, dword ptr [rsi+8]
cmp dword ptr [rbp-0CH], eax
jae SHORT G_M51048_IG04
mov eax, dword ptr [rbp-0CH]
movsxd rax, eax
lea ecx, [rdx+r8]
mov dword ptr [rsi+4*rax+16], ecx
jmp SHORT G_M51048_IG05
;; bbWeight=4 PerfScore 35.00
G_M51048_IG04:
call CORINFO_HELP_RNGCHKFAIL
int3
;; bbWeight=0 PerfScore 0.00
G_M51048_IG05:
mov eax, dword ptr [rbp-0CH]
inc eax
mov dword ptr [rbp-0CH], eax
cmp dword ptr [rbp-0CH], 0x3E8
mov edx, dword ptr [rbp+18H]
mov rsi, gword ptr [rbp-18H]
mov r8d, dword ptr [rbp+20H]
jl SHORT G_M51048_IG03
;; bbWeight=8 PerfScore 58.00
G_M51048_IG06:
lea rsp, [rbp-08H]
pop rsi
pop rbp
ret
;; bbWeight=1 PerfScore 2.50
G_M51048_IG07:
push rbp
push rsi
sub rsp, 40
mov rbp, qword ptr [rcx+32]
mov qword ptr [rsp+20H], rbp
lea rbp, [rbp+40H]
;; bbWeight=0 PerfScore 0.00
G_M51048_IG08:
lea rax, G_M51048_IG05
;; bbWeight=0 PerfScore 0.00
G_M51048_IG09:
add rsp, 40
pop rsi
pop rbp
ret
;; bbWeight=0 PerfScore 0.00
; Total bytes of code 133, prolog size 22, PerfScore 118.80, instruction count 44, allocated bytes for code 133 (MethodHash=045a3897) for method MiniBench.Tweet:Case5(int,int):this
; ============================================================ Above assembly code is based on #47307 where we will start enregistering EH vars that has single def. Here, we add resolution to restore mov edx, dword ptr [rbp+18H]
mov rsi, gword ptr [rbp-18H]
mov r8d, dword ptr [rbp+20H] |
Today, resolution doesn't take into account block weights where it adds resolution. Another improvement would be take that factor into account. Also, possibly a post-resolution walk-thru to eliminate / squeeze moves added (some kind of peephole optimization but for resolution moves) will be beneficial. |
I have fixed some of the redundant resolution movs as part of #54345. More work will be done in Future release. |
Sometimes, the resolution blocks are added that breaks the contiguous flow of loop which can be bad for performance. #58443 (comment) |
Problem statement
This issue captures various problems with existing resolution phase of register allocator.
While doing some other investigation, I noticed a scenario where we create new BB during resolution phase, but the compensation code inside them is identical.
Investigate if we could come with single basic block in such case that has the required code and all other jump to that block. As an effect, this increases the PerfScore from 3.00 to 24.00 triggering regression while doing asmdiffs.
category:design
theme:register-allocator
skill-level:expert
cost:large
impact:medium
The text was updated successfully, but these errors were encountered: