Untitled diff
286 lines
; Assembly listing for method System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
; Assembly listing for method System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; Tier1 code
; Tier1 code
; optimized code
; optimized code
; optimized using Dynamic PGO
; optimized using Dynamic PGO
; rsp based frame
; rsp based frame
; fully interruptible
; fully interruptible
; with Dynamic PGO: fgCalledCount is 6265
; with Dynamic PGO: fgCalledCount is 6265
; 29 inlinees with PGO data; 22 single block inlinees; 0 inlinees without PGO data
; 29 inlinees with PGO data; 22 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
; Final local variable assignments
;
;
; V00 arg0 [V00,T53] ( 4, 8 ) byref -> rcx ld-addr-op single-def
; V00 arg0 [V00,T50] ( 4, 8 ) byref -> rcx ld-addr-op single-def
; V01 arg1 [V01,T54] ( 11, 7.92) int -> [rsp+0x168]
; V01 arg1 [V01,T51] ( 11, 7.92) int -> [rsp+0x178]
; V02 arg2 [V02,T31] ( 45,108.59) ref -> rbx class-hnd single-def <System.Comparison`1[int]>
; V02 arg2 [V02,T31] ( 45,108.59) ref -> rbx class-hnd single-def <System.Comparison`1[int]>
; V03 loc0 [V03,T50] ( 23, 15.42) int -> r14
; V03 loc0 [V03,T47] ( 23, 15.42) int -> r14
;* V04 loc1 [V04 ] ( 0, 0 ) int -> zero-ref
;* V04 loc1 [V04 ] ( 0, 0 ) int -> zero-ref
; V05 loc2 [V05,T89] ( 7, 3.91) int -> registers
; V05 loc2 [V05,T86] ( 7, 3.91) int -> r11
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
;* V10 tmp4 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
;* V10 tmp4 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]>
;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp6 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp6 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp7 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp7 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp8 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp8 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp9 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp9 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V17 tmp11 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V17 tmp11 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V18 tmp12 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp12 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp13 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp13 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V20 tmp14 [V20,T43] ( 11, 34.18) int -> r15 "Inline stloc first use temp"
; V20 tmp14 [V20,T43] ( 11, 34.18) int -> r15 "Inline stloc first use temp"
;* V21 tmp15 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V21 tmp15 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
; V22 tmp16 [V22,T41] ( 13, 78.39) int -> r12 "Inline stloc first use temp"
; V22 tmp16 [V22,T41] ( 13, 78.39) int -> r12 "Inline stloc first use temp"
; V23 tmp17 [V23,T01] ( 23,241.73) int -> registers "Inline stloc first use temp"
; V23 tmp17 [V23,T01] ( 23,241.73) int -> registers "Inline stloc first use temp"
; V24 tmp18 [V24,T47] ( 7, 0 ) int -> rax "guarded devirt return temp"
; V24 tmp18 [V24,T128] ( 7, 0 ) int -> rax "guarded devirt return temp"
; V25 tmp19 [V25,T07] ( 11,185.49) int -> rbp "guarded devirt arg temp"
; V25 tmp19 [V25,T07] ( 11,185.49) int -> rbp "guarded devirt arg temp"
; V26 tmp20 [V26,T14] ( 14,154.58) ref -> rsi class-hnd "guarded devirt this exact temp" <System.Linq.Enumerable+EnumerableSorter`2[System.__Canon,System.__Canon]>
; V26 tmp20 [V26,T14] ( 14,154.58) ref -> rsi class-hnd "guarded devirt this exact temp" <System.Linq.Enumerable+EnumerableSorter`2[System.__Canon,System.__Canon]>
; V27 tmp21 [V27,T28] ( 9,123.97) ref -> [rsp+0x90] class-hnd "Inline stloc first use temp" <System.__Canon[]>
; V27 tmp21 [V27,T28] ( 9,123.97) ref -> [rsp+0xA8] class-hnd "Inline stloc first use temp" <System.__Canon[]>
;* V28 tmp22 [V28 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V28 tmp22 [V28 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V29 tmp23 [V29,T08] ( 8,185.49) long -> r11 "VirtualCall with runtime lookup"
; V29 tmp23 [V29,T08] ( 8,185.49) long -> r11 "VirtualCall with runtime lookup"
; V30 tmp24 [V30,T38] ( 6, 92.75) int -> rax "Inline stloc first use temp"
; V30 tmp24 [V30,T38] ( 6, 92.75) int -> rax "Inline stloc first use temp"
;* V31 tmp25 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V31 tmp25 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V32 tmp26 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V32 tmp26 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V33 tmp27 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V33 tmp27 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V34 tmp28 [V34 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V34 tmp28 [V34 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp30 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp30 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V37 tmp31 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V37 tmp31 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
; V38 tmp32 [V38,T52] ( 34, 11.86) int -> r15 "Inline stloc first use temp"
; V38 tmp32 [V38,T49] ( 34, 11.86) int -> r15 "Inline stloc first use temp"
; V39 tmp33 [V39,T51] ( 36, 11.88) int -> [rsp+0x10C] "Inline stloc first use temp"
; V39 tmp33 [V39,T48] ( 36, 11.88) int -> [rsp+0x114] "Inline stloc first use temp"
; V40 tmp34 [V40,T23] ( 20,131.03) int -> [rsp+0x108] "Inline stloc first use temp"
; V40 tmp34 [V40,T23] ( 20,131.03) int -> [rsp+0x110] "Inline stloc first use temp"
; V41 tmp35 [V41,T04] ( 32,195.60) int -> [rsp+0x104] "Inline stloc first use temp"
; V41 tmp35 [V41,T04] ( 32,195.60) int -> [rsp+0x10C] "Inline stloc first use temp"
; V42 tmp36 [V42,T16] ( 18,140.69) int -> [rsp+0x100] "Inline stloc first use temp"
; V42 tmp36 [V42,T16] ( 18,140.69) int -> [rsp+0x108] "Inline stloc first use temp"
; V43 tmp37 [V43,T21] ( 4,134.85) int -> registers "dup spill"
; V43 tmp37 [V43,T21] ( 4,134.85) int -> rax "dup spill"
; V44 tmp38 [V44,T00] ( 9,253.45) int -> registers "dup spill"
; V44 tmp38 [V44,T00] ( 9,253.45) int -> rbp "dup spill"
; V45 tmp39 [V45,T44] ( 7, 0 ) int -> registers "guarded devirt return temp"
; V45 tmp39 [V45,T129] ( 7, 0 ) int -> registers "guarded devirt return temp"
; V46 tmp40 [V46,T02] ( 11,202.27) int -> [rsp+0xFC] "guarded devirt arg temp"
; V46 tmp40 [V46,T02] ( 11,202.27) int -> [rsp+0x104] "guarded devirt arg temp"
; V47 tmp41 [V47,T12] ( 14,168.56) ref -> [rsp+0x88] class-hnd "guarded devirt this exact temp" <System.Linq.Enumerable+EnumerableSorter`2[System.__Canon,System.__Canon]>
; V47 tmp41 [V47,T12] ( 14,168.56) ref -> [rsp+0xA0] class-hnd "guarded devirt this exact temp" <System.Linq.Enumerable+EnumerableSorter`2[System.__Canon,System.__Canon]>
; V48 tmp42 [V48,T46] ( 7, 0 ) int -> r10 "guarded devirt return temp"
; V48 tmp42 [V48,T126] ( 7, 0 ) int -> r9 "guarded devirt return temp"
; V49 tmp43 [V49,T05] ( 11,187.89) int -> [rsp+0xF8] "guarded devirt arg temp"
; V49 tmp43 [V49,T05] ( 11,187.89) int -> r12 "guarded devirt arg temp"
; V50 tmp44 [V50,T13] ( 14,156.57) ref -> [rsp+0x80] class-hnd "guarded devirt this exact temp" <System.Linq.Enumerable+EnumerableSorter`2[System.__Canon,System.__Canon]>
; V50 tmp44 [V50,T13] ( 14,156.57) ref -> [rsp+0x98] class-hnd "guarded devirt this exact temp" <System.Linq.Enumerable+EnumerableSorter`2[System.__Canon,System.__Canon]>
;* V51 tmp45 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V51 tmp45 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V52 tmp46 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V52 tmp46 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V53 tmp47 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V53 tmp47 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V54 tmp48 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V54 tmp48 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
; V55 tmp49 [V55,T113] ( 4, 1.02) int -> r8 "Inline stloc first use temp"
; V55 tmp49 [V55,T110] ( 4, 1.02) int -> r8 "Inline stloc first use temp"
; V56 tmp50 [V56,T116] ( 7, 0 ) int -> r10 "guarded devirt return temp"
; V56 tmp50 [V56,T132] ( 7, 0 ) int -> r10 "guarded devirt return temp"
; V57 tmp51 [V57,T59] ( 11, 5.87) int -> [rsp+0xF4] "guarded devirt arg temp"
; V57 tmp51 [V57,T56] ( 11, 5.87) int -> [rsp+0x100] "guarded devirt arg temp"
; V58 tmp52 [V58,T60] ( 11, 5.87) int -> [rsp+0xF0] "guarded devirt arg temp"
; V58 tmp52 [V58,T57] ( 11, 5.87) int -> [rsp+0xFC] "guarded devirt arg temp"
; V59 tmp53 [V59,T71] ( 14, 4.89) ref -> [rsp+0x78] class-hnd "guarded devirt this exact temp" <System.Linq.Enumerable+EnumerableSorter`2[System.__Canon,System.__Canon]>
; V59 tmp53 [V59,T68] ( 14, 4.89) ref -> [rsp+0x90] class-hnd "guarded devirt this exact temp" <System.Linq.Enumerable+EnumerableSorter`2[System.__Canon,System.__Canon]>
;* V60 tmp54 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V60 tmp54 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V61 tmp55 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V61 tmp55 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V62 tmp56 [V62,T74] ( 9, 4.88) ref -> [rsp+0x70] class-hnd "Inline stloc first use temp" <System.__Canon[]>
; V62 tmp56 [V62,T71] ( 9, 4.88) ref -> [rsp+0x88] class-hnd "Inline stloc first use temp" <System.__Canon[]>
;* V63 tmp57 [V63 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V63 tmp57 [V63 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V64 tmp58 [V64,T65] ( 8, 5.87) long -> [rsp+0xE8] "VirtualCall with runtime lookup"
; V64 tmp58 [V64,T62] ( 8, 5.87) long -> [rsp+0xF0] "VirtualCall with runtime lookup"
; V65 tmp59 [V65,T90] ( 6, 2.94) int -> rax "Inline stloc first use temp"
; V65 tmp59 [V65,T87] ( 6, 2.94) int -> rax "Inline stloc first use temp"
;* V66 tmp60 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V66 tmp60 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
; V67 tmp61 [V67,T114] ( 4, 1.02) int -> r8 "Inline stloc first use temp"
; V67 tmp61 [V67,T111] ( 4, 1.02) int -> r8 "Inline stloc first use temp"
; V68 tmp62 [V68,T117] ( 7, 0 ) int -> r10 "guarded devirt return temp"
; V68 tmp62 [V68,T133] ( 7, 0 ) int -> r10 "guarded devirt return temp"
; V69 tmp63 [V69,T61] ( 11, 5.87) int -> [rsp+0xE4] "guarded devirt arg temp"
; V69 tmp63 [V69,T58] ( 11, 5.87) int -> [rsp+0xEC] "guarded devirt arg temp"
; V70 tmp64 [V70,T62] ( 11, 5.87) int -> [rsp+0xE0] "guarded devirt arg temp"
; V70 tmp64 [V70,T59] ( 11, 5.87) int -> [rsp+0xE8] "guarded devirt arg temp"
; V71 tmp65 [V71,T72] ( 14, 4.89) ref -> [rsp+0x68] class-hnd "guarded devirt this exact temp" <System.Linq.Enumerable+EnumerableSorter`2[System.__Canon,System.__Canon]>
; V71 tmp65 [V71,T69] ( 14, 4.89) ref -> [rsp+0x80] class-hnd "guarded devirt this exact temp" <System.Linq.Enumerable+EnumerableSorter`2[System.__Canon,System.__Canon]>
;* V72 tmp66 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V72 tmp66 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V73 tmp67 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V73 tmp67 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V74 tmp68 [V74,T75] ( 9, 4.88) ref -> [rsp+0x60] class-hnd "Inline stloc first use temp" <System.__Canon[]>
; V74 tmp68 [V74,T72] ( 9, 4.88) ref -> [rsp+0x78] class-hnd "Inline stloc first use temp" <System.__Canon[]>
;* V75 tmp69 [V75 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V75 tmp69 [V75 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V76 tmp70 [V76,T66] ( 8, 5.87) long -> registers "VirtualCall with runtime lookup"
; V76 tmp70 [V76,T63] ( 8, 5.87) long -> [rsp+0xE0] "VirtualCall with runtime lookup"
; V77 tmp71 [V77,T91] ( 6, 2.94) int -> rax "Inline stloc first use temp"
; V77 tmp71 [V77,T88] ( 6, 2.94) int -> rax "Inline stloc first use temp"
;* V78 tmp72 [V78 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V78 tmp72 [V78 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
; V79 tmp73 [V79,T115] ( 4, 1.02) int -> r10 "Inline stloc first use temp"
; V79 tmp73 [V79,T112] ( 4, 1.02) int -> r10 "Inline stloc first use temp"
; V80 tmp74 [V80,T118] ( 7, 0 ) int -> r10 "guarded devirt return temp"
; V80 tmp74 [V80,T134] ( 7, 0 ) int -> r10 "guarded devirt return temp"
; V81 tmp75 [V81,T63] ( 11, 5.87) int -> [rsp+0xDC] "guarded devirt arg temp"
; V81 tmp75 [V81,T60] ( 11, 5.87) int -> [rsp+0xDC] "guarded devirt arg temp"
; V82 tmp76 [V82,T64] ( 11, 5.87) int -> [rsp+0xD8] "guarded devirt arg temp"
; V82 tmp76 [V82,T61] ( 11, 5.87) int -> [rsp+0xD8] "guarded devirt arg temp"
; V83 tmp77 [V83,T73] ( 14, 4.89) ref -> [rsp+0x58] class-hnd "guarded devirt this exact temp" <System.Linq.Enumerable+EnumerableSorter`2[System.__Canon,System.__Canon]>
; V83 tmp77 [V83,T70] ( 14, 4.89) ref -> [rsp+0x70] class-hnd "guarded devirt this exact temp" <System.Linq.Enumerable+EnumerableSorter`2[System.__Canon,System.__Canon]>
;* V84 tmp78 [V84 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V84 tmp78 [V84 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V85 tmp79 [V85 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V85 tmp79 [V85 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V86 tmp80 [V86,T76] ( 9, 4.88) ref -> [rsp+0x50] class-hnd "Inline stloc first use temp" <System.__Canon[]>
; V86 tmp80 [V86,T73] ( 9, 4.88) ref -> [rsp+0x68] class-hnd "Inline stloc first use temp" <System.__Canon[]>
;* V87 tmp81 [V87 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V87 tmp81 [V87 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V88 tmp82 [V88,T67] ( 8, 5.87) long -> [rsp+0xD0] "VirtualCall with runtime lookup"
; V88 tmp82 [V88,T64] ( 8, 5.87) long -> registers "VirtualCall with runtime lookup"
; V89 tmp83 [V89,T92] ( 6, 2.94) int -> rax "Inline stloc first use temp"
; V89 tmp83 [V89,T89] ( 6, 2.94) int -> rax "Inline stloc first use temp"
; V90 tmp84 [V90,T56] ( 11, 9.81) int -> [rsp+0xCC] "Inlining Arg"
; V90 tmp84 [V90,T53] ( 11, 9.81) int -> [rsp+0xD4] "Inlining Arg"
;* V91 tmp85 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V91 tmp85 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
; V92 tmp86 [V92,T94] ( 4, 1.96) int -> rdx "Inline stloc first use temp"
; V92 tmp86 [V92,T91] ( 4, 1.96) int -> rdx "Inline stloc first use temp"
;* V93 tmp87 [V93 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V93 tmp87 [V93 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V94 tmp88 [V94 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V94 tmp88 [V94 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V95 tmp89 [V95,T17] ( 9,135.19) ref -> [rsp+0x48] class-hnd "Inline stloc first use temp" <System.__Canon[]>
; V95 tmp89 [V95,T17] ( 9,135.19) ref -> [rsp+0x60] class-hnd "Inline stloc first use temp" <System.__Canon[]>
;* V96 tmp90 [V96 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V96 tmp90 [V96 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V97 tmp91 [V97,T03] ( 8,202.27) long -> [rsp+0xC0] "VirtualCall with runtime lookup"
; V97 tmp91 [V97,T03] ( 8,202.27) long -> registers "VirtualCall with runtime lookup"
; V98 tmp92 [V98,T33] ( 6,101.13) int -> rax "Inline stloc first use temp"
; V98 tmp92 [V98,T33] ( 6,101.13) int -> rax "Inline stloc first use temp"
; V99 tmp93 [V99,T24] ( 9,125.58) ref -> [rsp+0x40] class-hnd "Inline stloc first use temp" <System.__Canon[]>
; V99 tmp93 [V99,T24] ( 9,125.58) ref -> [rsp+0x58] class-hnd "Inline stloc first use temp" <System.__Canon[]>
;* V100 tmp94 [V100 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V100 tmp94 [V100 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V101 tmp95 [V101,T06] ( 8,187.89) long -> [rsp+0xB8] "VirtualCall with runtime lookup"
; V101 tmp95 [V101,T06] ( 8,187.89) long -> r11 "VirtualCall with runtime lookup"
; V102 tmp96 [V102,T37] ( 6, 93.94) int -> rax "Inline stloc first use temp"
; V102 tmp96 [V102,T37] ( 6, 93.94) int -> rax "Inline stloc first use temp"
;* V103 tmp97 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V103 tmp97 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
; V104 tmp98 [V104,T48] ( 4, 25.90) int -> r10 "Inline stloc first use temp"
; V104 tmp98 [V104,T45] ( 4, 25.90) int -> r10 "Inline stloc first use temp"
;* V105 tmp99 [V105 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V105 tmp99 [V105 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V106 tmp100 [V106 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V106 tmp100 [V106 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V107 tmp101 [V107,T82] ( 5, 3.93) int -> r15 "Inlining Arg"
; V107 tmp101 [V107,T79] ( 5, 3.93) int -> r15 "Inlining Arg"
;* V108 tmp102 [V108 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V108 tmp102 [V108 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
; V109 tmp103 [V109,T95] ( 4, 1.96) int -> r9 "Inline stloc first use temp"
; V109 tmp103 [V109,T92] ( 4, 1.96) int -> r9 "Inline stloc first use temp"
;* V110 tmp104 [V110 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V110 tmp104 [V110 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V111 tmp105 [V111 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V111 tmp105 [V111 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V112 tmp106 [V112,T55] ( 8, 9.83) int -> r15 "Inlining Arg"
; V112 tmp106 [V112,T52] ( 8, 9.83) int -> registers "Inlining Arg"
;* V113 tmp107 [V113 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V113 tmp107 [V113 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
; V114 tmp108 [V114,T58] ( 4, 5.92) byref -> registers "Inlining Arg"
; V114 tmp108 [V114,T55] ( 4, 5.92) byref -> registers "Inlining Arg"
;* V115 tmp109 [V115 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V115 tmp109 [V115 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V116 tmp110 [V116 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V116 tmp110 [V116 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V117 tmp111 [V117,T27] ( 29,123.74) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V117 tmp111 [V117,T27] ( 29,123.74) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V118 tmp112 [V118,T57] ( 14, 6.98) int -> [rsp+0xB4] spill-single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V118 tmp112 [V118,T54] ( 14, 6.98) int -> [rsp+0xD0] spill-single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V119 tmp113 [V119 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V119 tmp113 [V119 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V120 tmp114 [V120 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V120 tmp114 [V120 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V121 tmp115 [V121 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V121 tmp115 [V121 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V122 tmp116 [V122 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V122 tmp116 [V122 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V123 tmp117 [V123 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V123 tmp117 [V123 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V124 tmp118 [V124 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
;* V124 tmp118 [V124 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
;* V125 tmp119 [V125 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V125 tmp119 [V125 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V126 tmp120 [V126 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V126 tmp120 [V126 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
; V127 tmp121 [V127,T99] ( 2, 1.80) byref -> rdi single-def "field V16._reference (fldOffset=0x0)" P-INDEP
; V127 tmp121 [V127,T96] ( 2, 1.80) byref -> rdi single-def "field V16._reference (fldOffset=0x0)" P-INDEP
; V128 tmp122 [V128,T100] ( 2, 1.80) int -> r14 "field V16._length (fldOffset=0x8)" P-INDEP
; V128 tmp122 [V128,T97] ( 2, 1.80) int -> r14 "field V16._length (fldOffset=0x8)" P-INDEP
; V129 tmp123 [V129,T36] ( 11, 97.24) byref -> rdi single-def "field V21._reference (fldOffset=0x0)" P-INDEP
; V129 tmp123 [V129,T36] ( 11, 97.24) byref -> rdi single-def "field V21._reference (fldOffset=0x0)" P-INDEP
; V130 tmp124 [V130,T32] ( 14,106.42) int -> r14 "field V21._length (fldOffset=0x8)" P-INDEP
; V130 tmp124 [V130,T32] ( 14,106.42) int -> r14 "field V21._length (fldOffset=0x8)" P-INDEP
; V131 tmp125 [V131,T139] ( 2, 0 ) byref -> rcx single-def "field V31._reference (fldOffset=0x0)" P-INDEP
; V131 tmp125 [V131,T139] ( 2, 0 ) byref -> rcx single-def "field V31._reference (fldOffset=0x0)" P-INDEP
; V132 tmp126 [V132,T140] ( 2, 0 ) int -> rdx "field V31._length (fldOffset=0x8)" P-INDEP
; V132 tmp126 [V132,T140] ( 2, 0 ) int -> rdx "field V31._length (fldOffset=0x8)" P-INDEP
;* V133 tmp127 [V133,T119] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP
;* V133 tmp127 [V133,T113] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP
; V134 tmp128 [V134,T96] ( 4, 1.96) int -> r13 "field V33._length (fldOffset=0x8)" P-INDEP
; V134 tmp128 [V134,T93] ( 4, 1.96) int -> r13 "field V33._length (fldOffset=0x8)" P-INDEP
; V135 tmp129 [V135,T49] ( 48, 17.84) byref -> r12 "field V37._reference (fldOffset=0x0)" P-INDEP
; V135 tmp129 [V135,T46] ( 48, 17.84) byref -> r12 "field V37._reference (fldOffset=0x0)" P-INDEP
; V136 tmp130 [V136,T35] ( 44, 97.22) int -> r13 "field V37._length (fldOffset=0x8)" P-INDEP
; V136 tmp130 [V136,T35] ( 44, 97.22) int -> r13 "field V37._length (fldOffset=0x8)" P-INDEP
;* V137 tmp131 [V137 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP
;* V137 tmp131 [V137 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP
;* V138 tmp132 [V138 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
;* V138 tmp132 [V138 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
;* V139 tmp133 [V139 ] ( 0, 0 ) byref -> zero-ref "field V66._reference (fldOffset=0x0)" P-INDEP
;* V139 tmp133 [V139 ] ( 0, 0 ) byref -> zero-ref "field V66._reference (fldOffset=0x0)" P-INDEP
;* V140 tmp134 [V140 ] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x8)" P-INDEP
;* V140 tmp134 [V140 ] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x8)" P-INDEP
;* V141 tmp135 [V141 ] ( 0, 0 ) byref -> zero-ref "field V78._reference (fldOffset=0x0)" P-INDEP
;* V141 tmp135 [V141 ] ( 0, 0 ) byref -> zero-ref "field V78._reference (fldOffset=0x0)" P-INDEP
;* V142 tmp136 [V142 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x8)" P-INDEP
;* V142 tmp136 [V142 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x8)" P-INDEP
;* V143 tmp137 [V143 ] ( 0, 0 ) byref -> zero-ref "field V91._reference (fldOffset=0x0)" P-INDEP
;* V143 tmp137 [V143 ] ( 0, 0 ) byref -> zero-ref "field V91._reference (fldOffset=0x0)" P-INDEP
;* V144 tmp138 [V144 ] ( 0, 0 ) int -> zero-ref "field V91._length (fldOffset=0x8)" P-INDEP
;* V144 tmp138 [V144 ] ( 0, 0 ) int -> zero-ref "field V91._length (fldOffset=0x8)" P-INDEP
;* V145 tmp139 [V145 ] ( 0, 0 ) byref -> zero-ref "field V103._reference (fldOffset=0x0)" P-INDEP
;* V145 tmp139 [V145 ] ( 0, 0 ) byref -> zero-ref "field V103._reference (fldOffset=0x0)" P-INDEP
;* V146 tmp140 [V146 ] ( 0, 0 ) int -> zero-ref "field V103._length (fldOffset=0x8)" P-INDEP
;* V146 tmp140 [V146 ] ( 0, 0 ) int -> zero-ref "field V103._length (fldOffset=0x8)" P-INDEP
;* V147 tmp141 [V147 ] ( 0, 0 ) byref -> zero-ref "field V108._reference (fldOffset=0x0)" P-INDEP
;* V147 tmp141 [V147 ] ( 0, 0 ) byref -> zero-ref "field V108._reference (fldOffset=0x0)" P-INDEP
;* V148 tmp142 [V148 ] ( 0, 0 ) int -> zero-ref "field V108._length (fldOffset=0x8)" P-INDEP
;* V148 tmp142 [V148 ] ( 0, 0 ) int -> zero-ref "field V108._length (fldOffset=0x8)" P-INDEP
; V149 tmp143 [V149,T80] ( 4, 3.96) byref -> registers "field V113._reference (fldOffset=0x0)" P-INDEP
; V149 tmp143 [V149,T77] ( 4, 3.96) byref -> registers "field V113._reference (fldOffset=0x0)" P-INDEP
; V150 tmp144 [V150,T81] ( 4, 3.96) int -> r15 "field V113._length (fldOffset=0x8)" P-INDEP
; V150 tmp144 [V150,T78] ( 4, 3.96) int -> registers "field V113._length (fldOffset=0x8)" P-INDEP
;* V151 tmp145 [V151 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[int]>
;* V151 tmp145 [V151 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[int]>
; V152 tmp146 [V152,T83] ( 4, 3.92) ref -> rcx "argument with side effect"
; V152 tmp146 [V152,T80] ( 4, 3.92) ref -> [rsp+0x50] "argument with side effect"
; V153 tmp147 [V153,T84] ( 4, 3.92) ref -> registers "argument with side effect"
; V153 tmp147 [V153,T81] ( 4, 3.92) ref -> [rsp+0x48] "argument with side effect"
; V154 tmp148 [V154,T135] ( 6, 0 ) ref -> rcx "argument with side effect"
; V154 tmp148 [V154,T135] ( 6, 0 ) ref -> rcx "argument with side effect"
; V155 tmp149 [V155,T85] ( 4, 3.92) ref -> rcx "argument with side effect"
; V155 tmp149 [V155,T82] ( 4, 3.92) ref -> rcx "argument with side effect"
; V156 tmp150 [V156,T86] ( 4, 3.92) ref -> registers "argument with side effect"
; V156 tmp150 [V156,T83] ( 4, 3.92) ref -> r10 "argument with side effect"
; V157 tmp151 [V157,T136] ( 6, 0 ) ref -> rcx "argument with side effect"
; V157 tmp151 [V157,T136] ( 6, 0 ) ref -> rcx "argument with side effect"
; V158 tmp152 [V158,T87] ( 4, 3.92) ref -> [rsp+0x38] "argument with side effect"
; V158 tmp152 [V158,T84] ( 4, 3.92) ref -> [rsp+0x40] "argument with side effect"
; V159 tmp153 [V159,T88] ( 4, 3.92) ref -> registers "argument with side effect"
; V159 tmp153 [V159,T85] ( 4, 3.92) ref -> [rsp+0x38] "argument with side effect"
; V160 tmp154 [V160,T137] ( 6, 0 ) ref -> rcx "argument with side effect"
; V160 tmp154 [V160,T137] ( 6, 0 ) ref -> rcx "argument with side effect"
; V161 tmp155 [V161,T19] ( 4,134.85) ref -> registers "argument with side effect"
; V161 tmp155 [V161,T19] ( 4,134.85) ref -> registers "argument with side effect"
; V162 tmp156 [V162,T20] ( 4,134.85) ref -> registers "argument with side effect"
; V162 tmp156 [V162,T20] ( 4,134.85) ref -> registers "argument with side effect"
; V163 tmp157 [V163,T133] ( 6, 0 ) ref -> rcx "argument with side effect"
; V163 tmp157 [V163,T130] ( 6, 0 ) ref -> rcx "argument with side effect"
; V164 tmp158 [V164,T25] ( 4,125.26) ref -> rcx "argument with side effect"
; V164 tmp158 [V164,T25] ( 4,125.26) ref -> rcx "argument with side effect"
; V165 tmp159 [V165,T26] ( 4,125.26) ref -> registers "argument with side effect"
; V165 tmp159 [V165,T26] ( 4,125.26) ref -> registers "argument with side effect"
; V166 tmp160 [V166,T132] ( 6, 0 ) ref -> rcx "argument with side effect"
; V166 tmp160 [V166,T127] ( 6, 0 ) ref -> rcx "argument with side effect"
; V167 tmp161 [V167 ] ( 21, 12.61) struct (16) [rsp+0xA0] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[int]>
; V167 tmp161 [V167 ] ( 21, 12.61) struct (16) [rsp+0xC0] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[int]>
; V168 tmp162 [V168,T29] ( 4,123.66) ref -> rcx "argument with side effect"
; V168 tmp162 [V168,T29] ( 4,123.66) ref -> rcx "argument with side effect"
; V169 tmp163 [V169,T30] ( 4,123.66) ref -> rdx "argument with side effect"
; V169 tmp163 [V169,T30] ( 4,123.66) ref -> rdx "argument with side effect"
; V170 tmp164 [V170,T134] ( 6, 0 ) ref -> rcx "argument with side effect"
; V170 tmp164 [V170,T131] ( 6, 0 ) ref -> rcx "argument with side effect"
; V171 cse0 [V171,T93] ( 3, 2.91) byref -> [rsp+0x30] spill-single-def "CSE #32: conservative"
; V171 cse0 [V171,T90] ( 3, 2.91) byref -> [rsp+0x30] spill-single-def "CSE #32: conservative"
; V172 cse1 [V172,T126] ( 3, 0.03) byref -> [rsp+0x28] spill-single-def "CSE #55: conservative"
; V172 cse1 [V172,T120] ( 3, 0.03) byref -> [rsp+0x28] spill-single-def "CSE #55: conservative"
; V173 cse2 [V173,T34] ( 3,100.11) int -> rbp "CSE #15: moderate"
; V173 cse2 [V173,T34] ( 3,100.11) int -> rbp "CSE #15: moderate"
; V174 cse3 [V174,T39] ( 3, 92.98) int -> rax "CSE #18: moderate"
; V174 cse3 [V174,T39] ( 3, 92.98) int -> r8 "CSE #18: moderate"
; V175 cse4 [V175,T40] ( 3, 91.81) int -> r8 "CSE #61: moderate"
; V175 cse4 [V175,T40] ( 3, 91.81) int -> r8 "CSE #61: moderate"
; V176 cse5 [V176,T42] ( 3, 72.57) int -> rcx "CSE #59: moderate"
; V176 cse5 [V176,T42] ( 3, 72.57) int -> rcx "CSE #59: moderate"
; V177 cse6 [V177,T45] ( 4, 32.79) int -> r13 "CSE #58: moderate"
; V177 cse6 [V177,T44] ( 4, 32.79) int -> r13 "CSE #58: moderate"
; V178 cse7 [V178,T127] ( 3, 0.03) int -> [rsp+0x9C] spill-single-def "CSE #34: conservative"
; V178 cse7 [V178,T121] ( 3, 0.03) int -> [rsp+0xBC] spill-single-def "CSE #34: conservative"
; V179 cse8 [V179,T128] ( 3, 0.03) int -> r8 "CSE #37: conservative"
; V179 cse8 [V179,T122] ( 3, 0.03) int -> [rsp+0xB8] spill-single-def "CSE #37: conservative"
; V180 cse9 [V180,T129] ( 3, 0.03) int -> [rsp+0x98] spill-single-def "CSE #41: conservative"
; V180 cse9 [V180,T123] ( 3, 0.03) int -> [rsp+0xB4] spill-single-def "CSE #41: conservative"
; V181 cse10 [V181,T130] ( 3, 0.03) long -> rcx "CSE #57: conservative"
; V181 cse10 [V181,T124] ( 3, 0.03) long -> rcx "CSE #57: conservative"
; V182 cse11 [V182,T131] ( 3, 0.03) long -> rcx "CSE #54: conservative"
; V182 cse11 [V182,T125] ( 3, 0.03) long -> rcx "CSE #54: conservative"
; V183 rat0 [V183,T77] ( 3, 4.26) long -> rcx "Spilling to split statement for tree"
; V183 rat0 [V183,T74] ( 3, 4.26) long -> rcx "Spilling to split statement for tree"
; V184 rat1 [V184,T68] ( 3, 5.43) long -> rax "fgMakeTemp is creating a new local variable"
; V184 rat1 [V184,T65] ( 3, 5.43) long -> rax "fgMakeTemp is creating a new local variable"
; V185 rat2 [V185,T78] ( 3, 4.26) long -> rcx "Spilling to split statement for tree"
; V185 rat2 [V185,T75] ( 3, 4.26) long -> rcx "Spilling to split statement for tree"
; V186 rat3 [V186,T69] ( 3, 5.43) long -> rax "fgMakeTemp is creating a new local variable"
; V186 rat3 [V186,T66] ( 3, 5.43) long -> rax "fgMakeTemp is creating a new local variable"
; V187 rat4 [V187,T79] ( 3, 4.26) long -> rax "Spilling to split statement for tree"
; V187 rat4 [V187,T76] ( 3, 4.26) long -> rax "Spilling to split statement for tree"
; V188 rat5 [V188,T70] ( 3, 5.43) long -> r10 "fgMakeTemp is creating a new local variable"
; V188 rat5 [V188,T67] ( 3, 5.43) long -> r10 "fgMakeTemp is creating a new local variable"
; V189 rat6 [V189,T15] ( 3,146.83) long -> r8 "Spilling to split statement for tree"
; V189 rat6 [V189,T15] ( 3,146.83) long -> r8 "Spilling to split statement for tree"
; V190 rat7 [V190,T09] ( 3,186.88) long -> r12 "fgMakeTemp is creating a new local variable"
; V190 rat7 [V190,T09] ( 3,186.88) long -> r12 "fgMakeTemp is creating a new local variable"
; V191 rat8 [V191,T18] ( 3,136.38) long -> rcx "Spilling to split statement for tree"
; V191 rat8 [V191,T18] ( 3,136.38) long -> rcx "Spilling to split statement for tree"
; V192 rat9 [V192,T10] ( 3,173.57) long -> rdx "fgMakeTemp is creating a new local variable"
; V192 rat9 [V192,T10] ( 3,173.57) long -> r11 "fgMakeTemp is creating a new local variable"
;* V193 rat10 [V193,T110] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V193 rat10 [V193,T107] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V194 rat11 [V194,T103] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;* V194 rat11 [V194,T100] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;* V195 rat12 [V195,T107] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V195 rat12 [V195,T104] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V196 rat13 [V196,T98] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;* V196 rat13 [V196,T95] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;* V197 rat14 [V197,T109] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V197 rat14 [V197,T106] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V198 rat15 [V198,T102] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;* V198 rat15 [V198,T99] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
; V199 rat16 [V199,T123] ( 3, 0.04) long -> rcx "Spilling to split statement for tree"
; V199 rat16 [V199,T117] ( 3, 0.04) long -> rcx "Spilling to split statement for tree"
; V200 rat17 [V200,T120] ( 3, 0.05) long -> rdx "fgMakeTemp is creating a new local variable"
; V200 rat17 [V200,T114] ( 3, 0.05) long -> rdx "fgMakeTemp is creating a new local variable"
; V201 rat18 [V201,T124] ( 3, 0.04) long -> rcx "Spilling to split statement for tree"
; V201 rat18 [V201,T118] ( 3, 0.04) long -> rcx "Spilling to split statement for tree"
; V202 rat19 [V202,T121] ( 3, 0.05) long -> rdx "fgMakeTemp is creating a new local variable"
; V202 rat19 [V202,T115] ( 3, 0.05) long -> rdx "fgMakeTemp is creating a new local variable"
; V203 rat20 [V203,T125] ( 3, 0.04) long -> rcx "Spilling to split statement for tree"
; V203 rat20 [V203,T119] ( 3, 0.04) long -> rcx "Spilling to split statement for tree"
; V204 rat21 [V204,T122] ( 3, 0.05) long -> rdx "fgMakeTemp is creating a new local variable"
; V204 rat21 [V204,T116] ( 3, 0.05) long -> r10 "fgMakeTemp is creating a new local variable"
; V205 rat22 [V205,T106] ( 3, 1.50) long -> rcx "Spilling to split statement for tree"
; V205 rat22 [V205,T103] ( 3, 1.50) long -> rcx "Spilling to split statement for tree"
; V206 rat23 [V206,T97] ( 3, 1.91) long -> rdx "fgMakeTemp is creating a new local variable"
; V206 rat23 [V206,T94] ( 3, 1.91) long -> r12 "fgMakeTemp is creating a new local variable"
; V207 rat24 [V207,T108] ( 3, 1.41) long -> rcx "Spilling to split statement for tree"
; V207 rat24 [V207,T105] ( 3, 1.41) long -> rcx "Spilling to split statement for tree"
; V208 rat25 [V208,T101] ( 3, 1.79) long -> r11 "fgMakeTemp is creating a new local variable"
; V208 rat25 [V208,T98] ( 3, 1.79) long -> r11 "fgMakeTemp is creating a new local variable"
; V209 rat26 [V209,T22] ( 3,134.65) long -> rcx "Spilling to split statement for tree"
; V209 rat26 [V209,T22] ( 3,134.65) long -> rcx "Spilling to split statement for tree"
; V210 rat27 [V210,T11] ( 3,171.38) long -> r11 "fgMakeTemp is creating a new local variable"
; V210 rat27 [V210,T11] ( 3,171.38) long -> r11 "fgMakeTemp is creating a new local variable"
;* V211 rat28 [V211,T112] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V211 rat28 [V211,T109] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V212 rat29 [V212,T105] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;* V212 rat29 [V212,T102] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
; V213 rat30 [V213,T111] ( 3, 1.37) long -> rcx "Spilling to split statement for tree"
; V213 rat30 [V213,T108] ( 3, 1.37) long -> rcx "Spilling to split statement for tree"
; V214 rat31 [V214,T104] ( 3, 1.75) long -> r11 "fgMakeTemp is creating a new local variable"
; V214 rat31 [V214,T101] ( 3, 1.75) long -> r11 "fgMakeTemp is creating a new local variable"
;* V215 rat32 [V215,T138] ( 0, 0 ) ref -> zero-ref "delegate invoke call"
;* V215 rat32 [V215,T138] ( 0, 0 ) ref -> zero-ref "delegate invoke call"
; TEMP_01 ref -> [rsp+0x110]
; TEMP_02 ref -> [rsp+0x120]
; TEMP_01 ref -> [rsp+0x118]
;
;
; Lcl frame size = 280
; Lcl frame size = 296
G_M15629_IG01:
G_M15629_IG01:
push r15
push r15
push r14
push r14
push r13
push r13
push r12
push r12
push rdi
push rdi
push rsi
push rsi
push rbp
push rbp
push rbx
push rbx
sub rsp, 280
sub rsp, 296
vxorps xmm4, xmm4, xmm4
vxorps xmm4, xmm4, xmm4
vmovdqu ymmword ptr [rsp+0xA0], ymm4
vmovdqu ymmword ptr [rsp+0xC0], ymm4
vmovdqu ymmword ptr [rsp+0xC0], ymm4
vmovdqu ymmword ptr [rsp+0xE0], ymm4
vmovdqu ymmword ptr [rsp+0xE0], ymm4
vmovdqa xmmword ptr [rsp+0x100], xmm4
vmovdqu ymmword ptr [rsp+0x100], ymm4
xor eax, eax
xor eax, eax
mov qword ptr [rsp+0x110], rax
mov qword ptr [rsp+0x120], rax
mov esi, edx
mov esi, edx
mov rbx, r8
mov rbx, r8
;; size=74 bbWeight=1 PerfScore 18.33
;; size=65 bbWeight=1 PerfScore 16.33
G_M15629_IG02:
G_M15629_IG02:
mov rdi, bword ptr [rcx]
mov rdi, bword ptr [rcx]
mov ebp, dword ptr [rcx+0x08]
mov ebp, dword ptr [rcx+0x08]
mov dword ptr [rsp+0xB4], ebp
mov dword ptr [rsp+0xD0], ebp
test ebp, ebp
test ebp, ebp
je G_M15629_IG105
je G_M15629_IG104
;; size=21 bbWeight=1 PerfScore 6.25
;; size=21 bbWeight=1 PerfScore 6.25
G_M15629_IG03:
G_M15629_IG03:
test esi, esi
test esi, esi
jl G_M15629_IG106
jl G_M15629_IG105
;; size=8 bbWeight=1 PerfScore 1.25
;; size=8 bbWeight=1 PerfScore 1.25
G_M15629_IG04:
G_M15629_IG04:
test rbx, rbx
test rbx, rbx
je G_M15629_IG107
je G_M15629_IG106
;; size=9 bbWeight=1 PerfScore 1.25
;; size=9 bbWeight=1 PerfScore 1.25
G_M15629_IG05:
G_M15629_IG05:
mov r14d, ebp
mov r14d, ebp
cmp ebp, 1
cmp ebp, 1
jle G_M15629_IG57
jle G_M15629_IG48
;; size=12 bbWeight=1 PerfScore 1.50
;; size=12 bbWeight=1 PerfScore 1.50
G_M15629_IG06:
G_M15629_IG06:
test rbx, rbx
test rbx, rbx
je G_M15629_IG59
je G_M15629_IG58
mov rcx, 0xD1FFAB1E ; code for System.Linq.Enumerable+EnumerableSorter`2[System.__Canon,System.__Canon]:CompareAnyKeys(int,int):int:this
mov rcx, 0xD1FFAB1E ; code for System.Linq.Enumerable+EnumerableSorter`2[System.__Canon,System.__Canon]:CompareAnyKeys(int,int):int:this
cmp qword ptr [rbx+0x18], rcx
cmp qword ptr [rbx+0x18], rcx
jne G_M15629_IG59
jne G_M15629_IG58
;; size=29 bbWeight=0.99 PerfScore 5.44
;; size=29 bbWeight=0.99 PerfScore 5.44
G_M15629_IG07:
G_M15629_IG07:
cmp r14d, 16
cmp r14d, 16
jg G_M15629_IG18
jg G_M15629_IG18
;; size=10 bbWeight=1.94 PerfScore 2.42
;; size=10 bbWeight=1.94 PerfScore 2.42
G_M15629_IG08:
G_M15629_IG08:
cmp r14d, 2
cmp r14d, 2
je G_M15629_IG56
je
;; size=10 bbWeight=