hidva / as2cfg

Construct the CFG(Control Flow Graph) from intel assembly code
GNU General Public License v3.0
56 stars 3 forks source link

Bad case #1

Closed hidva closed 2 years ago

hidva commented 3 years ago

[rip+0xcf3666] at <+57> will trigger an error, and replace rip with rbp will be good, but there are another error:

WARNING: newnodes = map[uint64]*main.CFGNode{0x16a7381:(*main.CFGNode)(0xc0002811d0), 0x16a7384:(*main.CFGNode)(0xc0002817c0), 0x16a7387:(*main.CFGNode)(0xc000281db0), 0x16a738a:(*main.CFGNode)(0xc0002d8140)}
panic: runtime error: index out of range [0] with length 0

goroutine 1 [running]:
main.(*CFGNode).getDOTTooltip(...)
    /Users/zhanyi/project/org/hidva/as2cfg/as2cfg/as2cfg.go:29
main.CFGGraph2Dot(0xc00000c040, 0xc000088010, 0x11ac848)
    /Users/zhanyi/project/org/hidva/as2cfg/as2cfg/as2cfg.go:451 +0xd04
main.main()
    /Users/zhanyi/project/org/hidva/as2cfg/as2cfg/as2cfg.go:497 +0x115
0x00000000016a6582 <+0>:    push   rbp
0x00000000016a6583 <+1>:    mov    rbp,rsp
0x00000000016a6586 <+4>:    push   r15
0x00000000016a6588 <+6>:    push   r14
0x00000000016a658a <+8>:    push   r13
0x00000000016a658c <+10>:   push   r12
0x00000000016a658e <+12>:   push   rbx
0x00000000016a658f <+13>:   sub    rsp,0x118
0x00000000016a6596 <+20>:   mov    QWORD PTR [rbp-0x128],rdi
0x00000000016a659d <+27>:   mov    DWORD PTR [rbp-0x12c],esi
0x00000000016a65a3 <+33>:   mov    QWORD PTR [rbp-0x138],rdx
0x00000000016a65aa <+40>:   mov    QWORD PTR [rbp-0x140],rcx
0x00000000016a65b1 <+47>:   lea    r13,[rbp-0xd0]
0x00000000016a65b8 <+54>:   mov    r15,r13
0x00000000016a65bb <+57>:   cmp    DWORD PTR [rip+0xcf3666],0x0
0x00000000016a65c2 <+64>:   je     0x16a65d6 <timesub+84>
0x00000000016a65c4 <+66>:   mov    edi,0xa0
0x00000000016a65c9 <+71>:   call   0x4ebb10 <__asan_stack_malloc_2@plt>
0x00000000016a65ce <+76>:   test   rax,rax
0x00000000016a65d1 <+79>:   je     0x16a65d6 <timesub+84>
0x00000000016a65d3 <+81>:   mov    r13,rax
0x00000000016a65d6 <+84>:   lea    rax,[r13+0xa0]
0x00000000016a65dd <+91>:   mov    rbx,rax
0x00000000016a65e0 <+94>:   mov    QWORD PTR [r13+0x0],0x41b58ab3
0x00000000016a65e8 <+102>:  mov    QWORD PTR [r13+0x8],0x1d7cf38
0x00000000016a65f0 <+110>:  mov    QWORD PTR [r13+0x10],0x16a6582
0x00000000016a65f8 <+118>:  mov    r12,r13
0x00000000016a65fb <+121>:  shr    r12,0x3
0x00000000016a65ff <+125>:  mov    DWORD PTR [r12+0x7fff8000],0xf1f1f1f1
0x00000000016a660b <+137>:  mov    DWORD PTR [r12+0x7fff8004],0xf4f4f404
0x00000000016a6617 <+149>:  mov    DWORD PTR [r12+0x7fff8008],0xf2f2f2f2
0x00000000016a6623 <+161>:  mov    DWORD PTR [r12+0x7fff800c],0xf4f4f404
0x00000000016a662f <+173>:  mov    DWORD PTR [r12+0x7fff8010],0xf3f3f3f3
0x00000000016a663b <+185>:  mov    QWORD PTR [rbp-0xf0],0x0
0x00000000016a6646 <+196>:  mov    BYTE PTR [rbp-0x111],0x0
0x00000000016a664d <+203>:  cmp    QWORD PTR [rbp-0x138],0x0
0x00000000016a6655 <+211>:  je     0x16a6694 <timesub+274>
0x00000000016a6657 <+213>:  mov    rax,QWORD PTR [rbp-0x138]
0x00000000016a665e <+220>:  mov    rdx,rax
0x00000000016a6661 <+223>:  mov    rax,rdx
0x00000000016a6664 <+226>:  shr    rax,0x3
0x00000000016a6668 <+230>:  add    rax,0x7fff8000
0x00000000016a666e <+236>:  movzx  eax,BYTE PTR [rax]
0x00000000016a6671 <+239>:  test   al,al
0x00000000016a6673 <+241>:  setne  cl
0x00000000016a6676 <+244>:  cmp    al,0x3
0x00000000016a6678 <+246>:  setle  al
0x00000000016a667b <+249>:  and    eax,ecx
0x00000000016a667d <+251>:  test   al,al
0x00000000016a667f <+253>:  je     0x16a6689 <timesub+263>
0x00000000016a6681 <+255>:  mov    rdi,rdx
0x00000000016a6684 <+258>:  call   0x4e9b10 <__asan_report_load4@plt>
0x00000000016a6689 <+263>:  mov    rax,QWORD PTR [rbp-0x138]
0x00000000016a6690 <+270>:  mov    eax,DWORD PTR [rax]
0x00000000016a6692 <+272>:  jmp    0x16a6699 <timesub+279>
0x00000000016a6694 <+274>:  mov    eax,0x0
0x00000000016a6699 <+279>:  mov    DWORD PTR [rbp-0x10c],eax
0x00000000016a669f <+285>:  jmp    0x16a67e3 <timesub+609>
0x00000000016a66a4 <+290>:  mov    eax,DWORD PTR [rbp-0x10c]
0x00000000016a66aa <+296>:  cdqe
0x00000000016a66ac <+298>:  add    rax,0x586
0x00000000016a66b2 <+304>:  shl    rax,0x4
0x00000000016a66b6 <+308>:  mov    rdx,rax
0x00000000016a66b9 <+311>:  mov    rax,QWORD PTR [rbp-0x138]
0x00000000016a66c0 <+318>:  add    rax,rdx
0x00000000016a66c3 <+321>:  add    rax,0x8
0x00000000016a66c7 <+325>:  mov    QWORD PTR [rbp-0xe8],rax
0x00000000016a66ce <+332>:  mov    rax,QWORD PTR [rbp-0x128]
0x00000000016a66d5 <+339>:  mov    rdx,rax
0x00000000016a66d8 <+342>:  shr    rdx,0x3
0x00000000016a66dc <+346>:  add    rdx,0x7fff8000
0x00000000016a66e3 <+353>:  movzx  edx,BYTE PTR [rdx]
0x00000000016a66e6 <+356>:  test   dl,dl
0x00000000016a66e8 <+358>:  je     0x16a66f2 <timesub+368>
0x00000000016a66ea <+360>:  mov    rdi,rax
0x00000000016a66ed <+363>:  call   0x4eaf60 <__asan_report_load8@plt>
0x00000000016a66f2 <+368>:  mov    rax,QWORD PTR [rbp-0x128]
0x00000000016a66f9 <+375>:  mov    rcx,QWORD PTR [rax]
0x00000000016a66fc <+378>:  mov    rax,QWORD PTR [rbp-0xe8]
0x00000000016a6703 <+385>:  mov    rdx,rax
0x00000000016a6706 <+388>:  shr    rdx,0x3
0x00000000016a670a <+392>:  add    rdx,0x7fff8000
0x00000000016a6711 <+399>:  movzx  edx,BYTE PTR [rdx]
0x00000000016a6714 <+402>:  test   dl,dl
0x00000000016a6716 <+404>:  je     0x16a6720 <timesub+414>
0x00000000016a6718 <+406>:  mov    rdi,rax
0x00000000016a671b <+409>:  call   0x4eaf60 <__asan_report_load8@plt>
0x00000000016a6720 <+414>:  mov    rax,QWORD PTR [rbp-0xe8]
0x00000000016a6727 <+421>:  mov    rax,QWORD PTR [rax]
0x00000000016a672a <+424>:  cmp    rcx,rax
0x00000000016a672d <+427>:  jl     0x16a67e3 <timesub+609>
0x00000000016a6733 <+433>:  mov    rax,QWORD PTR [rbp-0xe8]
0x00000000016a673a <+440>:  add    rax,0x8
0x00000000016a673e <+444>:  mov    rdx,rax
0x00000000016a6741 <+447>:  shr    rdx,0x3
0x00000000016a6745 <+451>:  add    rdx,0x7fff8000
0x00000000016a674c <+458>:  movzx  edx,BYTE PTR [rdx]
0x00000000016a674f <+461>:  test   dl,dl
0x00000000016a6751 <+463>:  je     0x16a675b <timesub+473>
0x00000000016a6753 <+465>:  mov    rdi,rax
0x00000000016a6756 <+468>:  call   0x4eaf60 <__asan_report_load8@plt>
0x00000000016a675b <+473>:  mov    rax,QWORD PTR [rbp-0xe8]
0x00000000016a6762 <+480>:  mov    rax,QWORD PTR [rax+0x8]
0x00000000016a6766 <+484>:  mov    QWORD PTR [rbp-0xf0],rax
0x00000000016a676d <+491>:  mov    rax,QWORD PTR [rbp-0x128]
0x00000000016a6774 <+498>:  mov    rdx,QWORD PTR [rax]
0x00000000016a6777 <+501>:  mov    rax,QWORD PTR [rbp-0xe8]
0x00000000016a677e <+508>:  mov    rax,QWORD PTR [rax]
0x00000000016a6781 <+511>:  cmp    rdx,rax
0x00000000016a6784 <+514>:  jne    0x16a67d6 <timesub+596>
0x00000000016a6786 <+516>:  cmp    DWORD PTR [rbp-0x10c],0x0
0x00000000016a678d <+523>:  je     0x16a67c1 <timesub+575>
0x00000000016a678f <+525>:  mov    rax,QWORD PTR [rbp-0xe8]
0x00000000016a6796 <+532>:  sub    rax,0x10
0x00000000016a679a <+536>:  lea    rdx,[rax+0x8]
0x00000000016a679e <+540>:  mov    rcx,rdx
0x00000000016a67a1 <+543>:  shr    rcx,0x3
0x00000000016a67a5 <+547>:  add    rcx,0x7fff8000
0x00000000016a67ac <+554>:  movzx  ecx,BYTE PTR [rcx]
0x00000000016a67af <+557>:  test   cl,cl
0x00000000016a67b1 <+559>:  je     0x16a67bb <timesub+569>
0x00000000016a67b3 <+561>:  mov    rdi,rdx
0x00000000016a67b6 <+564>:  call   0x4eaf60 <__asan_report_load8@plt>
0x00000000016a67bb <+569>:  mov    rax,QWORD PTR [rax+0x8]
0x00000000016a67bf <+573>:  jmp    0x16a67c6 <timesub+580>
0x00000000016a67c1 <+575>:  mov    eax,0x0
0x00000000016a67c6 <+580>:  cmp    rax,QWORD PTR [rbp-0xf0]
0x00000000016a67cd <+587>:  jge    0x16a67d6 <timesub+596>
0x00000000016a67cf <+589>:  mov    eax,0x1
0x00000000016a67d4 <+594>:  jmp    0x16a67db <timesub+601>
0x00000000016a67d6 <+596>:  mov    eax,0x0
0x00000000016a67db <+601>:  mov    BYTE PTR [rbp-0x111],al
0x00000000016a67e1 <+607>:  jmp    0x16a67f7 <timesub+629>
0x00000000016a67e3 <+609>:  sub    DWORD PTR [rbp-0x10c],0x1
0x00000000016a67ea <+616>:  cmp    DWORD PTR [rbp-0x10c],0x0
0x00000000016a67f1 <+623>:  jns    0x16a66a4 <timesub+290>
0x00000000016a67f7 <+629>:  mov    DWORD PTR [rbx-0x80],0x7b2
0x00000000016a67fe <+636>:  mov    rax,QWORD PTR [rbp-0x128]
0x00000000016a6805 <+643>:  mov    rdx,rax
0x00000000016a6808 <+646>:  shr    rdx,0x3
0x00000000016a680c <+650>:  add    rdx,0x7fff8000
0x00000000016a6813 <+657>:  movzx  edx,BYTE PTR [rdx]
0x00000000016a6816 <+660>:  test   dl,dl
0x00000000016a6818 <+662>:  je     0x16a6822 <timesub+672>
0x00000000016a681a <+664>:  mov    rdi,rax
0x00000000016a681d <+667>:  call   0x4eaf60 <__asan_report_load8@plt>
0x00000000016a6822 <+672>:  mov    rax,QWORD PTR [rbp-0x128]
0x00000000016a6829 <+679>:  mov    rcx,QWORD PTR [rax]
0x00000000016a682c <+682>:  movabs rdx,0x1845c8a0ce512957
0x00000000016a6836 <+692>:  mov    rax,rcx
0x00000000016a6839 <+695>:  imul   rdx
0x00000000016a683c <+698>:  sar    rdx,0xd
0x00000000016a6840 <+702>:  mov    rax,rcx
0x00000000016a6843 <+705>:  sar    rax,0x3f
0x00000000016a6847 <+709>:  sub    rdx,rax
0x00000000016a684a <+712>:  mov    rax,rdx
0x00000000016a684d <+715>:  mov    QWORD PTR [rbp-0x100],rax
0x00000000016a6854 <+722>:  mov    rax,QWORD PTR [rbp-0x128]
0x00000000016a685b <+729>:  mov    rcx,QWORD PTR [rax]
0x00000000016a685e <+732>:  movabs rdx,0x1845c8a0ce512957
0x00000000016a6868 <+742>:  mov    rax,rcx
0x00000000016a686b <+745>:  imul   rdx
0x00000000016a686e <+748>:  sar    rdx,0xd
0x00000000016a6872 <+752>:  mov    rax,rcx
0x00000000016a6875 <+755>:  sar    rax,0x3f
0x00000000016a6879 <+759>:  sub    rdx,rax
0x00000000016a687c <+762>:  mov    rax,rdx
0x00000000016a687f <+765>:  mov    QWORD PTR [rbp-0xf8],rax
0x00000000016a6886 <+772>:  mov    rax,QWORD PTR [rbp-0xf8]
0x00000000016a688d <+779>:  imul   rax,rax,0x15180
0x00000000016a6894 <+786>:  sub    rcx,rax
0x00000000016a6897 <+789>:  mov    rax,rcx
0x00000000016a689a <+792>:  mov    QWORD PTR [rbp-0xf8],rax
0x00000000016a68a1 <+799>:  jmp    0x16a69ba <timesub+1080>
0x00000000016a68a6 <+804>:  mov    rcx,QWORD PTR [rbp-0x100]
0x00000000016a68ad <+811>:  movabs rdx,0x2cc3d8d4a245f203
0x00000000016a68b7 <+821>:  mov    rax,rcx
0x00000000016a68ba <+824>:  imul   rdx
0x00000000016a68bd <+827>:  sar    rdx,0x6
0x00000000016a68c1 <+831>:  mov    rax,rcx
0x00000000016a68c4 <+834>:  sar    rax,0x3f
0x00000000016a68c8 <+838>:  sub    rdx,rax
0x00000000016a68cb <+841>:  mov    rax,rdx
0x00000000016a68ce <+844>:  mov    QWORD PTR [rbp-0xe0],rax
0x00000000016a68d5 <+851>:  cmp    QWORD PTR [rbp-0xe0],0xffffffff80000000
0x00000000016a68e0 <+862>:  jl     0x16a738b <timesub+3593>
0x00000000016a68e6 <+868>:  cmp    QWORD PTR [rbp-0xe0],0x7fffffff
0x00000000016a68f1 <+879>:  jg     0x16a738b <timesub+3593>
0x00000000016a68f7 <+885>:  mov    rax,QWORD PTR [rbp-0xe0]
0x00000000016a68fe <+892>:  mov    DWORD PTR [rbp-0x108],eax
0x00000000016a6904 <+898>:  cmp    DWORD PTR [rbp-0x108],0x0
0x00000000016a690b <+905>:  jne    0x16a6929 <timesub+935>
0x00000000016a690d <+907>:  cmp    QWORD PTR [rbp-0x100],0x0
0x00000000016a6915 <+915>:  jns    0x16a691e <timesub+924>
0x00000000016a6917 <+917>:  mov    eax,0xffffffff
0x00000000016a691c <+922>:  jmp    0x16a6923 <timesub+929>
0x00000000016a691e <+924>:  mov    eax,0x1
0x00000000016a6923 <+929>:  mov    DWORD PTR [rbp-0x108],eax
0x00000000016a6929 <+935>:  mov    eax,DWORD PTR [rbx-0x80]
0x00000000016a692c <+938>:  mov    DWORD PTR [rbx-0x40],eax
0x00000000016a692f <+941>:  mov    edx,DWORD PTR [rbp-0x108]
0x00000000016a6935 <+947>:  lea    rax,[rbx-0x40]
0x00000000016a6939 <+951>:  mov    esi,edx
0x00000000016a693b <+953>:  mov    rdi,rax
0x00000000016a693e <+956>:  call   0x16a744a <increment_overflow>
0x00000000016a6943 <+961>:  test   al,al
0x00000000016a6945 <+963>:  jne    0x16a7381 <timesub+3583>
0x00000000016a694b <+969>:  mov    eax,DWORD PTR [rbx-0x40]
0x00000000016a694e <+972>:  sub    eax,0x1
0x00000000016a6951 <+975>:  mov    edi,eax
0x00000000016a6953 <+977>:  call   0x16a6555 <leaps_thru_end_of>
0x00000000016a6958 <+982>:  mov    r14d,eax
0x00000000016a695b <+985>:  mov    eax,DWORD PTR [rbx-0x80]
0x00000000016a695e <+988>:  sub    eax,0x1
0x00000000016a6961 <+991>:  mov    edi,eax
0x00000000016a6963 <+993>:  call   0x16a6555 <leaps_thru_end_of>
0x00000000016a6968 <+998>:  sub    r14d,eax
0x00000000016a696b <+1001>: mov    eax,r14d
0x00000000016a696e <+1004>: mov    DWORD PTR [rbp-0x104],eax
0x00000000016a6974 <+1010>: mov    eax,DWORD PTR [rbx-0x80]
0x00000000016a6977 <+1013>: movsxd rdx,eax
0x00000000016a697a <+1016>: mov    eax,DWORD PTR [rbx-0x40]
0x00000000016a697d <+1019>: cdqe
0x00000000016a697f <+1021>: sub    rdx,rax
0x00000000016a6982 <+1024>: mov    rax,rdx
0x00000000016a6985 <+1027>: shl    rax,0x3
0x00000000016a6989 <+1031>: add    rax,rdx
0x00000000016a698c <+1034>: shl    rax,0x3
0x00000000016a6990 <+1038>: add    rax,rdx
0x00000000016a6993 <+1041>: lea    rdx,[rax*4+0x0]
0x00000000016a699b <+1049>: add    rax,rdx
0x00000000016a699e <+1052>: add    QWORD PTR [rbp-0x100],rax
0x00000000016a69a5 <+1059>: mov    eax,DWORD PTR [rbp-0x104]
0x00000000016a69ab <+1065>: cdqe
0x00000000016a69ad <+1067>: sub    QWORD PTR [rbp-0x100],rax
0x00000000016a69b4 <+1074>: mov    eax,DWORD PTR [rbx-0x40]
0x00000000016a69b7 <+1077>: mov    DWORD PTR [rbx-0x80],eax
0x00000000016a69ba <+1080>: cmp    QWORD PTR [rbp-0x100],0x0
0x00000000016a69c2 <+1088>: js     0x16a68a6 <timesub+804>
0x00000000016a69c8 <+1094>: mov    eax,DWORD PTR [rbx-0x80]
0x00000000016a69cb <+1097>: and    eax,0x3
0x00000000016a69ce <+1100>: test   eax,eax
0x00000000016a69d0 <+1102>: jne    0x16a6a22 <timesub+1184>
0x00000000016a69d2 <+1104>: mov    ecx,DWORD PTR [rbx-0x80]
0x00000000016a69d5 <+1107>: mov    edx,0x51eb851f
0x00000000016a69da <+1112>: mov    eax,ecx
0x00000000016a69dc <+1114>: imul   edx
0x00000000016a69de <+1116>: sar    edx,0x5
0x00000000016a69e1 <+1119>: mov    eax,ecx
0x00000000016a69e3 <+1121>: sar    eax,0x1f
0x00000000016a69e6 <+1124>: sub    edx,eax
0x00000000016a69e8 <+1126>: mov    eax,edx
0x00000000016a69ea <+1128>: imul   eax,eax,0x64
0x00000000016a69ed <+1131>: sub    ecx,eax
0x00000000016a69ef <+1133>: mov    eax,ecx
0x00000000016a69f1 <+1135>: test   eax,eax
0x00000000016a69f3 <+1137>: jne    0x16a6a1b <timesub+1177>
0x00000000016a69f5 <+1139>: mov    ecx,DWORD PTR [rbx-0x80]
0x00000000016a69f8 <+1142>: mov    edx,0x51eb851f
0x00000000016a69fd <+1147>: mov    eax,ecx
0x00000000016a69ff <+1149>: imul   edx
0x00000000016a6a01 <+1151>: sar    edx,0x7
0x00000000016a6a04 <+1154>: mov    eax,ecx
0x00000000016a6a06 <+1156>: sar    eax,0x1f
0x00000000016a6a09 <+1159>: sub    edx,eax
0x00000000016a6a0b <+1161>: mov    eax,edx
0x00000000016a6a0d <+1163>: imul   eax,eax,0x190
0x00000000016a6a13 <+1169>: sub    ecx,eax
0x00000000016a6a15 <+1171>: mov    eax,ecx
0x00000000016a6a17 <+1173>: test   eax,eax
0x00000000016a6a19 <+1175>: jne    0x16a6a22 <timesub+1184>
0x00000000016a6a1b <+1177>: mov    edx,0x1
0x00000000016a6a20 <+1182>: jmp    0x16a6a27 <timesub+1189>
0x00000000016a6a22 <+1184>: mov    edx,0x0
0x00000000016a6a27 <+1189>: movsxd rax,edx
0x00000000016a6a2a <+1192>: shl    rax,0x2
0x00000000016a6a2e <+1196>: add    rax,0x1d7cde0
0x00000000016a6a34 <+1202>: mov    rcx,rax
0x00000000016a6a37 <+1205>: shr    rcx,0x3
0x00000000016a6a3b <+1209>: add    rcx,0x7fff8000
0x00000000016a6a42 <+1216>: movzx  ecx,BYTE PTR [rcx]
0x00000000016a6a45 <+1219>: test   cl,cl
0x00000000016a6a47 <+1221>: setne  sil
0x00000000016a6a4b <+1225>: mov    rdi,rax
0x00000000016a6a4e <+1228>: and    edi,0x7
0x00000000016a6a51 <+1231>: add    edi,0x3
0x00000000016a6a54 <+1234>: cmp    dil,cl
0x00000000016a6a57 <+1237>: setge  cl
0x00000000016a6a5a <+1240>: and    ecx,esi
0x00000000016a6a5c <+1242>: test   cl,cl
0x00000000016a6a5e <+1244>: je     0x16a6a68 <timesub+1254>
0x00000000016a6a60 <+1246>: mov    rdi,rax
0x00000000016a6a63 <+1249>: call   0x4e9b10 <__asan_report_load4@plt>
0x00000000016a6a68 <+1254>: movsxd rax,edx
0x00000000016a6a6b <+1257>: mov    eax,DWORD PTR [rax*4+0x1d7cde0]
0x00000000016a6a72 <+1264>: cdqe
0x00000000016a6a74 <+1266>: cmp    rax,QWORD PTR [rbp-0x100]
0x00000000016a6a7b <+1273>: jle    0x16a68a6 <timesub+804>
0x00000000016a6a81 <+1279>: mov    rax,QWORD PTR [rbp-0x100]
0x00000000016a6a88 <+1286>: mov    DWORD PTR [rbp-0x110],eax
0x00000000016a6a8e <+1292>: mov    eax,DWORD PTR [rbp-0x12c]
0x00000000016a6a94 <+1298>: cdqe
0x00000000016a6a96 <+1300>: sub    rax,QWORD PTR [rbp-0xf0]
0x00000000016a6a9d <+1307>: add    QWORD PTR [rbp-0xf8],rax
0x00000000016a6aa4 <+1314>: jmp    0x16a6ab8 <timesub+1334>
0x00000000016a6aa6 <+1316>: add    QWORD PTR [rbp-0xf8],0x15180
0x00000000016a6ab1 <+1327>: sub    DWORD PTR [rbp-0x110],0x1
0x00000000016a6ab8 <+1334>: cmp    QWORD PTR [rbp-0xf8],0x0
0x00000000016a6ac0 <+1342>: js     0x16a6aa6 <timesub+1316>
0x00000000016a6ac2 <+1344>: jmp    0x16a6ad6 <timesub+1364>
0x00000000016a6ac4 <+1346>: sub    QWORD PTR [rbp-0xf8],0x15180
0x00000000016a6acf <+1357>: add    DWORD PTR [rbp-0x110],0x1
0x00000000016a6ad6 <+1364>: cmp    QWORD PTR [rbp-0xf8],0x1517f
0x00000000016a6ae1 <+1375>: jg     0x16a6ac4 <timesub+1346>
0x00000000016a6ae3 <+1377>: jmp    0x16a6bb1 <timesub+1583>
0x00000000016a6ae8 <+1382>: lea    rax,[rbx-0x80]
0x00000000016a6aec <+1386>: mov    esi,0xffffffff
0x00000000016a6af1 <+1391>: mov    rdi,rax
0x00000000016a6af4 <+1394>: call   0x16a744a <increment_overflow>
0x00000000016a6af9 <+1399>: test   al,al
0x00000000016a6afb <+1401>: jne    0x16a7384 <timesub+3586>
0x00000000016a6b01 <+1407>: mov    eax,DWORD PTR [rbx-0x80]
0x00000000016a6b04 <+1410>: and    eax,0x3
0x00000000016a6b07 <+1413>: test   eax,eax
0x00000000016a6b09 <+1415>: jne    0x16a6b5b <timesub+1497>
0x00000000016a6b0b <+1417>: mov    ecx,DWORD PTR [rbx-0x80]
0x00000000016a6b0e <+1420>: mov    edx,0x51eb851f
0x00000000016a6b13 <+1425>: mov    eax,ecx
0x00000000016a6b15 <+1427>: imul   edx
0x00000000016a6b17 <+1429>: sar    edx,0x5
0x00000000016a6b1a <+1432>: mov    eax,ecx
0x00000000016a6b1c <+1434>: sar    eax,0x1f
0x00000000016a6b1f <+1437>: sub    edx,eax
0x00000000016a6b21 <+1439>: mov    eax,edx
0x00000000016a6b23 <+1441>: imul   eax,eax,0x64
0x00000000016a6b26 <+1444>: sub    ecx,eax
0x00000000016a6b28 <+1446>: mov    eax,ecx
0x00000000016a6b2a <+1448>: test   eax,eax
0x00000000016a6b2c <+1450>: jne    0x16a6b54 <timesub+1490>
0x00000000016a6b2e <+1452>: mov    ecx,DWORD PTR [rbx-0x80]
0x00000000016a6b31 <+1455>: mov    edx,0x51eb851f
0x00000000016a6b36 <+1460>: mov    eax,ecx
0x00000000016a6b38 <+1462>: imul   edx
0x00000000016a6b3a <+1464>: sar    edx,0x7
0x00000000016a6b3d <+1467>: mov    eax,ecx
0x00000000016a6b3f <+1469>: sar    eax,0x1f
0x00000000016a6b42 <+1472>: sub    edx,eax
0x00000000016a6b44 <+1474>: mov    eax,edx
0x00000000016a6b46 <+1476>: imul   eax,eax,0x190
0x00000000016a6b4c <+1482>: sub    ecx,eax
0x00000000016a6b4e <+1484>: mov    eax,ecx
0x00000000016a6b50 <+1486>: test   eax,eax
0x00000000016a6b52 <+1488>: jne    0x16a6b5b <timesub+1497>
0x00000000016a6b54 <+1490>: mov    edx,0x1
0x00000000016a6b59 <+1495>: jmp    0x16a6b60 <timesub+1502>
0x00000000016a6b5b <+1497>: mov    edx,0x0
0x00000000016a6b60 <+1502>: movsxd rax,edx
0x00000000016a6b63 <+1505>: shl    rax,0x2
0x00000000016a6b67 <+1509>: add    rax,0x1d7cde0
0x00000000016a6b6d <+1515>: mov    rcx,rax
0x00000000016a6b70 <+1518>: shr    rcx,0x3
0x00000000016a6b74 <+1522>: add    rcx,0x7fff8000
0x00000000016a6b7b <+1529>: movzx  ecx,BYTE PTR [rcx]
0x00000000016a6b7e <+1532>: test   cl,cl
0x00000000016a6b80 <+1534>: setne  sil
0x00000000016a6b84 <+1538>: mov    rdi,rax
0x00000000016a6b87 <+1541>: and    edi,0x7
0x00000000016a6b8a <+1544>: add    edi,0x3
0x00000000016a6b8d <+1547>: cmp    dil,cl
0x00000000016a6b90 <+1550>: setge  cl
0x00000000016a6b93 <+1553>: and    ecx,esi
0x00000000016a6b95 <+1555>: test   cl,cl
0x00000000016a6b97 <+1557>: je     0x16a6ba1 <timesub+1567>
0x00000000016a6b99 <+1559>: mov    rdi,rax
0x00000000016a6b9c <+1562>: call   0x4e9b10 <__asan_report_load4@plt>
0x00000000016a6ba1 <+1567>: movsxd rax,edx
0x00000000016a6ba4 <+1570>: mov    eax,DWORD PTR [rax*4+0x1d7cde0]
0x00000000016a6bab <+1577>: add    DWORD PTR [rbp-0x110],eax
0x00000000016a6bb1 <+1583>: cmp    DWORD PTR [rbp-0x110],0x0
0x00000000016a6bb8 <+1590>: js     0x16a6ae8 <timesub+1382>
0x00000000016a6bbe <+1596>: jmp    0x16a6c8c <timesub+1802>
0x00000000016a6bc3 <+1601>: mov    eax,DWORD PTR [rbx-0x80]
0x00000000016a6bc6 <+1604>: and    eax,0x3
0x00000000016a6bc9 <+1607>: test   eax,eax
0x00000000016a6bcb <+1609>: jne    0x16a6c1d <timesub+1691>
0x00000000016a6bcd <+1611>: mov    ecx,DWORD PTR [rbx-0x80]
0x00000000016a6bd0 <+1614>: mov    edx,0x51eb851f
0x00000000016a6bd5 <+1619>: mov    eax,ecx
0x00000000016a6bd7 <+1621>: imul   edx
0x00000000016a6bd9 <+1623>: sar    edx,0x5
0x00000000016a6bdc <+1626>: mov    eax,ecx
0x00000000016a6bde <+1628>: sar    eax,0x1f
0x00000000016a6be1 <+1631>: sub    edx,eax
0x00000000016a6be3 <+1633>: mov    eax,edx
0x00000000016a6be5 <+1635>: imul   eax,eax,0x64
0x00000000016a6be8 <+1638>: sub    ecx,eax
0x00000000016a6bea <+1640>: mov    eax,ecx
0x00000000016a6bec <+1642>: test   eax,eax
0x00000000016a6bee <+1644>: jne    0x16a6c16 <timesub+1684>
0x00000000016a6bf0 <+1646>: mov    ecx,DWORD PTR [rbx-0x80]
0x00000000016a6bf3 <+1649>: mov    edx,0x51eb851f
0x00000000016a6bf8 <+1654>: mov    eax,ecx
0x00000000016a6bfa <+1656>: imul   edx
0x00000000016a6bfc <+1658>: sar    edx,0x7
0x00000000016a6bff <+1661>: mov    eax,ecx
0x00000000016a6c01 <+1663>: sar    eax,0x1f
0x00000000016a6c04 <+1666>: sub    edx,eax
0x00000000016a6c06 <+1668>: mov    eax,edx
0x00000000016a6c08 <+1670>: imul   eax,eax,0x190
0x00000000016a6c0e <+1676>: sub    ecx,eax
0x00000000016a6c10 <+1678>: mov    eax,ecx
0x00000000016a6c12 <+1680>: test   eax,eax
0x00000000016a6c14 <+1682>: jne    0x16a6c1d <timesub+1691>
0x00000000016a6c16 <+1684>: mov    edx,0x1
0x00000000016a6c1b <+1689>: jmp    0x16a6c22 <timesub+1696>
0x00000000016a6c1d <+1691>: mov    edx,0x0
0x00000000016a6c22 <+1696>: movsxd rax,edx
0x00000000016a6c25 <+1699>: shl    rax,0x2
0x00000000016a6c29 <+1703>: add    rax,0x1d7cde0
0x00000000016a6c2f <+1709>: mov    rcx,rax
0x00000000016a6c32 <+1712>: shr    rcx,0x3
0x00000000016a6c36 <+1716>: add    rcx,0x7fff8000
0x00000000016a6c3d <+1723>: movzx  ecx,BYTE PTR [rcx]
0x00000000016a6c40 <+1726>: test   cl,cl
0x00000000016a6c42 <+1728>: setne  sil
0x00000000016a6c46 <+1732>: mov    rdi,rax
0x00000000016a6c49 <+1735>: and    edi,0x7
0x00000000016a6c4c <+1738>: add    edi,0x3
0x00000000016a6c4f <+1741>: cmp    dil,cl
0x00000000016a6c52 <+1744>: setge  cl
0x00000000016a6c55 <+1747>: and    ecx,esi
0x00000000016a6c57 <+1749>: test   cl,cl
0x00000000016a6c59 <+1751>: je     0x16a6c63 <timesub+1761>
0x00000000016a6c5b <+1753>: mov    rdi,rax
0x00000000016a6c5e <+1756>: call   0x4e9b10 <__asan_report_load4@plt>
0x00000000016a6c63 <+1761>: movsxd rax,edx
0x00000000016a6c66 <+1764>: mov    eax,DWORD PTR [rax*4+0x1d7cde0]
0x00000000016a6c6d <+1771>: sub    DWORD PTR [rbp-0x110],eax
0x00000000016a6c73 <+1777>: lea    rax,[rbx-0x80]
0x00000000016a6c77 <+1781>: mov    esi,0x1
0x00000000016a6c7c <+1786>: mov    rdi,rax
0x00000000016a6c7f <+1789>: call   0x16a744a <increment_overflow>
0x00000000016a6c84 <+1794>: test   al,al
0x00000000016a6c86 <+1796>: jne    0x16a7387 <timesub+3589>
0x00000000016a6c8c <+1802>: mov    eax,DWORD PTR [rbx-0x80]
0x00000000016a6c8f <+1805>: and    eax,0x3
0x00000000016a6c92 <+1808>: test   eax,eax
0x00000000016a6c94 <+1810>: jne    0x16a6ce6 <timesub+1892>
0x00000000016a6c96 <+1812>: mov    ecx,DWORD PTR [rbx-0x80]
0x00000000016a6c99 <+1815>: mov    edx,0x51eb851f
0x00000000016a6c9e <+1820>: mov    eax,ecx
0x00000000016a6ca0 <+1822>: imul   edx
0x00000000016a6ca2 <+1824>: sar    edx,0x5
0x00000000016a6ca5 <+1827>: mov    eax,ecx
0x00000000016a6ca7 <+1829>: sar    eax,0x1f
0x00000000016a6caa <+1832>: sub    edx,eax
0x00000000016a6cac <+1834>: mov    eax,edx
0x00000000016a6cae <+1836>: imul   eax,eax,0x64
0x00000000016a6cb1 <+1839>: sub    ecx,eax
0x00000000016a6cb3 <+1841>: mov    eax,ecx
0x00000000016a6cb5 <+1843>: test   eax,eax
0x00000000016a6cb7 <+1845>: jne    0x16a6cdf <timesub+1885>
0x00000000016a6cb9 <+1847>: mov    ecx,DWORD PTR [rbx-0x80]
0x00000000016a6cbc <+1850>: mov    edx,0x51eb851f
0x00000000016a6cc1 <+1855>: mov    eax,ecx
0x00000000016a6cc3 <+1857>: imul   edx
0x00000000016a6cc5 <+1859>: sar    edx,0x7
0x00000000016a6cc8 <+1862>: mov    eax,ecx
0x00000000016a6cca <+1864>: sar    eax,0x1f
0x00000000016a6ccd <+1867>: sub    edx,eax
0x00000000016a6ccf <+1869>: mov    eax,edx
0x00000000016a6cd1 <+1871>: imul   eax,eax,0x190
0x00000000016a6cd7 <+1877>: sub    ecx,eax
0x00000000016a6cd9 <+1879>: mov    eax,ecx
0x00000000016a6cdb <+1881>: test   eax,eax
0x00000000016a6cdd <+1883>: jne    0x16a6ce6 <timesub+1892>
0x00000000016a6cdf <+1885>: mov    edx,0x1
0x00000000016a6ce4 <+1890>: jmp    0x16a6ceb <timesub+1897>
0x00000000016a6ce6 <+1892>: mov    edx,0x0
0x00000000016a6ceb <+1897>: movsxd rax,edx
0x00000000016a6cee <+1900>: shl    rax,0x2
0x00000000016a6cf2 <+1904>: add    rax,0x1d7cde0
0x00000000016a6cf8 <+1910>: mov    rcx,rax
0x00000000016a6cfb <+1913>: shr    rcx,0x3
0x00000000016a6cff <+1917>: add    rcx,0x7fff8000
0x00000000016a6d06 <+1924>: movzx  ecx,BYTE PTR [rcx]
0x00000000016a6d09 <+1927>: test   cl,cl
0x00000000016a6d0b <+1929>: setne  sil
0x00000000016a6d0f <+1933>: mov    rdi,rax
0x00000000016a6d12 <+1936>: and    edi,0x7
0x00000000016a6d15 <+1939>: add    edi,0x3
0x00000000016a6d18 <+1942>: cmp    dil,cl
0x00000000016a6d1b <+1945>: setge  cl
0x00000000016a6d1e <+1948>: and    ecx,esi
0x00000000016a6d20 <+1950>: test   cl,cl
0x00000000016a6d22 <+1952>: je     0x16a6d2c <timesub+1962>
0x00000000016a6d24 <+1954>: mov    rdi,rax
0x00000000016a6d27 <+1957>: call   0x4e9b10 <__asan_report_load4@plt>
0x00000000016a6d2c <+1962>: movsxd rax,edx
0x00000000016a6d2f <+1965>: mov    eax,DWORD PTR [rax*4+0x1d7cde0]
0x00000000016a6d36 <+1972>: cmp    eax,DWORD PTR [rbp-0x110]
0x00000000016a6d3c <+1978>: jle    0x16a6bc3 <timesub+1601>
0x00000000016a6d42 <+1984>: mov    ecx,DWORD PTR [rbx-0x80]
0x00000000016a6d45 <+1987>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a6d4c <+1994>: add    rax,0x14
0x00000000016a6d50 <+1998>: mov    rdx,rax
0x00000000016a6d53 <+2001>: shr    rdx,0x3
0x00000000016a6d57 <+2005>: add    rdx,0x7fff8000
0x00000000016a6d5e <+2012>: movzx  edx,BYTE PTR [rdx]
0x00000000016a6d61 <+2015>: test   dl,dl
0x00000000016a6d63 <+2017>: setne  sil
0x00000000016a6d67 <+2021>: mov    rdi,rax
0x00000000016a6d6a <+2024>: and    edi,0x7
0x00000000016a6d6d <+2027>: add    edi,0x3
0x00000000016a6d70 <+2030>: cmp    dil,dl
0x00000000016a6d73 <+2033>: setge  dl
0x00000000016a6d76 <+2036>: and    edx,esi
0x00000000016a6d78 <+2038>: test   dl,dl
0x00000000016a6d7a <+2040>: je     0x16a6d84 <timesub+2050>
0x00000000016a6d7c <+2042>: mov    rdi,rax
0x00000000016a6d7f <+2045>: call   0x4e9bc0 <__asan_report_store4@plt>
0x00000000016a6d84 <+2050>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a6d8b <+2057>: mov    DWORD PTR [rax+0x14],ecx
0x00000000016a6d8e <+2060>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a6d95 <+2067>: add    rax,0x14
0x00000000016a6d99 <+2071>: mov    esi,0xfffff894
0x00000000016a6d9e <+2076>: mov    rdi,rax
0x00000000016a6da1 <+2079>: call   0x16a744a <increment_overflow>
0x00000000016a6da6 <+2084>: test   al,al
0x00000000016a6da8 <+2086>: jne    0x16a738a <timesub+3592>
0x00000000016a6dae <+2092>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a6db5 <+2099>: add    rax,0x1c
0x00000000016a6db9 <+2103>: mov    rdx,rax
0x00000000016a6dbc <+2106>: shr    rdx,0x3
0x00000000016a6dc0 <+2110>: add    rdx,0x7fff8000
0x00000000016a6dc7 <+2117>: movzx  edx,BYTE PTR [rdx]
0x00000000016a6dca <+2120>: test   dl,dl
0x00000000016a6dcc <+2122>: setne  cl
0x00000000016a6dcf <+2125>: mov    rsi,rax
0x00000000016a6dd2 <+2128>: and    esi,0x7
0x00000000016a6dd5 <+2131>: add    esi,0x3
0x00000000016a6dd8 <+2134>: cmp    sil,dl
0x00000000016a6ddb <+2137>: setge  dl
0x00000000016a6dde <+2140>: and    edx,ecx
0x00000000016a6de0 <+2142>: test   dl,dl
0x00000000016a6de2 <+2144>: je     0x16a6dec <timesub+2154>
0x00000000016a6de4 <+2146>: mov    rdi,rax
0x00000000016a6de7 <+2149>: call   0x4e9bc0 <__asan_report_store4@plt>
0x00000000016a6dec <+2154>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a6df3 <+2161>: mov    edx,DWORD PTR [rbp-0x110]
0x00000000016a6df9 <+2167>: mov    DWORD PTR [rax+0x1c],edx
0x00000000016a6dfc <+2170>: mov    eax,DWORD PTR [rbx-0x80]
0x00000000016a6dff <+2173>: lea    ecx,[rax-0x7b2]
0x00000000016a6e05 <+2179>: mov    edx,0x92492493
0x00000000016a6e0a <+2184>: mov    eax,ecx
0x00000000016a6e0c <+2186>: imul   edx
0x00000000016a6e0e <+2188>: lea    eax,[rdx+rcx*1]
0x00000000016a6e11 <+2191>: sar    eax,0x2
0x00000000016a6e14 <+2194>: mov    edx,eax
0x00000000016a6e16 <+2196>: mov    eax,ecx
0x00000000016a6e18 <+2198>: sar    eax,0x1f
0x00000000016a6e1b <+2201>: sub    edx,eax
0x00000000016a6e1d <+2203>: mov    r14d,edx
0x00000000016a6e20 <+2206>: mov    eax,r14d
0x00000000016a6e23 <+2209>: shl    eax,0x3
0x00000000016a6e26 <+2212>: sub    eax,r14d
0x00000000016a6e29 <+2215>: sub    ecx,eax
0x00000000016a6e2b <+2217>: mov    r14d,ecx
0x00000000016a6e2e <+2220>: mov    eax,DWORD PTR [rbx-0x80]
0x00000000016a6e31 <+2223>: sub    eax,0x1
0x00000000016a6e34 <+2226>: mov    edi,eax
0x00000000016a6e36 <+2228>: call   0x16a6555 <leaps_thru_end_of>
0x00000000016a6e3b <+2233>: add    r14d,eax
0x00000000016a6e3e <+2236>: mov    edi,0x7b1
0x00000000016a6e43 <+2241>: call   0x16a6555 <leaps_thru_end_of>
0x00000000016a6e48 <+2246>: mov    edx,r14d
0x00000000016a6e4b <+2249>: sub    edx,eax
0x00000000016a6e4d <+2251>: mov    eax,DWORD PTR [rbp-0x110]
0x00000000016a6e53 <+2257>: add    eax,edx
0x00000000016a6e55 <+2259>: lea    ecx,[rax+0x4]
0x00000000016a6e58 <+2262>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a6e5f <+2269>: add    rax,0x18
0x00000000016a6e63 <+2273>: mov    rdx,rax
0x00000000016a6e66 <+2276>: mov    rax,rdx
0x00000000016a6e69 <+2279>: shr    rax,0x3
0x00000000016a6e6d <+2283>: add    rax,0x7fff8000
0x00000000016a6e73 <+2289>: movzx  eax,BYTE PTR [rax]
0x00000000016a6e76 <+2292>: test   al,al
0x00000000016a6e78 <+2294>: setne  sil
0x00000000016a6e7c <+2298>: cmp    al,0x3
0x00000000016a6e7e <+2300>: setle  al
0x00000000016a6e81 <+2303>: and    eax,esi
0x00000000016a6e83 <+2305>: test   al,al
0x00000000016a6e85 <+2307>: je     0x16a6e8f <timesub+2317>
0x00000000016a6e87 <+2309>: mov    rdi,rdx
0x00000000016a6e8a <+2312>: call   0x4e9bc0 <__asan_report_store4@plt>
0x00000000016a6e8f <+2317>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a6e96 <+2324>: mov    DWORD PTR [rax+0x18],ecx
0x00000000016a6e99 <+2327>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a6ea0 <+2334>: mov    ecx,DWORD PTR [rax+0x18]
0x00000000016a6ea3 <+2337>: mov    edx,0x92492493
0x00000000016a6ea8 <+2342>: mov    eax,ecx
0x00000000016a6eaa <+2344>: imul   edx
0x00000000016a6eac <+2346>: lea    eax,[rdx+rcx*1]
0x00000000016a6eaf <+2349>: sar    eax,0x2
0x00000000016a6eb2 <+2352>: mov    edx,eax
0x00000000016a6eb4 <+2354>: mov    eax,ecx
0x00000000016a6eb6 <+2356>: sar    eax,0x1f
0x00000000016a6eb9 <+2359>: sub    edx,eax
0x00000000016a6ebb <+2361>: mov    eax,edx
0x00000000016a6ebd <+2363>: mov    edx,eax
0x00000000016a6ebf <+2365>: shl    edx,0x3
0x00000000016a6ec2 <+2368>: sub    edx,eax
0x00000000016a6ec4 <+2370>: mov    eax,ecx
0x00000000016a6ec6 <+2372>: sub    eax,edx
0x00000000016a6ec8 <+2374>: mov    rdx,QWORD PTR [rbp-0x140]
0x00000000016a6ecf <+2381>: mov    DWORD PTR [rdx+0x18],eax
0x00000000016a6ed2 <+2384>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a6ed9 <+2391>: mov    eax,DWORD PTR [rax+0x18]
0x00000000016a6edc <+2394>: test   eax,eax
0x00000000016a6ede <+2396>: jns    0x16a6ef7 <timesub+2421>
0x00000000016a6ee0 <+2398>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a6ee7 <+2405>: mov    eax,DWORD PTR [rax+0x18]
0x00000000016a6eea <+2408>: lea    edx,[rax+0x7]
0x00000000016a6eed <+2411>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a6ef4 <+2418>: mov    DWORD PTR [rax+0x18],edx
0x00000000016a6ef7 <+2421>: mov    rcx,QWORD PTR [rbp-0xf8]
0x00000000016a6efe <+2428>: movabs rdx,0x48d159e26af37c05
0x00000000016a6f08 <+2438>: mov    rax,rcx
0x00000000016a6f0b <+2441>: imul   rdx
0x00000000016a6f0e <+2444>: sar    rdx,0xa
0x00000000016a6f12 <+2448>: mov    rax,rcx
0x00000000016a6f15 <+2451>: sar    rax,0x3f
0x00000000016a6f19 <+2455>: sub    rdx,rax
0x00000000016a6f1c <+2458>: mov    rax,rdx
0x00000000016a6f1f <+2461>: mov    esi,eax
0x00000000016a6f21 <+2463>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a6f28 <+2470>: add    rax,0x8
0x00000000016a6f2c <+2474>: mov    rdx,rax
0x00000000016a6f2f <+2477>: mov    rax,rdx
0x00000000016a6f32 <+2480>: shr    rax,0x3
0x00000000016a6f36 <+2484>: add    rax,0x7fff8000
0x00000000016a6f3c <+2490>: movzx  eax,BYTE PTR [rax]
0x00000000016a6f3f <+2493>: test   al,al
0x00000000016a6f41 <+2495>: setne  cl
0x00000000016a6f44 <+2498>: cmp    al,0x3
0x00000000016a6f46 <+2500>: setle  al
0x00000000016a6f49 <+2503>: and    eax,ecx
0x00000000016a6f4b <+2505>: test   al,al
0x00000000016a6f4d <+2507>: je     0x16a6f57 <timesub+2517>
0x00000000016a6f4f <+2509>: mov    rdi,rdx
0x00000000016a6f52 <+2512>: call   0x4e9bc0 <__asan_report_store4@plt>
0x00000000016a6f57 <+2517>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a6f5e <+2524>: mov    DWORD PTR [rax+0x8],esi
0x00000000016a6f61 <+2527>: mov    rcx,QWORD PTR [rbp-0xf8]
0x00000000016a6f68 <+2534>: movabs rdx,0x48d159e26af37c05
0x00000000016a6f72 <+2544>: mov    rax,rcx
0x00000000016a6f75 <+2547>: imul   rdx
0x00000000016a6f78 <+2550>: sar    rdx,0xa
0x00000000016a6f7c <+2554>: mov    rax,rcx
0x00000000016a6f7f <+2557>: sar    rax,0x3f
0x00000000016a6f83 <+2561>: sub    rdx,rax
0x00000000016a6f86 <+2564>: mov    rax,rdx
0x00000000016a6f89 <+2567>: imul   rax,rax,0xe10
0x00000000016a6f90 <+2574>: sub    rcx,rax
0x00000000016a6f93 <+2577>: mov    rax,rcx
0x00000000016a6f96 <+2580>: mov    QWORD PTR [rbp-0xf8],rax
0x00000000016a6f9d <+2587>: mov    rcx,QWORD PTR [rbp-0xf8]
0x00000000016a6fa4 <+2594>: movabs rdx,0x8888888888888889
0x00000000016a6fae <+2604>: mov    rax,rcx
0x00000000016a6fb1 <+2607>: imul   rdx
0x00000000016a6fb4 <+2610>: lea    rax,[rdx+rcx*1]
0x00000000016a6fb8 <+2614>: sar    rax,0x5
0x00000000016a6fbc <+2618>: mov    rdx,rax
0x00000000016a6fbf <+2621>: mov    rax,rcx
0x00000000016a6fc2 <+2624>: sar    rax,0x3f
0x00000000016a6fc6 <+2628>: sub    rdx,rax
0x00000000016a6fc9 <+2631>: mov    rax,rdx
0x00000000016a6fcc <+2634>: mov    edi,eax
0x00000000016a6fce <+2636>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a6fd5 <+2643>: add    rax,0x4
0x00000000016a6fd9 <+2647>: mov    rdx,rax
0x00000000016a6fdc <+2650>: shr    rdx,0x3
0x00000000016a6fe0 <+2654>: add    rdx,0x7fff8000
0x00000000016a6fe7 <+2661>: movzx  edx,BYTE PTR [rdx]
0x00000000016a6fea <+2664>: test   dl,dl
0x00000000016a6fec <+2666>: setne  cl
0x00000000016a6fef <+2669>: mov    rsi,rax
0x00000000016a6ff2 <+2672>: and    esi,0x7
0x00000000016a6ff5 <+2675>: add    esi,0x3
0x00000000016a6ff8 <+2678>: cmp    sil,dl
0x00000000016a6ffb <+2681>: setge  dl
0x00000000016a6ffe <+2684>: and    edx,ecx
0x00000000016a7000 <+2686>: test   dl,dl
0x00000000016a7002 <+2688>: je     0x16a700c <timesub+2698>
0x00000000016a7004 <+2690>: mov    rdi,rax
0x00000000016a7007 <+2693>: call   0x4e9bc0 <__asan_report_store4@plt>
0x00000000016a700c <+2698>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a7013 <+2705>: mov    DWORD PTR [rax+0x4],edi
0x00000000016a7016 <+2708>: mov    rcx,QWORD PTR [rbp-0xf8]
0x00000000016a701d <+2715>: movabs rdx,0x8888888888888889
0x00000000016a7027 <+2725>: mov    rax,rcx
0x00000000016a702a <+2728>: imul   rdx
0x00000000016a702d <+2731>: lea    rax,[rdx+rcx*1]
0x00000000016a7031 <+2735>: sar    rax,0x5
0x00000000016a7035 <+2739>: mov    rdx,rax
0x00000000016a7038 <+2742>: mov    rax,rcx
0x00000000016a703b <+2745>: sar    rax,0x3f
0x00000000016a703f <+2749>: sub    rdx,rax
0x00000000016a7042 <+2752>: mov    rax,rdx
0x00000000016a7045 <+2755>: shl    rax,0x4
0x00000000016a7049 <+2759>: sub    rax,rdx
0x00000000016a704c <+2762>: shl    rax,0x2
0x00000000016a7050 <+2766>: sub    rcx,rax
0x00000000016a7053 <+2769>: mov    rdx,rcx
0x00000000016a7056 <+2772>: movsx  eax,BYTE PTR [rbp-0x111]
0x00000000016a705d <+2779>: lea    ecx,[rdx+rax*1]
0x00000000016a7060 <+2782>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a7067 <+2789>: mov    rdx,rax
0x00000000016a706a <+2792>: mov    rax,rdx
0x00000000016a706d <+2795>: shr    rax,0x3
0x00000000016a7071 <+2799>: add    rax,0x7fff8000
0x00000000016a7077 <+2805>: movzx  eax,BYTE PTR [rax]
0x00000000016a707a <+2808>: test   al,al
0x00000000016a707c <+2810>: setne  sil
0x00000000016a7080 <+2814>: cmp    al,0x3
0x00000000016a7082 <+2816>: setle  al
0x00000000016a7085 <+2819>: and    eax,esi
0x00000000016a7087 <+2821>: test   al,al
0x00000000016a7089 <+2823>: je     0x16a7093 <timesub+2833>
0x00000000016a708b <+2825>: mov    rdi,rdx
0x00000000016a708e <+2828>: call   0x4e9bc0 <__asan_report_store4@plt>
0x00000000016a7093 <+2833>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a709a <+2840>: mov    DWORD PTR [rax],ecx
0x00000000016a709c <+2842>: mov    eax,DWORD PTR [rbx-0x80]
0x00000000016a709f <+2845>: and    eax,0x3
0x00000000016a70a2 <+2848>: test   eax,eax
0x00000000016a70a4 <+2850>: jne    0x16a70f6 <timesub+2932>
0x00000000016a70a6 <+2852>: mov    ecx,DWORD PTR [rbx-0x80]
0x00000000016a70a9 <+2855>: mov    edx,0x51eb851f
0x00000000016a70ae <+2860>: mov    eax,ecx
0x00000000016a70b0 <+2862>: imul   edx
0x00000000016a70b2 <+2864>: sar    edx,0x5
0x00000000016a70b5 <+2867>: mov    eax,ecx
0x00000000016a70b7 <+2869>: sar    eax,0x1f
0x00000000016a70ba <+2872>: sub    edx,eax
0x00000000016a70bc <+2874>: mov    eax,edx
0x00000000016a70be <+2876>: imul   eax,eax,0x64
0x00000000016a70c1 <+2879>: sub    ecx,eax
0x00000000016a70c3 <+2881>: mov    eax,ecx
0x00000000016a70c5 <+2883>: test   eax,eax
0x00000000016a70c7 <+2885>: jne    0x16a70ef <timesub+2925>
0x00000000016a70c9 <+2887>: mov    ecx,DWORD PTR [rbx-0x80]
0x00000000016a70cc <+2890>: mov    edx,0x51eb851f
0x00000000016a70d1 <+2895>: mov    eax,ecx
0x00000000016a70d3 <+2897>: imul   edx
0x00000000016a70d5 <+2899>: sar    edx,0x7
0x00000000016a70d8 <+2902>: mov    eax,ecx
0x00000000016a70da <+2904>: sar    eax,0x1f
0x00000000016a70dd <+2907>: sub    edx,eax
0x00000000016a70df <+2909>: mov    eax,edx
0x00000000016a70e1 <+2911>: imul   eax,eax,0x190
0x00000000016a70e7 <+2917>: sub    ecx,eax
0x00000000016a70e9 <+2919>: mov    eax,ecx
0x00000000016a70eb <+2921>: test   eax,eax
0x00000000016a70ed <+2923>: jne    0x16a70f6 <timesub+2932>
0x00000000016a70ef <+2925>: mov    eax,0x1
0x00000000016a70f4 <+2930>: jmp    0x16a70fb <timesub+2937>
0x00000000016a70f6 <+2932>: mov    eax,0x0
0x00000000016a70fb <+2937>: movsxd rdx,eax
0x00000000016a70fe <+2940>: mov    rax,rdx
0x00000000016a7101 <+2943>: add    rax,rax
0x00000000016a7104 <+2946>: add    rax,rdx
0x00000000016a7107 <+2949>: shl    rax,0x4
0x00000000016a710b <+2953>: add    rax,0x1d7cd60
0x00000000016a7111 <+2959>: mov    QWORD PTR [rbp-0xd8],rax
0x00000000016a7118 <+2966>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a711f <+2973>: add    rax,0x10
0x00000000016a7123 <+2977>: mov    rdx,rax
0x00000000016a7126 <+2980>: mov    rax,rdx
0x00000000016a7129 <+2983>: shr    rax,0x3
0x00000000016a712d <+2987>: add    rax,0x7fff8000
0x00000000016a7133 <+2993>: movzx  eax,BYTE PTR [rax]
0x00000000016a7136 <+2996>: test   al,al
0x00000000016a7138 <+2998>: setne  cl
0x00000000016a713b <+3001>: cmp    al,0x3
0x00000000016a713d <+3003>: setle  al
0x00000000016a7140 <+3006>: and    eax,ecx
0x00000000016a7142 <+3008>: test   al,al
0x00000000016a7144 <+3010>: je     0x16a714e <timesub+3020>
0x00000000016a7146 <+3012>: mov    rdi,rdx
0x00000000016a7149 <+3015>: call   0x4e9bc0 <__asan_report_store4@plt>
0x00000000016a714e <+3020>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a7155 <+3027>: mov    DWORD PTR [rax+0x10],0x0
0x00000000016a715c <+3034>: jmp    0x16a720c <timesub+3210>
0x00000000016a7161 <+3039>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a7168 <+3046>: add    rax,0x10
0x00000000016a716c <+3050>: mov    rdx,rax
0x00000000016a716f <+3053>: mov    rax,rdx
0x00000000016a7172 <+3056>: shr    rax,0x3
0x00000000016a7176 <+3060>: add    rax,0x7fff8000
0x00000000016a717c <+3066>: movzx  eax,BYTE PTR [rax]
0x00000000016a717f <+3069>: test   al,al
0x00000000016a7181 <+3071>: setne  cl
0x00000000016a7184 <+3074>: cmp    al,0x3
0x00000000016a7186 <+3076>: setle  al
0x00000000016a7189 <+3079>: and    eax,ecx
0x00000000016a718b <+3081>: test   al,al
0x00000000016a718d <+3083>: je     0x16a7197 <timesub+3093>
0x00000000016a718f <+3085>: mov    rdi,rdx
0x00000000016a7192 <+3088>: call   0x4e9b10 <__asan_report_load4@plt>
0x00000000016a7197 <+3093>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a719e <+3100>: mov    eax,DWORD PTR [rax+0x10]
0x00000000016a71a1 <+3103>: cdqe
0x00000000016a71a3 <+3105>: lea    rdx,[rax*4+0x0]
0x00000000016a71ab <+3113>: mov    rax,QWORD PTR [rbp-0xd8]
0x00000000016a71b2 <+3120>: lea    rcx,[rdx+rax*1]
0x00000000016a71b6 <+3124>: mov    rax,rcx
0x00000000016a71b9 <+3127>: mov    rdx,rax
0x00000000016a71bc <+3130>: shr    rdx,0x3
0x00000000016a71c0 <+3134>: add    rdx,0x7fff8000
0x00000000016a71c7 <+3141>: movzx  edx,BYTE PTR [rdx]
0x00000000016a71ca <+3144>: test   dl,dl
0x00000000016a71cc <+3146>: setne  sil
0x00000000016a71d0 <+3150>: mov    rdi,rax
0x00000000016a71d3 <+3153>: and    edi,0x7
0x00000000016a71d6 <+3156>: add    edi,0x3
0x00000000016a71d9 <+3159>: cmp    dil,dl
0x00000000016a71dc <+3162>: setge  dl
0x00000000016a71df <+3165>: and    edx,esi
0x00000000016a71e1 <+3167>: test   dl,dl
0x00000000016a71e3 <+3169>: je     0x16a71ed <timesub+3179>
0x00000000016a71e5 <+3171>: mov    rdi,rax
0x00000000016a71e8 <+3174>: call   0x4e9b10 <__asan_report_load4@plt>
0x00000000016a71ed <+3179>: mov    eax,DWORD PTR [rcx]
0x00000000016a71ef <+3181>: sub    DWORD PTR [rbp-0x110],eax
0x00000000016a71f5 <+3187>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a71fc <+3194>: mov    eax,DWORD PTR [rax+0x10]
0x00000000016a71ff <+3197>: lea    edx,[rax+0x1]
0x00000000016a7202 <+3200>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a7209 <+3207>: mov    DWORD PTR [rax+0x10],edx
0x00000000016a720c <+3210>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a7213 <+3217>: add    rax,0x10
0x00000000016a7217 <+3221>: mov    rdx,rax
0x00000000016a721a <+3224>: mov    rax,rdx
0x00000000016a721d <+3227>: shr    rax,0x3
0x00000000016a7221 <+3231>: add    rax,0x7fff8000
0x00000000016a7227 <+3237>: movzx  eax,BYTE PTR [rax]
0x00000000016a722a <+3240>: test   al,al
0x00000000016a722c <+3242>: setne  cl
0x00000000016a722f <+3245>: cmp    al,0x3
0x00000000016a7231 <+3247>: setle  al
0x00000000016a7234 <+3250>: and    eax,ecx
0x00000000016a7236 <+3252>: test   al,al
0x00000000016a7238 <+3254>: je     0x16a7242 <timesub+3264>
0x00000000016a723a <+3256>: mov    rdi,rdx
0x00000000016a723d <+3259>: call   0x4e9b10 <__asan_report_load4@plt>
0x00000000016a7242 <+3264>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a7249 <+3271>: mov    eax,DWORD PTR [rax+0x10]
0x00000000016a724c <+3274>: cdqe
0x00000000016a724e <+3276>: lea    rdx,[rax*4+0x0]
0x00000000016a7256 <+3284>: mov    rax,QWORD PTR [rbp-0xd8]
0x00000000016a725d <+3291>: lea    rcx,[rdx+rax*1]
0x00000000016a7261 <+3295>: mov    rax,rcx
0x00000000016a7264 <+3298>: mov    rdx,rax
0x00000000016a7267 <+3301>: shr    rdx,0x3
0x00000000016a726b <+3305>: add    rdx,0x7fff8000
0x00000000016a7272 <+3312>: movzx  edx,BYTE PTR [rdx]
0x00000000016a7275 <+3315>: test   dl,dl
0x00000000016a7277 <+3317>: setne  sil
0x00000000016a727b <+3321>: mov    rdi,rax
0x00000000016a727e <+3324>: and    edi,0x7
0x00000000016a7281 <+3327>: add    edi,0x3
0x00000000016a7284 <+3330>: cmp    dil,dl
0x00000000016a7287 <+3333>: setge  dl
0x00000000016a728a <+3336>: and    edx,esi
0x00000000016a728c <+3338>: test   dl,dl
0x00000000016a728e <+3340>: je     0x16a7298 <timesub+3350>
0x00000000016a7290 <+3342>: mov    rdi,rax
0x00000000016a7293 <+3345>: call   0x4e9b10 <__asan_report_load4@plt>
0x00000000016a7298 <+3350>: mov    eax,DWORD PTR [rcx]
0x00000000016a729a <+3352>: cmp    eax,DWORD PTR [rbp-0x110]
0x00000000016a72a0 <+3358>: jle    0x16a7161 <timesub+3039>
0x00000000016a72a6 <+3364>: mov    eax,DWORD PTR [rbp-0x110]
0x00000000016a72ac <+3370>: lea    ecx,[rax+0x1]
0x00000000016a72af <+3373>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a72b6 <+3380>: add    rax,0xc
0x00000000016a72ba <+3384>: mov    rdx,rax
0x00000000016a72bd <+3387>: shr    rdx,0x3
0x00000000016a72c1 <+3391>: add    rdx,0x7fff8000
0x00000000016a72c8 <+3398>: movzx  edx,BYTE PTR [rdx]
0x00000000016a72cb <+3401>: test   dl,dl
0x00000000016a72cd <+3403>: setne  sil
0x00000000016a72d1 <+3407>: mov    rdi,rax
0x00000000016a72d4 <+3410>: and    edi,0x7
0x00000000016a72d7 <+3413>: add    edi,0x3
0x00000000016a72da <+3416>: cmp    dil,dl
0x00000000016a72dd <+3419>: setge  dl
0x00000000016a72e0 <+3422>: and    edx,esi
0x00000000016a72e2 <+3424>: test   dl,dl
0x00000000016a72e4 <+3426>: je     0x16a72ee <timesub+3436>
0x00000000016a72e6 <+3428>: mov    rdi,rax
0x00000000016a72e9 <+3431>: call   0x4e9bc0 <__asan_report_store4@plt>
0x00000000016a72ee <+3436>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a72f5 <+3443>: mov    DWORD PTR [rax+0xc],ecx
0x00000000016a72f8 <+3446>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a72ff <+3453>: add    rax,0x20
0x00000000016a7303 <+3457>: mov    rdx,rax
0x00000000016a7306 <+3460>: mov    rax,rdx
0x00000000016a7309 <+3463>: shr    rax,0x3
0x00000000016a730d <+3467>: add    rax,0x7fff8000
0x00000000016a7313 <+3473>: movzx  eax,BYTE PTR [rax]
0x00000000016a7316 <+3476>: test   al,al
0x00000000016a7318 <+3478>: setne  cl
0x00000000016a731b <+3481>: cmp    al,0x3
0x00000000016a731d <+3483>: setle  al
0x00000000016a7320 <+3486>: and    eax,ecx
0x00000000016a7322 <+3488>: test   al,al
0x00000000016a7324 <+3490>: je     0x16a732e <timesub+3500>
0x00000000016a7326 <+3492>: mov    rdi,rdx
0x00000000016a7329 <+3495>: call   0x4e9bc0 <__asan_report_store4@plt>
0x00000000016a732e <+3500>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a7335 <+3507>: mov    DWORD PTR [rax+0x20],0x0
0x00000000016a733c <+3514>: mov    eax,DWORD PTR [rbp-0x12c]
0x00000000016a7342 <+3520>: movsxd rdx,eax
0x00000000016a7345 <+3523>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a734c <+3530>: add    rax,0x28
0x00000000016a7350 <+3534>: mov    rcx,rax
0x00000000016a7353 <+3537>: shr    rcx,0x3
0x00000000016a7357 <+3541>: add    rcx,0x7fff8000
0x00000000016a735e <+3548>: movzx  ecx,BYTE PTR [rcx]
0x00000000016a7361 <+3551>: test   cl,cl
0x00000000016a7363 <+3553>: je     0x16a736d <timesub+3563>
0x00000000016a7365 <+3555>: mov    rdi,rax
0x00000000016a7368 <+3558>: call   0x4ea310 <__asan_report_store8@plt>
0x00000000016a736d <+3563>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a7374 <+3570>: mov    QWORD PTR [rax+0x28],rdx
0x00000000016a7378 <+3574>: mov    rax,QWORD PTR [rbp-0x140]
0x00000000016a737f <+3581>: jmp    0x16a73d5 <timesub+3667>
0x00000000016a7381 <+3583>: nop
0x00000000016a7382 <+3584>: jmp    0x16a738b <timesub+3593>
0x00000000016a7384 <+3586>: nop
0x00000000016a7385 <+3587>: jmp    0x16a738b <timesub+3593>
0x00000000016a7387 <+3589>: nop
0x00000000016a7388 <+3590>: jmp    0x16a738b <timesub+3593>
0x00000000016a738a <+3592>: nop
0x00000000016a738b <+3593>: call   0x4ecda0 <__errno_location@plt>
0x00000000016a7390 <+3598>: mov    rcx,rax
0x00000000016a7393 <+3601>: mov    rax,rcx
0x00000000016a7396 <+3604>: mov    rdx,rax
0x00000000016a7399 <+3607>: shr    rdx,0x3
0x00000000016a739d <+3611>: add    rdx,0x7fff8000
0x00000000016a73a4 <+3618>: movzx  edx,BYTE PTR [rdx]
0x00000000016a73a7 <+3621>: test   dl,dl
0x00000000016a73a9 <+3623>: setne  sil
0x00000000016a73ad <+3627>: mov    rdi,rax
0x00000000016a73b0 <+3630>: and    edi,0x7
0x00000000016a73b3 <+3633>: add    edi,0x3
0x00000000016a73b6 <+3636>: cmp    dil,dl
0x00000000016a73b9 <+3639>: setge  dl
0x00000000016a73bc <+3642>: and    edx,esi
0x00000000016a73be <+3644>: test   dl,dl
0x00000000016a73c0 <+3646>: je     0x16a73ca <timesub+3656>
0x00000000016a73c2 <+3648>: mov    rdi,rax
0x00000000016a73c5 <+3651>: call   0x4e9bc0 <__asan_report_store4@plt>
0x00000000016a73ca <+3656>: mov    DWORD PTR [rcx],0x4b
0x00000000016a73d0 <+3662>: mov    eax,0x0
0x00000000016a73d5 <+3667>: cmp    r15,r13
0x00000000016a73d8 <+3670>: je     0x16a7414 <timesub+3730>
0x00000000016a73da <+3672>: mov    QWORD PTR [r13+0x0],0x45e0360e
0x00000000016a73e2 <+3680>: movabs rbx,0xf5f5f5f5f5f5f5f5
0x00000000016a73ec <+3690>: mov    QWORD PTR [r12+0x7fff8000],rbx
0x00000000016a73f4 <+3698>: movabs rbx,0xf5f5f5f5f5f5f5f5
0x00000000016a73fe <+3708>: mov    QWORD PTR [r12+0x7fff8008],rbx
0x00000000016a7406 <+3716>: mov    DWORD PTR [r12+0x7fff8010],0xf5f5f5f5
0x00000000016a7412 <+3728>: jmp    0x16a7438 <timesub+3766>
0x00000000016a7414 <+3730>: mov    QWORD PTR [r12+0x7fff8000],0x0
0x00000000016a7420 <+3742>: mov    QWORD PTR [r12+0x7fff8008],0x0
0x00000000016a742c <+3754>: mov    DWORD PTR [r12+0x7fff8010],0x0
0x00000000016a7438 <+3766>: add    rsp,0x118
0x00000000016a743f <+3773>: pop    rbx
0x00000000016a7440 <+3774>: pop    r12
0x00000000016a7442 <+3776>: pop    r13
0x00000000016a7444 <+3778>: pop    r14
0x00000000016a7446 <+3780>: pop    r15
0x00000000016a7448 <+3782>: pop    rbp
0x00000000016a7449 <+3783>: ret
hidva commented 2 years ago

fixed