Comparing sensitive data, confidential files or internal emails?

Most legal and privacy policies prohibit uploading sensitive data online. Diffchecker Desktop ensures your confidential information never leaves your computer. Work offline and compare documents securely.

FannkuchRedux-9

Created Diff never expires
94 removals
476 lines
106 additions
478 lines
; Assembly listing for method MiniBench.FannkuchRedux_9:Run(int,int)
; Assembly listing for method MiniBench.FannkuchRedux_9:Run(int,int)
; Emitting BLENDED_CODE for X64 CPU with AVX - Windows
; Emitting BLENDED_CODE for X64 CPU with AVX - Windows
; optimized code
; optimized code
; rbp based frame
; rbp based frame
; fully interruptible
; fully interruptible
; Final local variable assignments
; Final local variable assignments
;
;
; V00 arg0 [V00,T30] ( 15, 47.50) int -> rcx
; V00 arg0 [V00,T30] ( 15, 47.50) int -> rcx
; V01 arg1 [V01,T40] ( 5, 22 ) int -> r8
; V01 arg1 [V01,T40] ( 5, 22 ) int -> r8
; V02 loc0 [V02,T23] ( 4, 89 ) long -> r9
; V02 loc0 [V02,T23] ( 4, 89 ) long -> r9
; V03 loc1 [V03,T45] ( 4, 19 ) int -> rbx
; V03 loc1 [V03,T45] ( 4, 19 ) int -> rbx
; V04 loc2 [V04,T42] ( 6, 22 ) int -> r10
; V04 loc2 [V04,T42] ( 6, 22 ) int -> r10
; V05 loc3 [V05,T43] ( 6, 22 ) int -> r11
; V05 loc3 [V05,T43] ( 6, 22 ) int -> r11
; V06 loc4 [V06,T03] ( 22,517 ) long -> rsi
; V06 loc4 [V06,T03] ( 22,517 ) long -> rsi
; V07 loc5 [V07,T11] ( 17,265 ) long -> rdi
; V07 loc5 [V07,T11] ( 17,265 ) long -> rdi
; V08 loc6 [V08,T46] ( 4, 8 ) int -> rax
; V08 loc6 [V08,T46] ( 4, 8 ) int -> rax
; V09 loc7 [V09,T27] ( 5, 58 ) int -> rax
; V09 loc7 [V09,T27] ( 5, 58 ) int -> rax
; V10 loc8 [V10,T37] ( 4, 32 ) int -> rdx
; V10 loc8 [V10,T37] ( 4, 32 ) int -> rdx
; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace"
; V11 OutArgs [V11 ] ( 1, 1 ) lclBlk (32) [rsp+0x00] "OutgoingArgSpace"
; V12 tmp1 [V12,T38] ( 2, 32 ) int -> rbx "dup spill"
; V12 tmp1 [V12,T38] ( 2, 32 ) int -> rbx "dup spill"
; V13 tmp2 [V13,T34] ( 6, 42 ) int -> rax "Inline stloc first use temp"
; V13 tmp2 [V13,T34] ( 6, 42 ) int -> rax "Inline stloc first use temp"
; V14 tmp3 [V14,T21] ( 14,102 ) int -> r14 "Inline stloc first use temp"
; V14 tmp3 [V14,T21] ( 14,102 ) int -> r14 "Inline stloc first use temp"
; V15 tmp4 [V15,T35] ( 4, 36 ) int -> registers "Inlining Arg"
; V15 tmp4 [V15,T35] ( 4, 36 ) int -> registers "Inlining Arg"
; V16 tmp5 [V16,T29] ( 4, 56 ) int -> r15 "Inline stloc first use temp"
; V16 tmp5 [V16,T29] ( 4, 56 ) int -> r15 "Inline stloc first use temp"
; V17 tmp6 [V17,T15] ( 7,168 ) int -> rax "Inline stloc first use temp"
; V17 tmp6 [V17,T15] ( 7,168 ) int -> rax "Inline stloc first use temp"
; V18 tmp7 [V18,T16] ( 6,164 ) int -> registers "Inline stloc first use temp"
; V18 tmp7 [V18,T16] ( 6,164 ) int -> registers "Inline stloc first use temp"
; V19 tmp8 [V19,T44] ( 4, 20 ) int -> rdx "Inline stloc first use temp"
; V19 tmp8 [V19,T44] ( 4, 20 ) int -> rdx "Inline stloc first use temp"
; V20 tmp9 [V20,T28] ( 9, 56 ) int -> rax "Inline stloc first use temp"
; V20 tmp9 [V20,T28] ( 9, 56 ) int -> rax "Inline stloc first use temp"
; V21 tmp10 [V21,T24] ( 4, 80 ) short -> r15 "Inline stloc first use temp"
; V21 tmp10 [V21,T24] ( 4, 80 ) short -> r15 "Inline stloc first use temp"
; V22 tmp11 [V22,T17] ( 6,164 ) long -> rbx "Inline stloc first use temp"
; V22 tmp11 [V22,T17] ( 6,164 ) long -> rbx "Inline stloc first use temp"
; V23 tmp12 [V23,T18] ( 6,164 ) long -> r14 "Inline stloc first use temp"
; V23 tmp12 [V23,T18] ( 6,164 ) long -> r14 "Inline stloc first use temp"
; V24 tmp13 [V24,T19] ( 2,128 ) long -> rbx "dup spill"
; V24 tmp13 [V24,T19] ( 2,128 ) long -> rbx "dup spill"
; V25 tmp14 [V25,T20] ( 2,128 ) long -> r14 "dup spill"
; V25 tmp14 [V25,T20] ( 2,128 ) long -> r14 "dup spill"
;* V26 tmp15 [V26,T56] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V26 tmp15 [V26,T56] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V27 tmp16 [V27,T57] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V27 tmp16 [V27,T57] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
; V28 tmp17 [V28,T47] ( 4, 6.50) int -> rbx "Inline stloc first use temp"
; V28 tmp17 [V28,T47] ( 4, 6.50) int -> rbx "Inline stloc first use temp"
; V29 tmp18 [V29,T33] ( 13, 42 ) int -> r14 "Inline stloc first use temp"
; V29 tmp18 [V29,T33] ( 13, 42 ) int -> r14 "Inline stloc first use temp"
; V30 tmp19 [V30,T26] ( 4, 64 ) short -> rdx "Inline stloc first use temp"
; V30 tmp19 [V30,T26] ( 4, 64 ) short -> rdx "Inline stloc first use temp"
; V31 tmp20 [V31,T09] ( 8,336 ) int -> registers "Inline stloc first use temp"
; V31 tmp20 [V31,T09] ( 8,336 ) int -> registers "Inline stloc first use temp"
; V32 tmp21 [V32,T08] ( 3,384 ) long -> r14 "dup spill"
; V32 tmp21 [V32,T08] ( 3,384 ) long -> r14 "dup spill"
; V33 tmp22 [V33,T13] ( 3,192 ) int -> r15 "Inline stloc first use temp"
; V33 tmp22 [V33,T13] ( 3,192 ) int -> r15 "Inline stloc first use temp"
; V34 tmp23 [V34,T22] ( 3, 96 ) int -> rbx "impSpillLclRefs"
; V34 tmp23 [V34,T22] ( 3, 96 ) int -> rbx "impSpillLclRefs"
; V35 tmp24 [V35,T32] ( 3, 48 ) short -> rbx "Inline stloc first use temp"
; V35 tmp24 [V35,T32] ( 3, 48 ) short -> rbx "Inline stloc first use temp"
; V36 tmp25 [V36,T00] ( 6,656 ) int -> registers "Inline stloc first use temp"
; V36 tmp25 [V36,T00] ( 6,656 ) int -> registers "Inline stloc first use temp"
; V37 tmp26 [V37,T04] ( 2,512 ) int -> r12 "dup spill"
; V37 tmp26 [V37,T04] ( 2,512 ) int -> r12 "dup spill"
; V38 tmp27 [V38,T05] ( 2,512 ) long -> r15 "impSpillLclRefs"
; V38 tmp27 [V38,T05] ( 2,512 ) long -> r15 "impSpillLclRefs"
; V39 tmp28 [V39,T25] ( 4, 80 ) int -> rdx "Inline stloc first use temp"
; V39 tmp28 [V39,T25] ( 4, 80 ) int -> rdx "Inline stloc first use temp"
; V40 tmp29 [V40,T12] ( 9,224 ) int -> rbx "Inline stloc first use temp"
; V40 tmp29 [V40,T12] ( 9,224 ) int -> rbx "Inline stloc first use temp"
; V41 tmp30 [V41,T10] ( 4,320 ) short -> r12 "Inline stloc first use temp"
; V41 tmp30 [V41,T10] ( 4,320 ) short -> r12 "Inline stloc first use temp"
; V42 tmp31 [V42,T01] ( 6,656 ) long -> r14 "Inline stloc first use temp"
; V42 tmp31 [V42,T01] ( 6,656 ) long -> r14 "Inline stloc first use temp"
; V43 tmp32 [V43,T02] ( 6,656 ) long -> r15 "Inline stloc first use temp"
; V43 tmp32 [V43,T02] ( 6,656 ) long -> r15 "Inline stloc first use temp"
; V44 tmp33 [V44,T06] ( 2,512 ) long -> r14 "dup spill"
; V44 tmp33 [V44,T06] ( 2,512 ) long -> r14 "dup spill"
; V45 tmp34 [V45,T07] ( 2,512 ) long -> r15 "dup spill"
; V45 tmp34 [V45,T07] ( 2,512 ) long -> r15 "dup spill"
;* V46 tmp35 [V46,T52] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V46 tmp35 [V46,T52] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V47 tmp36 [V47,T53] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V47 tmp36 [V47,T53] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
; V48 tmp37 [V48,T39] ( 4, 26 ) int -> r14 "Inline stloc first use temp"
; V48 tmp37 [V48,T39] ( 4, 26 ) int -> r14 "Inline stloc first use temp"
; V49 tmp38 [V49,T14] ( 13,168 ) int -> r15 "Inline stloc first use temp"
; V49 tmp38 [V49,T14] ( 13,168 ) int -> r15 "Inline stloc first use temp"
; V50 tmp39 [V50,T31] ( 3, 48 ) ref -> r15 "arr expr"
; V50 tmp39 [V50,T31] ( 3, 48 ) ref -> r15 "arr expr"
; V51 tmp40 [V51,T41] ( 3, 24 ) ref -> r12 "arr expr"
; V51 tmp40 [V51,T41] ( 3, 24 ) ref -> r12 "arr expr"
; V52 tmp41 [V52,T48] ( 3, 6 ) ref -> rax "arr expr"
; V52 tmp41 [V52,T48] ( 3, 6 ) ref -> rax "arr expr"
; V53 tmp42 [V53,T49] ( 3, 6 ) ref -> rax "arr expr"
; V53 tmp42 [V53,T49] ( 3, 6 ) ref -> rax "arr expr"
; V54 GsCookie [V54 ] ( 1, 1 ) long -> [rbp+0x00] do-not-enreg[X] must-init addr-exposed "GSSecurityCookie"
; V54 GsCookie [V54 ] ( 1, 1 ) long -> [rbp+0x00] do-not-enreg[X] must-init addr-exposed "GSSecurityCookie"
; V55 cse0 [V55,T54] ( 3, 3 ) long -> rax "CSE - conservative"
; V55 cse0 [V55,T54] ( 3, 3 ) long -> rax "CSE - conservative"
; V56 cse1 [V56,T55] ( 3, 3 ) long -> r9 "CSE - conservative"
; V56 cse1 [V56,T55] ( 3, 3 ) long -> r9 "CSE - conservative"
; V57 cse2 [V57,T51] ( 4, 4 ) int -> rdx "CSE - conservative"
; V57 cse2 [V57,T51] ( 4, 4 ) int -> rdx "CSE - conservative"
; V58 cse3 [V58,T50] ( 3, 6 ) int -> rax "CSE - conservative"
; V58 cse3 [V58,T50] ( 3, 6 ) int -> rax "CSE - conservative"
; V59 cse4 [V59,T36] ( 2, 36 ) int -> r13 "CSE - moderate"
; V59 cse4 [V59,T36] ( 2, 36 ) int -> r13 "CSE - moderate"
;
;
; Lcl frame size = 40
; Lcl frame size = 40


