ScaleResult

Creado El diff nunca expira
182 eliminaciones
596 líneas
192 adiciones
605 líneas
; Assembly listing for method DecCalc:ScaleResult(long,int,int):int
; Assembly listing for method DecCalc:ScaleResult(long,int,int):int
; Emitting BLENDED_CODE for X64 CPU with SSE2 - Windows
; Emitting BLENDED_CODE for X64 CPU with SSE2 - Windows
; ReadyToRun compilation
; ReadyToRun compilation
; optimized code
; optimized code
; rsp based frame
; rsp based frame
; fully interruptible
; fully interruptible
; discarded IBC profile data due to mismatch in ILSize
; discarded IBC profile data due to mismatch in ILSize
; Final local variable assignments
; Final local variable assignments
;
;
; V00 arg0 [V00,T68] ( 3, 3 ) long -> rbx
; V00 arg0 [V00,T62] ( 3, 3 ) long -> rbx
; V01 arg1 [V01,T02] ( 30, 52 ) int -> rsi
; V01 arg1 [V01,T02] ( 30, 52 ) int -> rsi
; V02 arg2 [V02,T46] ( 14, 9 ) int -> rdi
; V02 arg2 [V02,T40] ( 14, 9 ) int -> rdi
; V03 loc0 [V03,T00] ( 34,173 ) long -> rbx
; V03 loc0 [V03,T00] ( 34,173 ) long -> rbx
; V04 loc1 [V04,T30] ( 17, 24 ) int -> rbp
; V04 loc1 [V04,T22] ( 17, 24 ) int -> rbp
; V05 loc2 [V05,T49] ( 5, 9.50) int -> r14
; V05 loc2 [V05,T43] ( 5, 9.50) int -> r14
; V06 loc3 [V06,T16] ( 20, 44 ) int -> r8 ld-addr-op
; V06 loc3 [V06,T12] ( 20, 44 ) int -> r8 ld-addr-op
; V07 loc4 [V07,T01] ( 32,168 ) int -> r15 ld-addr-op
; V07 loc4 [V07,T01] ( 32,168 ) int -> r15 ld-addr-op
; V08 loc5 [V08,T38] ( 13, 20 ) int -> rcx
; V08 loc5 [V08,T34] ( 13, 20 ) int -> rcx
; V09 loc6 [V09,T42] ( 6, 13.50) int -> registers
; V09 loc6 [V09,T38] ( 6, 13.50) int -> registers
; V10 loc7 [V10,T39] ( 7, 17.50) int -> rsi
; V10 loc7 [V10,T35] ( 7, 17.50) int -> rsi
; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace"
; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace"
; V12 tmp1 [V12,T40] ( 2, 16 ) int -> rsi "dup spill"
; V12 tmp1 [V12,T36] ( 2, 16 ) int -> rsi "dup spill"
; V13 tmp2 [V13,T31] ( 3, 24 ) long -> rax "dup spill"
; V13 tmp2 [V13,T23] ( 3, 24 ) long -> rax "dup spill"
; V14 tmp3 [V14,T69] ( 2, 4 ) bool -> rcx "Inlining Arg"
; V14 tmp3 [V14,T63] ( 2, 4 ) bool -> rcx "Inlining Arg"
; V15 tmp4 [V15,T71] ( 2, 2.50) ref -> rax class-hnd "Inlining Arg"
; V15 tmp4 [V15,T65] ( 2, 2.50) ref -> rax class-hnd "Inlining Arg"
; V16 tmp5 [V16,T72] ( 2, 2.50) ref -> rdx class-hnd "Inlining Arg"
; V16 tmp5 [V16,T66] ( 2, 2.50) ref -> rdx class-hnd "Inlining Arg"
; V17 tmp6 [V17,T74] ( 2, 1 ) int -> rax "Inline return value spill temp"
; V17 tmp6 [V17,T68] ( 2, 1 ) int -> rax "Inline return value spill temp"
; V18 tmp7 [V18,T73] ( 2, 2 ) int -> rax "Inlining Arg"
; V18 tmp7 [V18,T67] ( 2, 2 ) int -> rax "Inlining Arg"
; V19 tmp8 [V19,T61] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V19 tmp8 [V19,T53] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V20 tmp9 [V20,T52] ( 2, 8 ) int -> r8 "dup spill"
; V20 tmp9 [V20,T44] ( 2, 8 ) int -> r8 "dup spill"
;* V21 tmp10 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V21 tmp10 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V22 tmp11 [V22,T17] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V22 tmp11 [V22,T13] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V23 tmp12 [V23,T32] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V23 tmp12 [V23,T24] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V24 tmp13 [V24,T03] ( 3, 48 ) int -> rax "dup spill"
; V24 tmp13 [V24,T03] ( 3, 48 ) int -> rax "dup spill"
; V25 tmp14 [V25,T62] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V25 tmp14 [V25,T54] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V26 tmp15 [V26,T53] ( 2, 8 ) int -> r8 "dup spill"
; V26 tmp15 [V26,T45] ( 2, 8 ) int -> r8 "dup spill"
;* V27 tmp16 [V27 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V27 tmp16 [V27 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V28 tmp17 [V28,T18] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V28 tmp17 [V28,T14] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V29 tmp18 [V29,T26] ( 4, 32 ) long -> r15 "Inline stloc first use temp"
; V29 tmp18 [V29,T25] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V30 tmp19 [V30,T04] ( 3, 48 ) int -> rax "dup spill"
; V30 tmp19 [V30,T04] ( 3, 48 ) int -> rax "dup spill"
; V31 tmp20 [V31,T63] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V31 tmp20 [V31,T55] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V32 tmp21 [V32,T54] ( 2, 8 ) int -> r8 "dup spill"
; V32 tmp21 [V32,T46] ( 2, 8 ) int -> r8 "dup spill"
;* V33 tmp22 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V33 tmp22 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V34 tmp23 [V34,T19] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V34 tmp23 [V34,T15] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V35 tmp24 [V35,T27] ( 4, 32 ) long -> r15 "Inline stloc first use temp"
; V35 tmp24 [V35,T26] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V36 tmp25 [V36,T05] ( 3, 48 ) int -> rax "dup spill"
; V36 tmp25 [V36,T05] ( 3, 48 ) int -> rax "dup spill"
; V37 tmp26 [V37,T64] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V37 tmp26 [V37,T56] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V38 tmp27 [V38,T55] ( 2, 8 ) int -> r8 "dup spill"
; V38 tmp27 [V38,T47] ( 2, 8 ) int -> r8 "dup spill"
;* V39 tmp28 [V39 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V39 tmp28 [V39 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V40 tmp29 [V40,T20] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V40 tmp29 [V40,T16] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V41 tmp30 [V41,T33] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V41 tmp30 [V41,T27] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V42 tmp31 [V42,T06] ( 3, 48 ) int -> rax "dup spill"
; V42 tmp31 [V42,T06] ( 3, 48 ) int -> rax "dup spill"
; V43 tmp32 [V43,T50] ( 4, 8 ) int -> r15 "Inline stloc first use temp"
; V43 tmp32 [V43,T57] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V44 tmp33 [V44,T56] ( 2, 8 ) int -> r8 "dup spill"
; V44 tmp33 [V44,T48] ( 2, 8 ) int -> r8 "dup spill"
;* V45 tmp34 [V45 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V45 tmp34 [V45 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V46 tmp35 [V46,T21] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V46 tmp35 [V46,T17] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V47 tmp36 [V47,T28] ( 4, 32 ) long -> r15 "Inline stloc first use temp"
; V47 tmp36 [V47,T28] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V48 tmp37 [V48,T07] ( 3, 48 ) int -> rax "dup spill"
; V48 tmp37 [V48,T07] ( 3, 48 ) int -> rax "dup spill"
; V49 tmp38 [V49,T65] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V49 tmp38 [V49,T58] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V50 tmp39 [V50,T57] ( 2, 8 ) int -> r8 "dup spill"
; V50 tmp39 [V50,T49] ( 2, 8 ) int -> r8 "dup spill"
;* V51 tmp40 [V51 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V51 tmp40 [V51 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V52 tmp41 [V52,T22] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V52 tmp41 [V52,T18] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V53 tmp42 [V53,T34] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V53 tmp42 [V53,T29] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V54 tmp43 [V54,T08] ( 3, 48 ) int -> rax "dup spill"
; V54 tmp43 [V54,T08] ( 3, 48 ) int -> rax "dup spill"
; V55 tmp44 [V55,T66] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V55 tmp44 [V55,T59] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V56 tmp45 [V56,T58] ( 2, 8 ) int -> r8 "dup spill"
; V56 tmp45 [V56,T50] ( 2, 8 ) int -> r8 "dup spill"
;* V57 tmp46 [V57 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V57 tmp46 [V57 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V58 tmp47 [V58,T23] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V58 tmp47 [V58,T19] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V59 tmp48 [V59,T35] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V59 tmp48 [V59,T30] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V60 tmp49 [V60,T09] ( 3, 48 ) int -> rax "dup spill"
; V60 tmp49 [V60,T09] ( 3, 48 ) int -> rax "dup spill"
; V61 tmp50 [V61,T67] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V61 tmp50 [V61,T60] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V62 tmp51 [V62,T59] ( 2, 8 ) int -> r8 "dup spill"
; V62 tmp51 [V62,T51] ( 2, 8 ) int -> r8 "dup spill"
;* V63 tmp52 [V63 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V63 tmp52 [V63 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V64 tmp53 [V64,T24] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V64 tmp53 [V64,T20] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V65 tmp54 [V65,T36] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V65 tmp54 [V65,T31] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V66 tmp55 [V66,T10] ( 3, 48 ) int -> rax "dup spill"
; V66 tmp55 [V66,T10] ( 3, 48 ) int -> rax "dup spill"
; V67 tmp56 [V67,T51] ( 4, 8 ) int -> r15 "Inline stloc first use temp"
; V67 tmp56 [V67,T61] ( 3, 6 ) int -> r15 "Inline stloc first use temp"
; V68 tmp57 [V68,T60] ( 2, 8 ) int -> r8 "dup spill"
; V68 tmp57 [V68,T52] ( 2, 8 ) int -> r8 "dup spill"
;* V69 tmp58 [V69 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V69 tmp58 [V69 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V70 tmp59 [V70,T25] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V70 tmp59 [V70,T21] ( 7, 44 ) int -> rcx "Inline stloc first use temp"
; V71 tmp60 [V71,T29] ( 4, 32 ) long -> r15 "Inline stloc first use temp"
; V71 tmp60 [V71,T32] ( 3, 24 ) long -> r15 "Inline stloc first use temp"
; V72 tmp61 [V72,T11] ( 3, 48 ) int -> rdx "dup spill"
; V72 tmp61 [V72,T11] ( 3, 48 ) int -> rdx "dup spill"
; V73 tmp62 [V73,T41] ( 2, 16 ) bool -> rcx "Inlining Arg"
; V73 tmp62 [V73,T37] ( 2, 16 ) bool -> rcx "Inlining Arg"
; V74 tmp63 [V74,T47] ( 2, 10 ) ref -> rax class-hnd "Inlining Arg"
; V74 tmp63 [V74,T41] ( 2, 10 ) ref -> rax class-hnd "Inlining Arg"
; V75 tmp64 [V75,T48] ( 2, 10 ) ref -> rdx class-hnd "Inlining Arg"
; V75 tmp64 [V75,T42] ( 2, 10 ) ref -> rdx class-hnd "Inlining Arg"
; V76 cse0 [V76,T43] ( 3, 12 ) ref -> rdx "CSE - conservative"
; V76 cse0 [V76,T39] ( 3, 12 ) ref -> rdx "CSE - conservative"
; V77 cse1 [V77,T70] ( 3, 3 ) ref -> rdx "CSE - conservative"
; V77 cse1 [V77,T64] ( 3, 3 ) ref -> rdx "CSE - conservative"
; V78 rat0 [V78,T37] ( 3, 24 ) int -> r12 "ReplaceWithLclVar is creating a new local variable"
; V78 rat0 [V78,T33] ( 3, 24 ) int -> r12 "ReplaceWithLclVar is creating a new local variable"
; V79 rat1 [V79,T12] ( 3, 48 ) long -> rdx "ReplaceWithLclVar is creating a new local variable"
; V80 rat2 [V80,T13] ( 3, 48 ) long -> rdx "ReplaceWithLclVar is creating a new local variable"
; V81 rat3 [V81,T44] ( 3, 12 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
; V82 rat4 [V82,T14] ( 3, 48 ) long -> rdx "ReplaceWithLclVar is creating a new local variable"
; V83 rat5 [V83,T45] ( 3, 12 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
; V84 rat6 [V84,T15] ( 3, 48 ) long -> rdx "ReplaceWithLclVar is creating a new local variable"
;
;
; Lcl frame size = 32
; Lcl frame size = 32


G_M57020_IG01: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
G_M57020_IG01: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push r15
push r15
push r14
push r14
push r12
push r12
push rdi
push rdi
push rsi
push rsi
push rbp
push rbp
push rbx
push rbx
sub rsp, 32
sub rsp, 32
mov rbx, rcx
mov rbx, rcx
mov esi, edx
mov esi, edx
mov edi, r8d
mov edi, r8d
;; bbWeight=1 PerfScore 8.00
;; bbWeight=1 PerfScore 8.00
G_M57020_IG02: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG02: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp esi, 6
cmp esi, 6
setb cl
setb cl
movzx rcx, cl
movzx rcx, cl
mov rdx, qword ptr [(reloc)]
mov rdx, qword ptr [(reloc)]
mov rdx, gword ptr [rdx]
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
; gcrRegs +[rdx]
mov rax, rdx
mov rax, rdx
; gcrRegs +[rax]
; gcrRegs +[rax]
test ecx, ecx
test ecx, ecx
jne SHORT G_M57020_IG04
jne SHORT G_M57020_IG04
;; bbWeight=1 PerfScore 7.00
;; bbWeight=1 PerfScore 7.00
G_M57020_IG03: ; gcrefRegs=00000005 {rax rdx}, byrefRegs=00000000 {}, byref
G_M57020_IG03: ; gcrefRegs=00000005 {rax rdx}, byrefRegs=00000000 {}, byref
mov rcx, rax
mov rcx, rax
; gcrRegs +[rcx]
; gcrRegs +[rcx]
call [hackishModuleName:hackishMethodName()]
call [hackishModuleName:hackishMethodName()]
; gcrRegs -[rax rcx rdx]
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
; gcr arg pop 0
;; bbWeight=0.25 PerfScore 0.81
;; bbWeight=0.25 PerfScore 0.81
G_M57020_IG04: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG04: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
xor ebp, ebp
xor ebp, ebp
cmp esi, 2
cmp esi, 2
jbe SHORT G_M57020_IG06
jbe SHORT G_M57020_IG06
;; bbWeight=1 PerfScore 1.50
;; bbWeight=1 PerfScore 1.50
G_M57020_IG05: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG05: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ebp, esi
mov ebp, esi
shl ebp, 5
shl ebp, 5
add ebp, -65
add ebp, -65
mov eax, esi
mov eax, esi
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
lzcnt eax, eax
lzcnt eax, eax
sub ebp, eax
sub ebp, eax
imul ebp, ebp, 77
imul ebp, ebp, 77
sar ebp, 8
sar ebp, 8
inc ebp
inc ebp
cmp ebp, edi
cmp ebp, edi
jg G_M57020_IG50
jg G_M57020_IG50
;; bbWeight=0.50 PerfScore 6.25
;; bbWeight=0.50 PerfScore 6.25
G_M57020_IG06: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG06: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
lea eax, [rdi-28]
lea eax, [rdi-28]
cmp ebp, eax
cmp ebp, eax
jge SHORT G_M57020_IG08
jge SHORT G_M57020_IG08
;; bbWeight=1 PerfScore 1.75
;; bbWeight=1 PerfScore 1.75
G_M57020_IG07: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG07: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
lea ebp, [rdi-28]
lea ebp, [rdi-28]
;; bbWeight=0.50 PerfScore 0.25
;; bbWeight=0.50 PerfScore 0.25
G_M57020_IG08: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG08: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
test ebp, ebp
test ebp, ebp
je G_M57020_IG48
je G_M57020_IG48
;; bbWeight=1 PerfScore 1.25
;; bbWeight=1 PerfScore 1.25
G_M57020_IG09: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG09: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
sub edi, ebp
sub edi, ebp
xor r14d, r14d
xor r14d, r14d
xor r15d, r15d
xor r15d, r15d
;; bbWeight=0.50 PerfScore 0.38
;; bbWeight=0.50 PerfScore 0.38
G_M57020_IG10: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG10: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
or r14d, r15d
or r14d, r15d
lea r12d, [rbp-1]
lea r12d, [rbp-1]
cmp r12d, 7
cmp r12d, 7
ja G_M57020_IG35
ja G_M57020_IG35
mov eax, r12d
mov eax, r12d
lea rdx, [reloc @RWD00]
lea rdx, [reloc @RWD00]
mov edx, dword ptr [rdx+4*rax]
mov edx, dword ptr [rdx+4*rax]
lea rcx, G_M57020_IG02
lea rcx, G_M57020_IG02
add rdx, rcx
add rdx, rcx
jmp rdx
jmp rdx
;; bbWeight=4 PerfScore 32.00
;; bbWeight=4 PerfScore 32.00
G_M57020_IG11: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG11: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, esi
mov eax, esi
mov r15d, dword ptr [rbx+4*rax]
mov r15d, dword ptr [rbx+4*rax]
mov edx, 0xD1FFAB1E
mov r8d, 0xD1FFAB1E
mov eax, r15d
mov eax, r15d
mul edx:eax, edx
imul r8, rax
shr edx, 3
shr r8, 35
mov r8d, edx
lea eax, [r8+4*r8]
lea eax, [r8+4*r8]
add eax, eax
add eax, eax
sub r15d, eax
sub r15d, eax
lea ecx, [rsi-1]
lea ecx, [rsi-1]
test ecx, ecx
test ecx, ecx
jl SHORT G_M57020_IG13
jl SHORT G_M57020_IG13
;; bbWeight=2 PerfScore 19.50
;; bbWeight=2 PerfScore 19.00
G_M57020_IG12: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG12: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx
mov eax, ecx
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
mov r9d, eax
mov r9d, eax
mov r15d, r15d
mov r15d, r15d
shl r15, 32
shl r15, 32
add r15, r9
add r15, r9
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
mov rax, r15
mov rax, r15
mul rdx:rax, rdx
mul rdx:rax, rdx
shr rdx, 3
shr rdx, 3
mov eax, edx
mov eax, edx
mov edx, ecx
mov edx, ecx
mov dword ptr [rbx+4*rdx], eax
mov dword ptr [rbx+4*rdx], eax
lea eax, [rax+4*rax]
lea eax, [rax+4*rax]
add eax, eax
add eax, eax
sub r15d, eax
sub r15d, eax
dec ecx
dec ecx
test ecx, ecx
test ecx, ecx
jge SHORT G_M57020_IG12
jge SHORT G_M57020_IG12
;; bbWeight=8 PerfScore 108.00
;; bbWeight=8 PerfScore 108.00
G_M57020_IG13: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG13: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 10
mov ecx, 10
jmp G_M57020_IG38
jmp G_M57020_IG38
;; bbWeight=2 PerfScore 4.50
;; bbWeight=2 PerfScore 4.50
G_M57020_IG14: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG14: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, esi
mov r8d, esi
mov r15d, dword ptr [rbx+4*rax]
mov r15d, dword ptr [rbx+4*r8]
mov edx, 0xD1FFAB1E
mov eax, r15d
mov eax, r15d
mul edx:eax, edx
imul r8, rax, 0xD1FFAB1E
shr edx, 5
shr r8, 37
mov r8d, edx
imul eax, r8d, 100
imul eax, r8d, 100
sub r15d, eax
sub r15d, eax
lea ecx, [rsi-1]
lea ecx, [rsi-1]
test ecx, ecx
test ecx, ecx
jl SHORT G_M57020_IG16
jl SHORT G_M57020_IG16
;; bbWeight=2 PerfScore 22.00
;; bbWeight=2 PerfScore 21.00
G_M57020_IG15: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG15: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx
mov eax, ecx
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
mov r9d, eax
mov r9d, eax
mov r15d, r15d
mov r15d, r15d
shl r15, 32
shl r15, 32
add r15, r9
add r15, r9
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
mov rax, r15
mov rax, r15
shr rax, 2
mul rdx:rax, rdx
mul rdx:rax, rdx
mov rax, r15
shr rdx, 2
sub rax, rdx
mov eax, edx
shr rax, 1
add rax, rdx
shr rax, 6
mov edx, ecx
mov edx, ecx
mov dword ptr [rbx+4*rdx], eax
mov dword ptr [rbx+4*rdx], eax
imul eax, eax, 100
imul eax, eax, 100
sub r15d, eax
sub r15d, eax
dec ecx
dec ecx
test ecx, ecx
test ecx, ecx
jge SHORT G_M57020_IG15
jge SHORT G_M57020_IG15
;; bbWeight=8 PerfScore 126.00
;; bbWeight=8 PerfScore 134.00
G_M57020_IG16: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG16: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 100
mov ecx, 100
jmp G_M57020_IG38
jmp G_M57020_IG38
;; bbWeight=2 PerfScore 4.50
;; bbWeight=2 PerfScore 4.50
G_M57020_IG17: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG17: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, esi
mov r8d, esi
mov r15d, dword ptr [rbx+4*rax]
mov r15d, dword ptr [rbx+4*r8]
mov edx, 0xD1FFAB1E
mov eax, r15d
mov eax, r15d
mul edx:eax, edx
imul r8, rax, 0xD1FFAB1E
shr edx, 6
shr r8, 38
mov r8d, edx
imul eax, r8d, 0x3E8
imul eax, r8d, 0x3E8
sub r15d, eax
sub r15d, eax
lea ecx, [rsi-1]
lea ecx, [rsi-1]
test ecx, ecx
test ecx, ecx
jl SHORT G_M57020_IG19
jl SHORT G_M57020_IG19
;; bbWeight=2 PerfScore 22.00
;; bbWeight=2 PerfScore 21.00
G_M57020_IG18: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG18: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx
mov eax, ecx
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
mov r9d, eax
mov r9d, eax
mov r15d, r15d
mov r15d, r15d
shl r15, 32
shl r15, 32
add r15, r9
add r15, r9
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
mov rax, r15
mov rax, r15
shr rax, 3
mul rdx:rax, rdx
mul rdx:rax, rdx
mov rax, r15
shr rdx, 4
sub rax, rdx
mov eax, edx
shr rax, 1
add rax, rdx
shr rax, 9
mov edx, ecx
mov edx, ecx
mov dword ptr [rbx+4*rdx], eax
mov dword ptr [rbx+4*rdx], eax
imul eax, eax, 0x3E8
imul eax, eax, 0x3E8
sub r15d, eax
sub r15d, eax
dec ecx
dec ecx
test ecx, ecx
test ecx, ecx
jge SHORT G_M57020_IG18
jge SHORT G_M57020_IG18
;; bbWeight=8 PerfScore 126.00
;; bbWeight=8 PerfScore 134.00
G_M57020_IG19: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG19: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0x3E8
mov ecx, 0x3E8
jmp G_M57020_IG38
jmp G_M57020_IG38
;; bbWeight=2 PerfScore 4.50
;; bbWeight=2 PerfScore 4.50
G_M57020_IG20: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG20: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, esi
mov r8d, esi
mov r15d, dword ptr [rbx+4*rax]
mov r15d, dword ptr [rbx+4*r8]
mov edx, 0xD1FFAB1E
mov r8d, 0xD1FFAB1E
mov eax, r15d
mov eax, r15d
mul edx:eax, edx
imul r8, rax
shr edx, 13
shr r8, 45
mov r8d, edx
imul eax, r8d, 0x2710
imul eax, r8d, 0x2710
sub r15d, eax
sub r15d, eax
lea ecx, [rsi-1]
lea ecx, [rsi-1]
test ecx, ecx
test ecx, ecx
jl SHORT G_M57020_IG22
jl SHORT G_M57020_IG22
;; bbWeight=2 PerfScore 22.00
;; bbWeight=2 PerfScore 21.50
G_M57020_IG21: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG21: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx
mov eax, ecx
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
mov r9d, eax
mov r9d, eax
mov r15d, r15d
mov r15d, r15d
shl r15, 32
shl r15, 32
add r15, r9
add r15, r9
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
mov rax, r15
mov rax, r15
mul rdx:rax, rdx
mul rdx:rax, rdx
shr rdx, 11
shr rdx, 11
mov eax, edx
mov eax, edx
mov edx, ecx
mov edx, ecx
mov dword ptr [rbx+4*rdx], eax
mov dword ptr [rbx+4*rdx], eax
imul eax, eax, 0x2710
imul eax, eax, 0x2710
sub r15d, eax
sub r15d, eax
dec ecx
dec ecx
test ecx, ecx
test ecx, ecx
jge SHORT G_M57020_IG21
jge SHORT G_M57020_IG21
;; bbWeight=8 PerfScore 118.00
;; bbWeight=8 PerfScore 118.00
G_M57020_IG22: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG22: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0x2710
mov ecx, 0x2710
jmp G_M57020_IG38
jmp G_M57020_IG38
;; bbWeight=2 PerfScore 4.50
;; bbWeight=2 PerfScore 4.50
G_M57020_IG23: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG23: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, esi
mov r8d, esi
mov r15d, dword ptr [rbx+4*rax]
mov r15d, dword ptr [rbx+4*r8]
mov edx, 0xD1FFAB1E
mov eax, r15d
mov eax, r15d
mul edx:eax, edx
shr eax, 5
mov r8d, r15d
imul r8, rax, 0xD1FFAB1E
sub r8d, edx
shr r8, 39
shr r8d, 1
add r8d, edx
shr r8d, 16
imul eax, r8d, 0x186A0
imul eax, r8d, 0x186A0
sub r15d, eax
sub r15d, eax
lea ecx, [rsi-1]
lea ecx, [rsi-1]
test ecx, ecx
test ecx, ecx
jl SHORT G_M57020_IG25
jl SHORT G_M57020_IG25
;; bbWeight=2 PerfScore 24.00
;; bbWeight=2 PerfScore 25.00
G_M57020_IG24: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG24: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx
mov eax, ecx
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
mov r9d, eax
mov r9d, eax
mov r15d, r15d
mov r15d, r15d
shl r15, 32
shl r15, 32
add r15, r9
add r15, r9
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
mov rax, r15
mov rax, r15
shr rax, 5
mul rdx:rax, rdx
mul rdx:rax, rdx
mov rax, r15
shr rdx, 7
sub rax, rdx
mov eax, edx
shr rax, 1
add rax, rdx
shr rax, 16
mov edx, ecx
mov edx, ecx
mov dword ptr [rbx+4*rdx], eax
mov dword ptr [rbx+4*rdx], eax
imul eax, eax, 0x186A0
imul eax, eax, 0x186A0
sub r15d, eax
sub r15d, eax
dec ecx
dec ecx
test ecx, ecx
test ecx, ecx
jge SHORT G_M57020_IG24
jge SHORT G_M57020_IG24
;; bbWeight=8 PerfScore 126.00
;; bbWeight=8 PerfScore 134.00
G_M57020_IG25: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG25: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0x186A0
mov ecx, 0x186A0
jmp G_M57020_IG38
jmp G_M57020_IG38
;; bbWeight=2 PerfScore 4.50
;; bbWeight=2 PerfScore 4.50
G_M57020_IG26: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG26: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, esi
mov r8d, esi
mov r15d, dword ptr [rbx+4*rax]
mov r15d, dword ptr [rbx+4*r8]
mov edx, 0xD1FFAB1E
mov eax, r15d
mov eax, r15d
mul edx:eax, edx
imul r8, rax, 0xD1FFAB1E
shr edx, 18
shr r8, 50
mov r8d, edx
imul eax, r8d, 0xD1FFAB1E
imul eax, r8d, 0xD1FFAB1E
sub r15d, eax
sub r15d, eax
lea ecx, [rsi-1]
lea ecx, [rsi-1]
test ecx, ecx
test ecx, ecx
jl SHORT G_M57020_IG28
jl SHORT G_M57020_IG28
;; bbWeight=2 PerfScore 22.00
;; bbWeight=2 PerfScore 21.00
G_M57020_IG27: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG27: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx
mov eax, ecx
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
mov r9d, eax
mov r9d, eax
mov r15d, r15d
mov r15d, r15d
shl r15, 32
shl r15, 32
add r15, r9
add r15, r9
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
mov rax, r15
mov rax, r15
mul rdx:rax, rdx
mul rdx:rax, rdx
shr rdx, 18
shr rdx, 18
mov eax, edx
mov eax, edx
mov edx, ecx
mov edx, ecx
mov dword ptr [rbx+4*rdx], eax
mov dword ptr [rbx+4*rdx], eax
imul eax, eax, 0xD1FFAB1E
imul eax, eax, 0xD1FFAB1E
sub r15d, eax
sub r15d, eax
dec ecx
dec ecx
test ecx, ecx
test ecx, ecx
jge SHORT G_M57020_IG27
jge SHORT G_M57020_IG27
;; bbWeight=8 PerfScore 118.00
;; bbWeight=8 PerfScore 118.00
G_M57020_IG28: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG28: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E
mov ecx, 0xD1FFAB1E
jmp G_M57020_IG38
jmp G_M57020_IG38
;; bbWeight=2 PerfScore 4.50
;; bbWeight=2 PerfScore 4.50
G_M57020_IG29: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG29: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, esi
mov r8d, esi
mov r15d, dword ptr [rbx+4*rax]
mov r15d, dword ptr [rbx+4*r8]
mov edx, 0xD1FFAB1E
mov eax, r15d
mov eax, r15d
mul edx:eax, edx
imul r8, rax, 0xD1FFAB1E
shr edx, 22
shr r8, 54
mov r8d, edx
imul eax, r8d, 0xD1FFAB1E
imul eax, r8d, 0xD1FFAB1E
sub r15d, eax
sub r15d, eax
lea ecx, [rsi-1]
lea ecx, [rsi-1]
test ecx, ecx
test ecx, ecx
jl SHORT G_M57020_IG31
jl SHORT G_M57020_IG31
;; bbWeight=2 PerfScore 22.00
;; bbWeight=2 PerfScore 21.00
G_M57020_IG30: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG30: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx
mov eax, ecx
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
mov r9d, eax
mov r9d, eax
mov r15d, r15d
mov r15d, r15d
shl r15, 32
shl r15, 32
add r15, r9
add r15, r9
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
mov rax, r15
mov rax, r15
mul rdx:rax, rdx
mul rdx:rax, rdx
shr rdx, 23
shr rdx, 23
mov eax, edx
mov eax, edx
mov edx, ecx
mov edx, ecx
mov dword ptr [rbx+4*rdx], eax
mov dword ptr [rbx+4*rdx], eax
imul eax, eax, 0xD1FFAB1E
imul eax, eax, 0xD1FFAB1E
sub r15d, eax
sub r15d, eax
dec ecx
dec ecx
test ecx, ecx
test ecx, ecx
jge SHORT G_M57020_IG30
jge SHORT G_M57020_IG30
;; bbWeight=8 PerfScore 118.00
;; bbWeight=8 PerfScore 118.00
G_M57020_IG31: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG31: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E
mov ecx, 0xD1FFAB1E
jmp G_M57020_IG38
jmp G_M57020_IG38
;; bbWeight=2 PerfScore 4.50
;; bbWeight=2 PerfScore 4.50
G_M57020_IG32: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG32: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, esi
mov r8d, esi
mov r15d, dword ptr [rbx+4*rax]
mov r15d, dword ptr [rbx+4*r8]
mov edx, 0xD1FFAB1E
mov eax, r15d
mov eax, r15d
mul edx:eax, edx
imul r8, rax, 0xD1FFAB1E
shr edx, 25
shr r8, 57
mov r8d, edx
imul eax, r8d, 0xD1FFAB1E
imul eax, r8d, 0xD1FFAB1E
sub r15d, eax
sub r15d, eax
lea ecx, [rsi-1]
lea ecx, [rsi-1]
test ecx, ecx
test ecx, ecx
jl SHORT G_M57020_IG34
jl SHORT G_M57020_IG34
;; bbWeight=2 PerfScore 22.00
;; bbWeight=2 PerfScore 21.00
G_M57020_IG33: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG33: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx
mov eax, ecx
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
mov r9d, eax
mov r9d, eax
mov r15d, r15d
mov r15d, r15d
shl r15, 32
shl r15, 32
add r15, r9
add r15, r9
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
mov rax, r15
mov rax, r15
mul rdx:rax, rdx
mul rdx:rax, rdx
shr rdx, 26
shr rdx, 26
mov eax, edx
mov eax, edx
mov edx, ecx
mov edx, ecx
mov dword ptr [rbx+4*rdx], eax
mov dword ptr [rbx+4*rdx], eax
imul eax, eax, 0xD1FFAB1E
imul eax, eax, 0xD1FFAB1E
sub r15d, eax
sub r15d, eax
dec ecx
dec ecx
test ecx, ecx
test ecx, ecx
jge SHORT G_M57020_IG33
jge SHORT G_M57020_IG33
;; bbWeight=8 PerfScore 118.00
;; bbWeight=8 PerfScore 118.00
G_M57020_IG34: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG34: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E
mov ecx, 0xD1FFAB1E
jmp SHORT G_M57020_IG38
jmp SHORT G_M57020_IG38
;; bbWeight=2 PerfScore 4.50
;; bbWeight=2 PerfScore 4.50
G_M57020_IG35: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG35: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, esi
mov eax, esi
mov r15d, dword ptr [rbx+4*rax]
mov r15d, dword ptr [rbx+4*rax]
mov edx, 0xD1FFAB1E
mov eax, r15d
mov eax, r15d
mul edx:eax, edx
shr eax, 9
mov r8d, r15d
imul r8, rax, 0xD1FFAB1E
sub r8d, edx
shr r8, 39
shr r8d, 1
add r8d, edx
shr r8d, 29
imul eax, r8d, 0xD1FFAB1E
imul eax, r8d, 0xD1FFAB1E
sub r15d, eax
sub r15d, eax
lea ecx, [rsi-1]
lea ecx, [rsi-1]
test ecx, ecx
test ecx, ecx
jl SHORT G_M57020_IG37
jl SHORT G_M57020_IG37
;; bbWeight=2 PerfScore 24.00
;; bbWeight=2 PerfScore 25.00
G_M57020_IG36: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG36: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx
mov eax, ecx
mov eax, dword ptr [rbx+4*rax]
mov eax, dword ptr [rbx+4*rax]
mov r9d, eax
mov r9d, eax
mov r15d, r15d
mov r15d, r15d
shl r15, 32
shl r15, 32
add r15, r9
add r15, r9
mov rdx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
mov rax, r15
mov rax, r15
shr rax, 9
mul rdx:rax, rdx
mul rdx:rax, rdx
mov rax, r15
shr rdx, 11
sub rax, rdx
shr rax, 1
add rdx, rax
shr rdx, 29
mov eax, ecx
mov eax, ecx
mov dword ptr [rbx+4*rax], edx
mov dword ptr [rbx+4*rax], edx
imul edx, edx, 0xD1FFAB1E
imul edx, edx, 0xD1FFAB1E
sub r15d, edx
sub r15d, edx
dec ecx
dec ecx
test ecx, ecx
test ecx, ecx
jge SHORT G_M57020_IG36
jge SHORT G_M57020_IG36
;; bbWeight=8 PerfScore 126.00
;; bbWeight=8 PerfScore 132.00
G_M57020_IG37: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG37: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E
mov ecx, 0xD1FFAB1E
;; bbWeight=2 PerfScore 0.50
;; bbWeight=2 PerfScore 0.50
G_M57020_IG38: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG38: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov edx, esi
mov edx, esi
mov dword ptr [rbx+4*rdx], r8d
mov dword ptr [rbx+4*rdx], r8d
test r8d, r8d
test r8d, r8d
jne SHORT G_M57020_IG40
jne SHORT G_M57020_IG40
;; bbWeight=4 PerfScore 10.00
;; bbWeight=4 PerfScore 10.00
G_M57020_IG39: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG39: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
test esi, esi
test esi, esi
je SHORT G_M57020_IG40
je SHORT G_M57020_IG40
dec esi
dec esi
;; bbWeight=2 PerfScore 3.00
;; bbWeight=2 PerfScore 3.00
G_M57020_IG40: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
G_M57020_IG40: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
add ebp, -9
add ebp, -9
test ebp, ebp
test ebp, ebp
jg G_M57020_IG10
jg G_M57020_IG10
;; bbWeight=4 PerfScore 6.00
;; bbWeight=4 PerfScore 6.00
G_M57020_IG41: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG41: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp esi, 2
cmp esi, 2
jbe SHORT G_M57020_IG42
jbe SHORT G_M57020_IG42
test edi, edi
test edi, edi
je G_M57020_IG50
je G_M57020_IG50
mov ebp, 1
mov ebp, 1
dec edi
dec edi
jmp G_M57020_IG10
jmp G_M57020_IG10
;; bbWeight=0.50 PerfScore 2.50
;; bbWeight=0.50 PerfScore 2.50
G_M57020_IG42: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG42: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
shr ecx, 1
shr ecx, 1
cmp ecx, r15d
cmp ecx, r15d
ja SHORT G_M57020_IG48
ja SHORT G_M57020_IG48
cmp ecx, r15d
cmp ecx, r15d
jb SHORT G_M57020_IG43
jb SHORT G_M57020_IG43
mov ecx, dword ptr [rbx]
mov ecx, dword ptr [rbx]
and ecx, 1
and ecx, 1
or ecx, r14d
or ecx, r14d
je SHORT G_M57020_IG48
je SHORT G_M57020_IG48
;; bbWeight=0.50 PerfScore 3.25
;; bbWeight=0.50 PerfScore 3.25
G_M57020_IG43: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG43: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [rbx]
mov eax, dword ptr [rbx]
inc eax
inc eax
mov dword ptr [rbx], eax
mov dword ptr [rbx], eax
test eax, eax
test eax, eax
jne SHORT G_M57020_IG48
jne SHORT G_M57020_IG48
xor esi, esi
xor esi, esi
;; bbWeight=0.50 PerfScore 2.38
;; bbWeight=0.50 PerfScore 2.38
G_M57020_IG44: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
G_M57020_IG44: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
lea ecx, [rsi+1]
lea ecx, [rsi+1]
cmp ecx, 6
cmp ecx, 6
setb cl
setb cl
movzx rcx, cl
movzx rcx, cl
mov rdx, qword ptr [(reloc)]
mov rdx, qword ptr [(reloc)]
mov rdx, gword ptr [rdx]
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
; gcrRegs +[rdx]
mov rax, rdx
mov rax, rdx
; gcrRegs +[rax]
; gcrRegs +[rax]
test ecx, ecx
test ecx, ecx
jne SHORT G_M57020_IG46
jne SHORT G_M57020_IG46
;; bbWeight=4 PerfScore 30.00
;; bbWeight=4 PerfScore 30.00
G_M57020_IG45: ; gcrefRegs=00000005 {rax rdx}, byrefRegs=000000
G_M57020_IG45: ; gcrefRegs=00000005 {rax rdx}, byrefRegs=00000000 {}, byref
mov rcx, rax
; gcrRegs +[rcx]
call [hackishModuleName:hackishMethodName()]
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
;; bbWeight=1 PerfScore 3.25
G_M57020_IG46: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
inc esi
mov eax, esi
lea rax, [rbx+4*rax]
mov edx, dword ptr [rax]
inc edx
mov dword ptr [rax], edx
test edx, edx
je SHORT G_M57020_IG44
;; bbWeight=4 PerfScore 22.00
G_M57020_IG47: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp esi, 2
jbe SHORT G_M57020_IG48
test edi, edi
je SHORT G_M57020_IG50
xor r14d, r14d
xor r15d, r15d
mov ebp, 1
dec edi
jmp G_M57020_IG10
;; bbWeight=0.50 PerfScore 2.75
G_M57020_IG48: ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, edi
;; bbWeight=1 PerfScore 0.25
G_M57020_IG49: ; , epilog, nogc, extend
add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
pop r14
pop r15
ret
;; bbWeight=1 PerfScore 4.75
G_M57020_IG50: ; gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov ecx, 15