G_M39841_IG01: ;; offset=0000H
G_M39841_IG01: ;; offset=0000H
55 push rbp
55 push rbp
4157 push r15
4157 push r15
4156 push r14
4156 push r14
4155 push r13
4155 push r13
4154 push r12
4154 push r12
57 push rdi
57 push rdi
56 push rsi
56 push rsi
53 push rbx
53 push rbx
4883EC28 sub rsp, 40
4883EC28 sub rsp, 40
488D6C2420 lea rbp, [rsp+20H]
488D6C2420 lea rbp, [rsp+20H]
33C0 xor rax, rax
33C0 xor rax, rax
48894500 mov qword ptr [rbp], rax
48894500 mov qword ptr [rbp], rax
48B878563412F0DEBC9A mov rax, 0x9ABCDEF012345678
48B878563412F0DEBC9A mov rax, 0x9ABCDEF012345678
48894500 mov qword ptr [rbp], rax
48894500 mov qword ptr [rbp], rax
448BC2 mov r8d, edx
448BC2 mov r8d, edx
;; bbWeight=1 PerfScore 11.50
;; bbWeight=1 PerfScore 11.50
G_M39841_IG02: ;; offset=002CH
G_M39841_IG02: ;; offset=002CH
8BC1 mov eax, ecx
8BC1 mov eax, ecx
41B904000000 mov r9d, 4
41B904000000 mov r9d, 4
49F7E1 mul rdx:rax, r9
49F7E1 mul rdx:rax, r9
0F8224040000 jb G_M39841_IG51
0F8272040000 jb G_M39841_IG51
4C8BC8 mov r9, rax
4C8BC8 mov r9, rax
4D85C9 test r9, r9
4D85C9 test r9, r9
741E je SHORT G_M39841_IG04
741E je SHORT G_M39841_IG04
4983C10F add r9, 15
4983C10F add r9, 15
49C1E904 shr r9, 4
49C1E904 shr r9, 4
4883C420 add rsp, 32
4883C420 add rsp, 32
;; bbWeight=1 PerfScore 7.50
;; bbWeight=1 PerfScore 7.50
G_M39841_IG03: ;; offset=0051H
G_M39841_IG03: ;; offset=0051H
6A00 push 0
6A00 push 0
6A00 push 0
6A00 push 0
49FFC9 dec r9
49FFC9 dec r9
75F7 jne SHORT G_M39841_IG03
75F7 jne SHORT G_M39841_IG03
4883EC20 sub rsp, 32
4883EC20 sub rsp, 32
4C8D4C2420 lea r9, [rsp+20H]
4C8D4C2420 lea r9, [rsp+20H]
;; bbWeight=1 PerfScore 4.00
;; bbWeight=1 PerfScore 4.00
G_M39841_IG04: ;; offset=0063H
G_M39841_IG04: ;; offset=0063H
4533D2 xor r10d, r10d
4533D2 xor r10d, r10d
4533DB xor r11d, r11d
4533DB xor r11d, r11d
8BC1 mov eax, ecx
8BC1 mov eax, ecx
BA02000000 mov edx, 2
BA02000000 mov edx, 2
48F7E2 mul rdx:rax, rdx
48F7E2 mul rdx:rax, rdx
0F82E8030000 jb G_M39841_IG51
0F8236040000 jb G_M39841_IG51
488BF0 mov rsi, rax
488BF0 mov rsi, rax
4885F6 test rsi, rsi
4885F6 test rsi, rsi
741E je SHORT G_M39841_IG06
741E je SHORT G_M39841_IG06
4883C60F add rsi, 15
4883C60F add rsi, 15
48C1EE04 shr rsi, 4
48C1EE04 shr rsi, 4
4883C420 add rsp, 32
4883C420 add rsp, 32
;; bbWeight=1 PerfScore 8.00
;; bbWeight=1 PerfScore 8.00
G_M39841_IG05: ;; offset=008DH
G_M39841_IG05: ;; offset=008DH
6A00 push 0
6A00 push 0
6A00 push 0
6A00 push 0
48FFCE dec rsi
48FFCE dec rsi
75F7 jne SHORT G_M39841_IG05
75F7 jne SHORT G_M39841_IG05
4883EC20 sub rsp, 32
4883EC20 sub rsp, 32
488D742420 lea rsi, [rsp+20H]
488D742420 lea rsi, [rsp+20H]
;; bbWeight=1 PerfScore 4.00
;; bbWeight=1 PerfScore 4.00
G_M39841_IG06: ;; offset=009FH
G_M39841_IG06: ;; offset=009FH
488BF8 mov rdi, rax
488BF8 mov rdi, rax
4885FF test rdi, rdi
4885FF test rdi, rdi
741E je SHORT G_M39841_IG08
741E je SHORT G_M39841_IG08
4883C70F add rdi, 15
4883C70F add rdi, 15
48C1EF04 shr rdi, 4
48C1EF04 shr rdi, 4
4883C420 add rsp, 32
4883C420 add rsp, 32
;; bbWeight=1 PerfScore 4.00
;; bbWeight=1 PerfScore 4.00
G_M39841_IG07: ;; offset=00B3H
G_M39841_IG07: ;; offset=00B3H
6A00 push 0
6A00 push 0
6A00 push 0
6A00 push 0
48FFCF dec rdi
48FFCF dec rdi
75F7 jne SHORT G_M39841_IG07
75F7 jne SHORT G_M39841_IG07
4883EC20 sub rsp, 32
4883EC20 sub rsp, 32
488D7C2420 lea rdi, [rsp+20H]
488D7C2420 lea rdi, [rsp+20H]
;; bbWeight=1 PerfScore 4.00
;; bbWeight=1 PerfScore 4.00
G_M39841_IG08: ;; offset=00C5H
G_M39841_IG08: ;; offset=00C5H
E91A030000 jmp G_M39841_IG47
E968030000 jmp G_M39841_IG47
;; bbWeight=1 PerfScore 2.00
;; bbWeight=1 PerfScore 2.00
G_M39841_IG09: ;; offset=00CAH
G_M39841_IG09: ;; offset=00CAH
410FAFD8 imul ebx, r8d
410FAFD8 imul ebx, r8d
33C0 xor eax, eax
33C0 xor eax, eax
85C9 test ecx, ecx
85C9 test ecx, ecx
7E11 jle SHORT G_M39841_IG11
7E1D jle SHORT G_M39841_IG11
;; bbWeight=2 PerfScore 7.00
0F1F40000F1F840000000000 align
G_M39841_IG10: ;; offset=00D4H
;; bbWeight=2 PerfScore 7.50
G_M39841_IG10: ;; offset=00E0H
0FB6D0 movzx rdx, al
0FB6D0 movzx rdx, al
4C63F0 movsxd r14, eax
4C63F0 movsxd r14, eax
6642891476 mov word ptr [rsi+2*r14], dx
6642891476 mov word ptr [rsi+2*r14], dx
FFC0 inc eax
FFC0 inc eax
3BC1 cmp eax, ecx
3BC1 cmp eax, ecx
7CEF jl SHORT G_M39841_IG10
7CEF jl SHORT G_M39841_IG10
;; bbWeight=8 PerfScore 24.00
;; bbWeight=8 PerfScore 24.00
G_M39841_IG11: ;; offset=00E5H
G_M39841_IG11: ;; offset=00F1H
448D71FF lea r14d, [rcx-1]
448D71FF lea r14d, [rcx-1]
4585F6 test r14d, r14d
4585F6 test r14d, r14d
0F8EB0000000 jle G_M39841_IG18
0F8EBD000000 jle G_M39841_IG18
;; bbWeight=1 PerfScore 1.75
;; bbWeight=1 PerfScore 1.75
G_M39841_IG12: ;; offset=00F2H
G_M39841_IG12: ;; offset=00FEH
48B8A87351C7B1010000 mov rax, 0x1B1C75173A8
48B8A873B4A859020000 mov rax, 0x259A8B473A8
4C8B38 mov r15, gword ptr [rax]
4C8B38 mov r15, gword ptr [rax]
453B7708 cmp r14d, dword ptr [r15+8]
453B7708 cmp r14d, dword ptr [r15+8]
0F835D030000 jae G_M39841_IG52
0F839F030000 jae G_M39841_IG52
4D63E6 movsxd r12, r14d
4D63E6 movsxd r12, r14d
8BC3 mov eax, ebx
8BC3 mov eax, ebx
99 cdq
99 cdq
43F77CA710 idiv edx:eax, dword ptr [r15+4*r12+16]
43F77CA710 idiv edx:eax, dword ptr [r15+4*r12+16]
448BF8 mov r15d, eax
448BF8 mov r15d, eax
4963C6 movsxd rax, r14d
4963C6 movsxd rax, r14d
45893C81 mov dword ptr [r9+4*rax], r15d
45893C81 mov dword ptr [r9+4*rax], r15d
4585FF test r15d, r15d
4585FF test r15d, r15d
7E73 jle SHORT G_M39841_IG17
0F8E7C000000 jle G_M39841_IG17
;; bbWeight=8 PerfScore 284.00
;; bbWeight=8 PerfScore 284.00
G_M39841_IG13: ;; offset=0123H
G_M39841_IG13: ;; offset=0133H
48B8A87351C7B1010000 mov rax, 0x1B1C75173A8
48B8A873B4A859020000 mov rax, 0x259A8B473A8
4C8B20 mov r12, gword ptr [rax]
4C8B20 mov r12, gword ptr [rax]
453B742408 cmp r14d, dword ptr [r12+8]
453B742408 cmp r14d, dword ptr [r12+8]
0F832B030000 jae G_M39841_IG52
0F8369030000 jae G_M39841_IG52
4D63EE movsxd r13, r14d
4D63EE movsxd r13, r14d
8BC3 mov eax, ebx
8BC3 mov eax, ebx
99 cdq
99 cdq
43F77CAC10 idiv edx:eax, dword ptr [r12+4*r13+16]
43F77CAC10 idiv edx:eax, dword ptr [r12+4*r13+16]
418BC6 mov eax, r14d
418BC6 mov eax, r14d
85C0 test eax, eax
85C0 test eax, eax
7C16 jl SHORT G_M39841_IG15
7C19 jl SHORT G_M39841_IG15
;; bbWeight=4 PerfScore 137.00
0F1F00 align
G_M39841_IG14: ;; offset=014DH
;; bbWeight=4 PerfScore 138.00
G_M39841_IG14: ;; offset=0160H
4863D8 movsxd rbx, eax
4863D8 movsxd rbx, eax
480FBF1C5E movsx rbx, word ptr [rsi+2*rbx]
480FBF1C5E movsx rbx, word ptr [rsi+2*rbx]
4C63E0 movsxd r12, eax
4C63E0 movsxd r12, eax
6642891C67 mov word ptr [rdi+2*r12], bx
6642891C67 mov word ptr [rdi+2*r12], bx
FFC8 dec eax
FFC8 dec eax
85C0 test eax, eax
85C0 test eax, eax
7DEA jge SHORT G_M39841_IG14
7DEA jge SHORT G_M39841_IG14
;; bbWeight=32 PerfScore 160.00
;; bbWeight=32 PerfScore 160.00
G_M39841_IG15: ;; offset=0163H
G_M39841_IG15: ;; offset=0176H
33DB xor ebx, ebx
33DB xor ebx, ebx
4585F6 test r14d, r14d
4585F6 test r14d, r14d
0F8C21010000 jl G_M39841_IG30
0F8C3B010000 jl G_M39841_IG30
448BE3 mov r12d, ebx
448BE3 mov r12d, ebx
8BDA mov ebx, edx
8BDA mov ebx, edx
458D6E01 lea r13d, [r14+1]
458D6E01 lea r13d, [r14+1]
;; bbWeight=4 PerfScore 10.00
660F1F440000 align
G_M39841_IG16: ;; offset=0177H
;; bbWeight=4 PerfScore 11.00
G_M39841_IG16: ;; offset=0190H
438D043C lea eax, [r12+r15]
438D043C lea eax, [r12+r15]
99 cdq
99 cdq
41F7FD idiv edx:eax, r13d
41F7FD idiv edx:eax, r13d
4863C2 movsxd rax, edx
4863C2 movsxd rax, edx
480FBF0447 movsx rax, word ptr [rdi+2*rax]
480FBF0447 movsx rax, word ptr [rdi+2*rax]
4963D4 movsxd rdx, r12d
4963D4 movsxd rdx, r12d
66890456 mov word ptr [rsi+2*rdx], ax
66890456 mov word ptr [rsi+2*rdx], ax
41FFC4 inc r12d
41FFC4 inc r12d
453BE6 cmp r12d, r14d
453BE6 cmp r12d, r14d
7EE1 jle SHORT G_M39841_IG16
7EE1 jle SHORT G_M39841_IG16
;; bbWeight=32 PerfScore 1040.00
;; bbWeight=32 PerfScore 1040.00
G_M39841_IG17: ;; offset=0196H
G_M39841_IG17: ;; offset=01AFH
41FFCE dec r14d
41FFCE dec r14d
4585F6 test r14d, r14d
4585F6 test r14d, r14d
0F8F50FFFFFF jg G_M39841_IG12
0F8F43FFFFFF jg G_M39841_IG12
;; bbWeight=8 PerfScore 12.00
;; bbWeight=8 PerfScore 12.00
G_M39841_IG18: ;; offset=01A2H
G_M39841_IG18: ;; offset=01BBH
480FBF06 movsx rax, word ptr [rsi]
480FBF06 movsx rax, word ptr [rsi]
85C0 test eax, eax
85C0 test eax, eax
0F84BB000000 je G_M39841_IG28
0F84CF000000 je G_M39841_IG28
BA01000000 mov edx, 1
BA01000000 mov edx, 1
4C63F0 movsxd r14, eax
4C63F0 movsxd r14, eax
6642833C7600 cmp word ptr [rsi+2*r14], 0
6642833C7600 cmp word ptr [rsi+2*r14], 0
0F849A000000 je G_M39841_IG27
0F84AE000000 je G_M39841_IG27
;; bbWeight=2 PerfScore 13.50
;; bbWeight=2 PerfScore 13.50
G_M39841_IG19: ;; offset=01C2H
G_M39841_IG19: ;; offset=01DBH
8BD9 mov ebx, ecx
8BD9 mov ebx, ecx
C1FB1F sar ebx, 31
C1FB1F sar ebx, 31
83E303 and ebx, 3
83E303 and ebx, 3
03D9 add ebx, ecx
03D9 add ebx, ecx
C1FB02 sar ebx, 2
C1FB02 sar ebx, 2
4533F6 xor r14d, r14d
4533F6 xor r14d, r14d
85DB test ebx, ebx
85DB test ebx, ebx
7E16 jle SHORT G_M39841_IG21
7E17 jle SHORT G_M39841_IG21
;; bbWeight=1 PerfScore 6.25
90 align
G_M39841_IG20: ;; offset=01D6H
;; bbWeight=1 PerfScore 6.50
G_M39841_IG20: ;; offset=01F0H
4D63FE movsxd r15, r14d
4D63FE movsxd r15, r14d
4E8B3CFE mov r15, qword ptr [rsi+8*r15]
4E8B3CFE mov r15, qword ptr [rsi+8*r15]
4D63E6 movsxd r12, r14d
4D63E6 movsxd r12, r14d
4E893CE7 mov qword ptr [rdi+8*r12], r15
4E893CE7 mov qword ptr [rdi+8*r12], r15
41FFC6 inc r14d
41FFC6 inc r14d
443BF3 cmp r14d, ebx
443BF3 cmp r14d, ebx
7CEA jl SHORT G_M39841_IG20
7CEA jl SHORT G_M39841_IG20
;; bbWeight=4 PerfScore 20.00
;; bbWeight=4 PerfScore 20.00
G_M39841_IG21: ;; offset=01ECH
G_M39841_IG21: ;; offset=0206H
448BF3 mov r14d, ebx
448BF3 mov r14d, ebx
41C1E602 shl r14d, 2
41C1E602 shl r14d, 2
443BF1 cmp r14d, ecx
443BF1 cmp r14d, ecx
7D18 jge SHORT G_M39841_IG23
7D26 jge SHORT G_M39841_IG23
;; bbWeight=0.50 PerfScore 1.75
0F1F80000000000F1F8000000000 align
G_M39841_IG22: ;; offset=01F8H
;; bbWeight=0.50 PerfScore 1.88
G_M39841_IG22: ;; offset=0220H
4963DE movsxd rbx, r14d
4963DE movsxd rbx, r14d
480FBF1C5E movsx rbx, word ptr [rsi+2*rbx]
480FBF1C5E movsx rbx, word ptr [rsi+2*rbx]
4D63FE movsxd r15, r14d
4D63FE movsxd r15, r14d
6642891C7F mov word ptr [rdi+2*r15], bx
6642891C7F mov word ptr [rdi+2*r15], bx
41FFC6 inc r14d
41FFC6 inc r14d
443BF1 cmp r14d, ecx
443BF1 cmp r14d, ecx
7CE8 jl SHORT G_M39841_IG22
7CE8 jl SHORT G_M39841_IG22
;; bbWeight=4 PerfScore 20.00
;; bbWeight=4 PerfScore 20.00
G_M39841_IG23: ;; offset=0210H
G_M39841_IG23: ;; offset=0238H
FFC2 inc edx
FFC2 inc edx
83F802 cmp eax, 2
83F802 cmp eax, 2
7E29 jle SHORT G_M39841_IG26
7E2E jle SHORT G_M39841_IG26
;; bbWeight=8 PerfScore 12.00
;; bbWeight=8 PerfScore 12.00
G_M39841_IG24: ;; offset=0217H
G_M39841_IG24: ;; offset=023FH
488D5F02 lea rbx, [rdi+2]
488D5F02 lea rbx, [rdi+2]
4C63F0 movsxd r14, eax
4C63F0 movsxd r14, eax
4E8D7477FE lea r14, [rdi+2*r14-2]
4E8D7477FE lea r14, [rdi+2*r14-2]
;; bbWeight=4 PerfScore 7.00
0F1F440000 align
G_M39841_IG25: ;; offset=0223H
;; bbWeight=4 PerfScore 8.00
G_M39841_IG25: ;; offset=0250H
4C0FBF3B movsx r15, word ptr [rbx]
4C0FBF3B movsx r15, word ptr [rbx]
4D0FBF26 movsx r12, word ptr [r14]
4D0FBF26 movsx r12, word ptr [r14]
66448923 mov word ptr [rbx], r12w
66448923 mov word ptr [rbx], r12w
6645893E mov word ptr [r14], r15w
6645893E mov word ptr [r14], r15w
4883C302 add rbx, 2
4883C302 add rbx, 2
4983C6FE add r14, -2
4983C6FE add r14, -2
493BDE cmp rbx, r14
493BDE cmp rbx, r14
72E3 jb SHORT G_M39841_IG25
72E3 jb SHORT G_M39841_IG25
;; bbWeight=32 PerfScore 248.00
;; bbWeight=32 PerfScore 248.00
G_M39841_IG26: ;; offset=0240H
G_M39841_IG26: ;; offset=026DH
4C63F8 movsxd r15, eax
4C63F8 movsxd r15, eax
4E0FBF3C7F movsx r15, word ptr [rdi+2*r15]
4E0FBF3C7F movsx r15, word ptr [rdi+2*r15]
4863D8 movsxd rbx, eax
4863D8 movsxd rbx, eax
6689045F mov word ptr [rdi+2*rbx], ax
6689045F mov word ptr [rdi+2*rbx], ax
418BC7 mov eax, r15d
418BC7 mov eax, r15d
4863D8 movsxd rbx, eax
4863D8 movsxd rbx, eax
66833C5F00 cmp word ptr [rdi+2*rbx], 0
66833C5F00 cmp word ptr [rdi+2*rbx], 0
75B4 jne SHORT G_M39841_IG23
75AF jne SHORT G_M39841_IG23
;; bbWeight=8 PerfScore 56.00
;; bbWeight=8 PerfScore 56.00
G_M39841_IG27: ;; offset=025CH
G_M39841_IG27: ;; offset=0289H
8BC2 mov eax, edx
8BC2 mov eax, edx
4403D0 add r10d, eax
4403D0 add r10d, eax
413BC3 cmp eax, r11d
413BC3 cmp eax, r11d
7E03 jle SHORT G_M39841_IG28
7E03 jle SHORT G_M39841_IG28
448BD8 mov r11d, eax
448BD8 mov r11d, eax
;; bbWeight=2 PerfScore 4.00
;; bbWeight=2 PerfScore 4.00
G_M39841_IG28: ;; offset=0269H
G_M39841_IG28: ;; offset=0296H
B801000000 mov eax, 1
B801000000 mov eax, 1
4183F801 cmp r8d, 1
4183F801 cmp r8d, 1
0F8E6C010000 jle G_M39841_IG47
0F8E8D010000 jle G_M39841_IG47
;; bbWeight=2 PerfScore 3.00
;; bbWeight=2 PerfScore 3.00
G_M39841_IG29: ;; offset=0278H
G_M39841_IG29: ;; offset=02A5H
480FBF5602 movsx rdx, word ptr [rsi+2]
480FBF5602 movsx rdx, word ptr [rsi+2]
480FBF1E movsx rbx, word ptr [rsi]
480FBF1E movsx rbx, word ptr [rsi]
66895E02 mov word ptr [rsi+2], bx
66895E02 mov word ptr [rsi+2], bx
668916 mov word ptr [rsi], dx
668916 mov word ptr [rsi], dx
BB01000000 mov ebx, 1
BB01000000 mov ebx, 1
EB55 jmp SHORT G_M39841_IG34
EB60 jmp SHORT G_M39841_IG34
;; bbWeight=16 PerfScore 132.00
;; bbWeight=16 PerfScore 132.00
G_M39841_IG30: ;; offset=028FH
G_M39841_IG30: ;; offset=02BCH
8BDA mov ebx, edx
8BDA mov ebx, edx
E900FFFFFF jmp G_M39841_IG17
E9ECFEFFFF jmp G_M39841_IG17
;; bbWeight=2 PerfScore 4.50
;; bbWeight=2 PerfScore 4.50
G_M39841_IG31: ;; offset=0296H
G_M39841_IG31: ;; offset=02C3H
448D7301 lea r14d, [rbx+1]
448D7301 lea r14d, [rbx+1]
4863DB movsxd rbx, ebx
4863DB movsxd rbx, ebx
4533FF xor r15d, r15d
4533FF xor r15d, r15d
45893C99 mov dword ptr [r9+4*rbx], r15d
45893C99 mov dword ptr [r9+4*rbx], r15d
480FBF5E02 movsx rbx, word ptr [rsi+2]
480FBF5E02 movsx rbx, word ptr [rsi+2]
66891E mov word ptr [rsi], bx
66891E mov word ptr [rsi], bx
41BF01000000 mov r15d, 1
41BF01000000 mov r15d, 1
4183FE01 cmp r14d, 1
4183FE01 cmp r14d, 1
7E1F jle SHORT G_M39841_IG33
7E2A jle SHORT G_M39841_IG33
;; bbWeight=16 PerfScore 104.00
6666660F1F840000000000 align
G_M39841_IG32: ;; offset=02B8H
;; bbWeight=16 PerfScore 108.00
G_M39841_IG32: ;; offset=02F0H
458D6701 lea r12d, [r15+1]
458D6701 lea r12d, [r15+1]
4D63FF movsxd r15, r15d
4D63FF movsxd r15, r15d
4E8D3C7E lea r15, [rsi+2*r15]
4E8D3C7E lea r15, [rsi+2*r15]
4D63EC movsxd r13, r12d
4D63EC movsxd r13, r12d
4E0FBF2C6E movsx r13, word ptr [rsi+2*r13]
4E0FBF2C6E movsx r13, word ptr [rsi+2*r13]
6645892F mov word ptr [r15], r13w
6645892F mov word ptr [r15], r13w
453BE6 cmp r12d, r14d
453BE6 cmp r12d, r14d
458BFC mov r15d, r12d
458BFC mov r15d, r12d
7CE1 jl SHORT G_M39841_IG32
7CE1 jl SHORT G_M39841_IG32
;; bbWeight=128 PerfScore 768.00
;; bbWeight=128 PerfScore 768.00
G_M39841_IG33: ;; offset=02D7H
G_M39841_IG33: ;; offset=030FH
4D63FE movsxd r15, r14d
4D63FE movsxd r15, r14d
664289147E mov word ptr [rsi+2*r15], dx
664289147E mov word ptr [rsi+2*r15], dx
8BD3 mov edx, ebx
8BD3 mov edx, ebx
418BDE mov ebx, r14d
418BDE mov ebx, r14d
;; bbWeight=16 PerfScore 28.00
;; bbWeight=16 PerfScore 28.00
G_M39841_IG34: ;; offset=02E4H
G_M39841_IG34: ;; offset=031CH
4C63F3 movsxd r14, ebx
4C63F3 movsxd r14, ebx
4F8D34B1 lea r14, [r9+4*r14]
4F8D34B1 lea r14, [r9+4*r14]
458B3E mov r15d, dword ptr [r14]
458B3E mov r15d, dword ptr [r14]
41FFC7 inc r15d
41FFC7 inc r15d
45893E mov dword ptr [r14], r15d
45893E mov dword ptr [r14], r15d
443BFB cmp r15d, ebx
443BFB cmp r15d, ebx
7F9D jg SHORT G_M39841_IG31
7F92 jg SHORT G_M39841_IG31
;; bbWeight=64 PerfScore 336.00
;; bbWeight=64 PerfScore 336.00
G_M39841_IG35: ;; offset=02F9H
G_M39841_IG35: ;; offset=0331H
66833E00 cmp word ptr [rsi], 0
66833E00 cmp word ptr [rsi], 0
0F84D6000000 je G_M39841_IG46
0F84EC000000 je G_M39841_IG46
;; bbWeight=16 PerfScore 48.00
;; bbWeight=16 PerfScore 48.00
G_M39841_IG36: ;; offset=0303H
G_M39841_IG36: ;; offset=033BH
BA01000000 mov edx, 1
BA01000000 mov edx, 1
480FBF1E movsx rbx, word ptr [rsi]
480FBF1E movsx rbx, word ptr [rsi]
4C63F3 movsxd r14, ebx
4C63F3 movsxd r14, ebx
6642833C7600 cmp word ptr [rsi+2*r14], 0
6642833C7600 cmp word ptr [rsi+2*r14], 0
0F84A2000000 je G_M39841_IG45
0F84B8000000 je G_M39841_IG45
;; bbWeight=8 PerfScore 44.00
;; bbWeight=8 PerfScore 44.00
G_M39841_IG37: ;; offset=031BH
G_M39841_IG37: ;; offset=0353H
448BF1 mov r14d, ecx
448BF1 mov r14d, ecx
41C1FE1F sar r14d, 31
41C1FE1F sar r14d, 31
4183E603 and r14d, 3
4183E603 and r14d, 3
4403F1 add r14d, ecx
4403F1 add r14d, ecx
41C1FE02 sar r14d, 2
41C1FE02 sar r14d, 2
4533FF xor r15d, r15d
4533FF xor r15d, r15d
4585F6 test r14d, r14d
4585F6 test r14d, r14d
7E16 jle SHORT G_M39841_IG39
7E19 jle SHORT G_M39841_IG39
;; bbWeight=4 PerfScore 25.00
0F1F00 align
G_M39841_IG38: ;; offset=0335H
;; bbWeight=4 PerfScore 26.00
G_M39841_IG38: ;; offset=0370H
4D63E7 movsxd r12, r15d
4D63E7 movsxd r12, r15d
4E8B24E6 mov r12, qword ptr [rsi+8*r12]
4E8B24E6 mov r12, qword ptr [rsi+8*r12]
4D63EF movsxd r13, r15d
4D63EF movsxd r13, r15d
4E8924EF mov qword ptr [rdi+8*r13], r12
4E8924EF mov qword ptr [rdi+8*r13], r12
41FFC7 inc r15d
41FFC7 inc r15d
453BFE cmp r15d, r14d
453BFE cmp r15d, r14d
7CEA jl SHORT G_M39841_IG38
7CEA jl SHORT G_M39841_IG38
;; bbWeight=16 PerfScore 80.00
;; bbWeight=16 PerfScore 80.00
G_M39841_IG39: ;; offset=034BH
G_M39841_IG39: ;; offset=0386H
458BFE mov r15d, r14d
458BFE mov r15d, r14d
41C1E702 shl r15d, 2
41C1E702 shl r15d, 2
443BF9 cmp r15d, ecx
443BF9 cmp r15d, ecx
7D18 jge SHORT G_M39841_IG41
7D26 jge SHORT G_M39841_IG41
;; bbWeight=2 PerfScore 7.00
0F1F80000000000F1F8000000000 align
G_M39841_IG40: ;; offset=0357H
;; bbWeight=2 PerfScore 7.50
G_M39841_IG40: ;; offset=03A0H
4D63F7 movsxd r14, r15d
4D63F7 movsxd r14, r15d
4E0FBF3476 movsx r14, word ptr [rsi+2*r14]
4E0FBF3476 movsx r14, word ptr [rsi+2*r14]
4D63E7 movsxd r12, r15d
4D63E7 movsxd r12, r15d
6646893467 mov word ptr [rdi+2*r12], r14w
6646893467 mov word ptr [rdi+2*r12], r14w
41FFC7 inc r15d
41FFC7 inc r15d
443BF9 cmp r15d, ecx
443BF9 cmp r15d, ecx
7CE8 jl SHORT G_M39841_IG40
7CE8 jl SHORT G_M39841_IG40
;; bbWeight=16 PerfScore 80.00
;; bbWeight=16 PerfScore 80.00
G_M39841_IG41: ;; offset=036FH
G_M39841_IG41: ;; offset=03B8H
FFC2 inc edx
FFC2 inc edx
83FB02 cmp ebx, 2
83FB02 cmp ebx, 2
7E29 jle SHORT G_M39841_IG44
7E2E jle SHORT G_M39841_IG44
;; bbWeight=32 PerfScore 48.00
;; bbWeight=32 PerfScore 48.00
G_M39841_IG42: ;; offset=0376H
G_M39841_IG42: ;; offset=03BFH
4C8D7702 lea r14, [rdi+2]
4C8D7702 lea r14, [rdi+2]
4C63FB movsxd r15, ebx
4C63FB movsxd r15, ebx
4E8D7C7FFE lea r15, [rdi+2*r15-2]
4E8D7C7FFE lea r15, [rdi+2*r15-2]
;; bbWeight=16 PerfScore 28.00
0F1F440000 align
G_M39841_IG43: ;; offset=0382H
;; bbWeight=16 PerfScore 32.00
G_M39841_IG43: ;; offset=03D0H
4D0FBF26 movsx r12, word ptr [r14]
4D0FBF26 movsx r12, word ptr [r14]
4D0FBF2F movsx r13, word ptr [r15]
4D0FBF2F movsx r13, word ptr [r15]
6645892E mov word ptr [r14], r13w
6645892E mov word ptr [r14], r13w
66458927 mov word ptr [r15], r12w
66458927 mov word ptr [r15], r12w
4983C602 add r14, 2
4983C602 add r14, 2
4983C7FE add r15, -2
4983C7FE add r15, -2
4D3BF7 cmp r14, r15
4D3BF7 cmp r14, r15
72E3 jb SHORT G_M39841_IG43
72E3 jb SHORT G_M39841_IG43
;; bbWeight=128 PerfScore 992.00
;; bbWeight=128 PerfScore 992.00
G_M39841_IG44: ;; offset=039FH
G_M39841_IG44: ;; offset=03EDH
4C63E3 movsxd r12, ebx
4C63E3 movsxd r12, ebx
4E0FBF2467 movsx r12, word ptr [rdi+2*r12]
4E0FBF2467 movsx r12, word ptr [rdi+2*r12]
4C63F3 movsxd r14, ebx
4C63F3 movsxd r14, ebx
6642891C77 mov word ptr [rdi+2*r14], bx
6642891C77 mov word ptr [rdi+2*r14], bx
418BDC mov ebx, r12d
418BDC mov ebx, r12d
4C63F3 movsxd r14, ebx
4C63F3 movsxd r14, ebx
6642833C7700 cmp word ptr [rdi+2*r14], 0
6642833C7700 cmp word ptr [rdi+2*r14], 0
75B2 jne SHORT G_M39841_IG41
75AD jne SHORT G_M39841_IG41
;; bbWeight=32 PerfScore 224.00
;; bbWeight=32 PerfScore 224.00
G_M39841_IG45: ;; offset=03BDH
G_M39841_IG45: ;; offset=040BH
8BD8 mov ebx, eax
8BD8 mov ebx, eax
83E301 and ebx, 1
83E301 and ebx, 1
03DB add ebx, ebx
03DB add ebx, ebx
F7DB neg ebx
F7DB neg ebx
FFC3 inc ebx
FFC3 inc ebx
0FAFDA imul ebx, edx
0FAFDA imul ebx, edx
4103DA add ebx, r10d
4103DA add ebx, r10d
448BD3 mov r10d, ebx
448BD3 mov r10d, ebx
413BD3 cmp edx, r11d
413BD3 cmp edx, r11d
7E03 jle SHORT G_M39841_IG46
7E03 jle SHORT G_M39841_IG46
448BDA mov r11d, edx
448BDA mov r11d, edx
;; bbWeight=8 PerfScore 42.00
;; bbWeight=8 PerfScore 42.00
G_M39841_IG46: ;; offset=03D9H
G_M39841_IG46: ;; offset=0427H
FFC0 inc eax
FFC0 inc eax
413BC0 cmp eax, r8d
413BC0 cmp eax, r8d
0F8C94FEFFFF jl G_M39841_IG29
0F8C73FEFFFF jl G_M39841_IG29
;; bbWeight=16 PerfScore 24.00
;; bbWeight=16 PerfScore 24.00
G_M39841_IG47: ;; offset=03E4H
G_M39841_IG47: ;; offset=0432H
48B8F026BF64FA7F0000 mov rax, 0x7FFA64BF26F0
48B8F026BE64FA7F0000 mov rax, 0x7FFA64BE26F0
BAFFFFFFFF mov edx, -1
BAFFFFFFFF mov edx, -1
8BDA mov ebx, edx
8BDA mov ebx, edx
F0 lock
F0 lock
0FC118 xadd dword ptr [rax], ebx
0FC118 xadd dword ptr [rax], ebx
FFCB dec ebx
FFCB dec ebx
85DB test ebx, ebx
85DB test ebx, ebx
0F8DC7FCFFFF jge G_M39841_IG09
0F8D79FCFFFF jge G_M39841_IG09
;; bbWeight=8 PerfScore 162.00
;; bbWeight=8 PerfScore 162.00
G_M39841_IG48: ;; offset=0403H
G_M39841_IG48: ;; offset=0451H
48B8B07351C7B1010000 mov rax, 0x1B1C75173B0
48B8B073
488B00 mov rax, gword ptr [rax]
8BD3 mov edx, ebx
F7DA neg edx
FFCA dec edx
3B5008 cmp edx, dword ptr [rax+8]
734B jae SHORT G_M39841_IG52
4C63CA movsxd r9, edx