Last active
August 18, 2017 15:52
-
-
Save eira-fransham/bac1d30dc04c63794eb398d9218a1533 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Dump of assembler code for function bigint_sherlock::mul: Dump of assembler code for function bigint_sherlock::mul: | |
| <+0>: push %rbp <+0>: push %rbp | |
| <+1>: mov %rsp,%rbp <+1>: mov %rsp,%rbp | |
| <+4>: sub $0x40,%rsp | <+4>: push %r15 | |
| <+8>: mov 0x10(%rbp),%rax | <+6>: push %r14 | |
| <+12>: mov 0x18(%rbp),%rcx | <+8>: push %r13 | |
| <+16>: mov 0x20(%rbp),%rdx | <+10>: push %r12 | |
| <+20>: mov 0x28(%rbp),%rsi | <+12>: push %rbx | |
| <+24>: mov 0x30(%rbp),%r8 | <+13>: sub $0x38,%rsp | |
| <+28>: mov 0x38(%rbp),%r9 | <+17>: mov %rdi,-0x58(%rbp) | |
| <+32>: mov 0x40(%rbp),%r10 | <+21>: mov 0x10(%rbp),%r11 | |
| <+36>: mov 0x48(%rbp),%r11 | <+25>: mov 0x18(%rbp),%rsi | |
| <+40>: mov %rax,-0x40(%rbp) | <+29>: mov 0x20(%rbp),%rax | |
| <+44>: mov %rcx,-0x38(%rbp) | <+33>: mov %rax,-0x30(%rbp) | |
| <+48>: mov %rdx,-0x30(%rbp) | <+37>: mov 0x28(%rbp),%rax | |
| <+52>: mov %rsi,-0x28(%rbp) | <+41>: mov %rax,-0x48(%rbp) | |
| <+56>: mov %r8,-0x20(%rbp) | <+45>: mov 0x30(%rbp),%rcx | |
| <+60>: mov %r9,-0x18(%rbp) | <+49>: mov 0x38(%rbp),%r12 | |
| <+64>: mov %r10,-0x10(%rbp) | <+53>: mov 0x40(%rbp),%rax | |
| <+68>: mov %r11,-0x8(%rbp) | <+57>: mov %rax,-0x38(%rbp) | |
| <+72>: mov -0x40(%rbp),%rax | <+61>: mov 0x48(%rbp),%rax | |
| <+76>: mulq -0x20(%rbp) | <+65>: mov %rax,-0x60(%rbp) | |
| <+80>: mov %rax,%r8 | <+69>: mov %ecx,%r10d | |
| <+83>: mov %rdx,%r9 | <+72>: shr $0x20,%rcx | |
| <+86>: mov -0x40(%rbp),%rax | <+76>: test %r11,%r11 | |
| <+90>: mulq -0x18(%rbp) | <+79>: mov %rsi,-0x40(%rbp) | |
| <+94>: add %rax,%r9 | <+83>: je 0x58276 <bigint_sherlock::mul+198> | |
| <+97>: adc $0x0,%rdx | <+85>: mov %r11,%r13 | |
| <+101>: mov %rdx,%r10 | <+88>: shr $0x20,%r13 | |
| <+104>: mov -0x40(%rbp),%rax | <+92>: mov %r11d,%esi | |
| <+108>: mulq -0x10(%rbp) | <+95>: mov %r10,%rax | |
| <+112>: add %rax,%r10 | <+98>: imul %r13,%rax | |
| <+115>: adc $0x0,%rdx | <+102>: mov %r10,%rdi | |
| <+119>: mov %rdx,%r11 | <+105>: imul %rsi,%rdi | |
| <+122>: mov -0x40(%rbp),%rax | <+109>: mov %rax,%rbx | |
| <+126>: mulq -0x8(%rbp) | <+112>: shl $0x20,%rbx | |
| <+130>: add %rax,%r11 | <+116>: shr $0x20,%rax | |
| <+133>: adc $0x0,%rdx | <+120>: add %rdi,%rbx | |
| <+137>: mov %rdx,%rcx | <+123>: adc $0x0,%rax | |
| <+140>: mov -0x38(%rbp),%rax | <+127>: mov %ebx,%edi | |
| <+144>: mulq -0x20(%rbp) | <+129>: shr $0x20,%rbx | |
| <+148>: add %rax,%r9 | <+133>: imul %rcx,%r13 | |
| <+151>: adc %rdx,%r10 | <+137>: imul %rcx,%rsi | |
| <+154>: adc $0x0,%r11 | <+141>: mov %r13,%rdx | |
| <+158>: adc $0x0,%rcx | <+144>: shl $0x20,%rdx | |
| <+162>: mov -0x38(%rbp),%rax | <+148>: shr $0x20,%r13 | |
| <+166>: mulq -0x18(%rbp) | <+152>: add %rsi,%rdx | |
| <+170>: add %rax,%r10 | <+155>: mov -0x40(%rbp),%rsi | |
| <+173>: adc %rdx,%r11 | <+159>: adc $0x0,%r13d | |
| <+176>: adc $0x0,%rcx | <+163>: add %rbx,%rdx | |
| <+180>: adc $0x0,%r11 | <+166>: adc $0x0,%r13d | |
| <+184>: adc $0x0,%rcx | <+170>: shld $0x20,%rdx,%r13 | |
| <+188>: mov -0x38(%rbp),%rax | <+175>: shl $0x20,%rdx | |
| <+192>: mulq -0x10(%rbp) | <+179>: or %rdi,%rdx | |
| <+196>: add %rax,%r11 | <+182>: mov %rdx,-0x50(%rbp) | |
| <+199>: adc $0x0,%rdx | <+186>: add %rax,%r13 | |
| <+203>: or %rdx,%rcx | <+189>: sbb %r14,%r14 | |
| <+206>: mov -0x30(%rbp),%rax | <+192>: and $0x1,%r14d | |
| <+210>: mulq -0x20(%rbp) | <+196>: jmp 0x58282 <bigint_sherlock::mul+210> | |
| <+214>: add %rax,%r10 | <+198>: xor %eax,%eax | |
| <+217>: adc %rdx,%r11 | <+200>: mov %rax,-0x50(%rbp) | |
| <+220>: adc $0x0,%rcx | <+204>: xor %r13d,%r13d | |
| <+224>: mov -0x30(%rbp),%rax | <+207>: xor %r14d,%r14d | |
| <+228>: mulq -0x18(%rbp) | <+210>: mov %r14,%rax | |
| <+232>: add %rax,%r11 | <+213>: or %rsi,%rax | |
| <+235>: adc $0x0,%rdx | <+216>: je 0x582fc <bigint_sherlock::mul+332> | |
| <+239>: or %rdx,%rcx | <+218>: mov %rsi,%r8 | |
| <+242>: mov -0x28(%rbp),%rax | <+221>: shr $0x20,%r8 | |
| <+246>: mulq -0x20(%rbp) | <+225>: mov %esi,%esi | |
| <+250>: add %rax,%r11 | <+227>: mov %r10,%rax | |
| <+253>: or %rdx,%rcx | <+230>: imul %r8,%rax | |
| <+256>: cmp $0x0,%rcx | <+234>: mov %r10,%rdx | |
| <+260>: jne 0x58351 <bigint_sherlock::mul+321> | <+237>: imul %rsi,%rdx | |
| <+262>: mov -0x28(%rbp),%rcx | <+241>: mov %rax,%rdi | |
| <+266>: jrcxz 0x58330 <bigint_sherlock::mul+288> | <+244>: shl $0x20,%rdi | |
| <+268>: mov -0x8(%rbp),%rcx | <+248>: shr $0x20,%rax | |
| <+272>: mov -0x10(%rbp),%rax | <+252>: add %rdx,%rdi | |
| <+276>: or %rax,%rcx | <+255>: adc $0x0,%rax | |
| <+279>: mov -0x18(%rbp),%rax | <+259>: add %r14,%rax | |
| <+283>: or %rax,%rcx | <+262>: add %r13,%rdi | |
| <+286>: jmp 0x58351 <bigint_sherlock::mul+321> | <+265>: adc $0x0,%rax | |
| <+288>: mov -0x8(%rbp),%rcx | <+269>: mov %edi,%edx | |
| <+292>: jrcxz 0x58347 <bigint_sherlock::mul+311> | <+271>: shr $0x20,%rdi | |
| <+294>: mov -0x30(%rbp),%rcx | <+275>: imul %rcx,%r8 | |
| <+298>: mov -0x38(%rbp),%rax | <+279>: imul %rcx,%rsi | |
| <+302>: or %rax,%rcx | <+283>: mov %r8,%r13 | |
| <+305>: cmp $0x0,%rcx | <+286>: shl $0x20,%r13 | |
| <+309>: jne 0x58351 <bigint_sherlock::mul+321> | <+290>: shr $0x20,%r8 | |
| <+311>: mov -0x10(%rbp),%rcx | <+294>: add %rsi,%r13 | |
| <+315>: jrcxz 0x58351 <bigint_sherlock::mul+321> | <+297>: adc $0x0,%r8d | |
| <+317>: mov -0x30(%rbp),%rcx | <+301>: add %rdi,%r13 | |
| <+321>: test %rcx,%rcx | <+304>: adc $0x0,%r8d | |
| <+324>: jne 0x5836e <bigint_sherlock::mul+350> | <+308>: shld $0x20,%r13,%r8 | |
| <+326>: mov %r8,(%rdi) | <+313>: shl $0x20,%r13 | |
| <+329>: mov %r9,0x8(%rdi) | <+317>: or %rdx,%r13 | |
| <+333>: mov %r10,0x10(%rdi) | <+320>: add %rax,%r8 | |
| <+337>: mov %r11,0x18(%rdi) | <+323>: sbb %r14,%r14 | |
| <+341>: mov %rdi,%rax | <+326>: and $0x1,%r14d | |
| <+344>: add $0x40,%rsp | <+330>: jmp 0x582ff <bigint_sherlock::mul+335> | |
| <+348>: pop %rbp | <+332>: xor %r8d,%r8d | |
| <+349>: retq | <+335>: mov -0x30(%rbp),%rdx | |
| <+350>: mov 0x3ff29b(%rip),%rdi # 0x457610 | <+339>: mov %r14,%rax | |
| <+357>: callq 0x57a38 | <+342>: or %rdx,%rax | |
| > <+345>: je 0x5837d <bigint_sherlock::mul+461> | |
| > <+347>: mov %rdx,%r15 | |
| > <+350>: shr $0x20,%r15 | |
| > <+354>: mov %edx,%edi | |
| > <+356>: mov %r10,%rax | |
| > <+359>: imul %r15,%rax | |
| > <+363>: mov %r10,%rdx | |
| > <+366>: imul %rdi,%rdx | |
| > <+370>: mov %rax,%rbx | |
| > <+373>: shl $0x20,%rbx | |
| > <+377>: shr $0x20,%rax | |
| > <+381>: add %rdx,%rbx | |
| > <+384>: adc $0x0,%rax | |
| > <+388>: add %r14,%rax | |
| > <+391>: add %r8,%rbx | |
| > <+394>: adc $0x0,%rax | |
| > <+398>: mov %ebx,%edx | |
| > <+400>: shr $0x20,%rbx | |
| > <+404>: imul %rcx,%r15 | |
| > <+408>: imul %rcx,%rdi | |
| > <+412>: mov %r15,%r8 | |
| > <+415>: shl $0x20,%r8 | |
| > <+419>: shr $0x20,%r15 | |
| > <+423>: add %rdi,%r8 | |
| > <+426>: adc $0x0,%r15d | |
| > <+430>: add %rbx,%r8 | |
| > <+433>: adc $0x0,%r15d | |
| > <+437>: shld $0x20,%r8,%r15 | |
| > <+442>: shl $0x20,%r8 | |
| > <+446>: or %rdx,%r8 | |
| > <+449>: add %rax,%r15 | |
| > <+452>: sbb %r14,%r14 | |
| > <+455>: and $0x1,%r14d | |
| > <+459>: jmp 0x58380 <bigint_sherlock::mul+464> | |
| > <+461>: xor %r15d,%r15d | |
| > <+464>: mov %r14,%rax | |
| > <+467>: mov -0x48(%rbp),%rdx | |
| > <+471>: or %rdx,%rax | |
| > <+474>: je 0x583f4 <bigint_sherlock::mul+580> | |
| > <+476>: mov %rdx,%r9 | |
| > <+479>: shr $0x20,%r9 | |
| > <+483>: mov %edx,%edi | |
| > <+485>: mov %r10,%rax | |
| > <+488>: imul %r9,%rax | |
| > <+492>: imul %rdi,%r10 | |
| > <+496>: mov %rax,%rbx | |
| > <+499>: shl $0x20,%rbx | |
| > <+503>: shr $0x20,%rax | |
| > <+507>: add %r10,%rbx | |
| > <+510>: adc $0x0,%rax | |
| > <+514>: add %r14,%rax | |
| > <+517>: add %r15,%rbx | |
| > <+520>: adc $0x0,%rax | |
| > <+524>: mov %ebx,%edx | |
| > <+526>: shr $0x20,%rbx | |
| > <+530>: imul %rcx,%r9 | |
| > <+534>: imul %rdi,%rcx | |
| > <+538>: mov %r9,%r15 | |
| > <+541>: shl $0x20,%r15 | |
| > <+545>: shr $0x20,%r9 | |
| > <+549>: add %rcx,%r15 | |
| > <+552>: adc $0x0,%r9d | |
| > <+556>: add %rbx,%r15 | |
| > <+559>: adc $0x0,%r9d | |
| > <+563>: shld $0x20,%r15,%r9 | |
| > <+568>: shl $0x20,%r15 | |
| > <+572>: or %rdx,%r15 | |
| > <+575>: add %rax,%r9 | |
| > <+578>: jmp 0x583f7 <bigint_sherlock::mul+583> | |
| > <+580>: xor %r9d,%r9d | |
| > <+583>: mov -0x38(%rbp),%r10 | |
| > <+587>: mov %r12,%r14 | |
| > <+590>: shr $0x20,%r14 | |
| > <+594>: mov %r12d,%r12d | |
| > <+597>: test %r11,%r11 | |
| > <+600>: je 0x5847f <bigint_sherlock::mul+719> | |
| > <+602>: mov %r11,%rax | |
| > <+605>: shr $0x20,%rax | |
| > <+609>: mov %r11d,%edi | |
| > <+612>: mov %r12,%rdx | |
| > <+615>: imul %rax,%rdx | |
| > <+619>: mov %r12,%rsi | |
| > <+622>: imul %rdi,%rsi | |
| > <+626>: mov %rdx,%rcx | |
| > <+629>: shl $0x20,%rcx | |
| > <+633>: shr $0x20,%rdx | |
| > <+637>: add %rsi,%rcx | |
| > <+640>: adc $0x0,%rdx | |
| > <+644>: add %r13,%rcx | |
| > <+647>: adc $0x0,%rdx | |
| > <+651>: mov %ecx,%esi | |
| > <+653>: shr $0x20,%rcx | |
| > <+657>: imul %r14,%rax | |
| > <+661>: imul %r14,%rdi | |
| > <+665>: mov %rax,%r13 | |
| > <+668>: shl $0x20,%r13 | |
| > <+672>: shr $0x20,%rax | |
| > <+676>: add %rdi,%r13 | |
| > <+679>: adc $0x0,%eax | |
| > <+682>: add %rcx,%r13 | |
| > <+685>: adc $0x0,%eax | |
| > <+688>: shld $0x20,%r13,%rax | |
| > <+693>: shl $0x20,%r13 | |
| > <+697>: or %rsi,%r13 | |
| > <+700>: add %rdx,%rax | |
| > <+703>: sbb %cl,%cl | |
| > <+705>: add %rax,%r8 | |
| > <+708>: sbb %al,%al | |
| > <+710>: or %cl,%al | |
| > <+712>: and $0x1,%al | |
| > <+714>: movzbl %al,%edi | |
| > <+717>: jmp 0x58481 <bigint_sherlock::mul+721> | |
| > <+719>: xor %edi,%edi | |
| > <+721>: mov %rdi,%rax | |
| > <+724>: mov -0x40(%rbp),%rcx | |
| > <+728>: or %rcx,%rax | |
| > <+731>: je 0x58503 <bigint_sherlock::mul+851> | |
| > <+733>: mov %rcx,%rdx | |
| > <+736>: shr $0x20,%rdx | |
| > <+740>: mov %ecx,%ebx | |
| > <+742>: mov %r12,%rax | |
| > <+745>: imul %rdx,%rax | |
| > <+749>: mov %r12,%rsi | |
| > <+752>: imul %rbx,%rsi | |
| > <+756>: mov %rax,%rcx | |
| > <+759>: shl $0x20,%rcx | |
| > <+763>: shr $0x20,%rax | |
| > <+767>: add %rsi,%rcx | |
| > <+770>: adc $0x0,%rax | |
| > <+774>: add %rdi,%rax | |
| > <+777>: add %r8,%rcx | |
| > <+780>: adc $0x0,%rax | |
| > <+784>: mov %ecx,%esi | |
| > <+786>: shr $0x20,%rcx | |
| > <+790>: imul %r14,%rdx | |
| > <+794>: imul %r14,%rbx | |
| > <+798>: mov %rdx,%r8 | |
| > <+801>: shl $0x20,%r8 | |
| > <+805>: shr $0x20,%rdx | |
| > <+809>: add %rbx,%r8 | |
| > <+812>: adc $0x0,%edx | |
| > <+815>: add %rcx,%r8 | |
| > <+818>: adc $0x0,%edx | |
| > <+821>: shld $0x20,%r8,%rdx | |
| > <+826>: shl $0x20,%r8 | |
| > <+830>: or %rsi,%r8 | |
| > <+833>: add %rax,%rdx | |
| > <+836>: sbb %al,%al | |
| > <+838>: add %rdx,%r15 | |
| > <+841>: sbb %cl,%cl | |
| > <+843>: or %al,%cl | |
| > <+845>: and $0x1,%cl | |
| > <+848>: movzbl %cl,%edi | |
| > <+851>: mov %rdi,%rax | |
| > <+854>: mov -0x30(%rbp),%rcx | |
| > <+858>: or %rcx,%rax | |
| > <+861>: je 0x58585 <bigint_sherlock::mul+981> | |
| > <+863>: mov %rcx,%rdx | |
| > <+866>: shr $0x20,%rdx | |
| > <+870>: mov %ecx,%ebx | |
| > <+872>: mov %r12,%rax | |
| > <+875>: imul %rdx,%rax | |
| > <+879>: mov %r12,%rsi | |
| > <+882>: imul %rbx,%rsi | |
| > <+886>: mov %rax,%rcx | |
| > <+889>: shl $0x20,%rcx | |
| > <+893>: shr $0x20,%rax | |
| > <+897>: add %rsi,%rcx | |
| > <+900>: adc $0x0,%rax | |
| > <+904>: add %rdi,%rax | |
| > <+907>: add %r15,%rcx | |
| > <+910>: adc $0x0,%rax | |
| > <+914>: mov %ecx,%esi | |
| > <+916>: shr $0x20,%rcx | |
| > <+920>: imul %r14,%rdx | |
| > <+924>: imul %r14,%rbx | |
| > <+928>: mov %rdx,%r15 | |
| > <+931>: shl $0x20,%r15 | |
| > <+935>: shr $0x20,%rdx | |
| > <+939>: add %rbx,%r15 | |
| > <+942>: adc $0x0,%edx | |
| > <+945>: add %rcx,%r15 | |
| > <+948>: adc $0x0,%edx | |
| > <+951>: shld $0x20,%r15,%rdx | |
| > <+956>: shl $0x20,%r15 | |
| > <+960>: or %rsi,%r15 | |
| > <+963>: add %rax,%rdx | |
| > <+966>: sbb %al,%al | |
| > <+968>: add %rdx,%r9 | |
| > <+971>: sbb %cl,%cl | |
| > <+973>: or %al,%cl | |
| > <+975>: and $0x1,%cl | |
| > <+978>: movzbl %cl,%edi | |
| > <+981>: mov %r13,-0x38(%rbp) | |
| > <+985>: mov %rdi,%rax | |
| > <+988>: mov -0x48(%rbp),%rdx | |
| > <+992>: or %rdx,%rax | |
| > <+995>: je 0x585fd <bigint_sherlock::mul+1101> | |
| > <+997>: mov %rdx,%r13 | |
| > <+1000>: shr $0x20,%r13 | |
| > <+1004>: mov %edx,%ebx | |
| > <+1006>: mov %r12,%rax | |
| > <+1009>: imul %r13,%rax | |
| > <+1013>: imul %rbx,%r12 | |
| > <+1017>: mov %rax,%rcx | |
| > <+1020>: shl $0x20,%rcx | |
| > <+1024>: shr $0x20,%rax | |
| > <+1028>: add %r12,%rcx | |
| > <+1031>: adc $0x0,%rax | |
| > <+1035>: add %rdi,%rax | |
| > <+1038>: add %r9,%rcx | |
| > <+1041>: adc $0x0,%rax | |
| > <+1045>: mov %ecx,%esi | |
| > <+1047>: shr $0x20,%rcx | |
| > <+1051>: imul %r14,%r13 | |
| > <+1055>: imul %rbx,%r14 | |
| > <+1059>: mov %r13,%r9 | |
| > <+1062>: shl $0x20,%r9 | |
| > <+1066>: shr $0x20,%r13 | |
| > <+1070>: add %r14,%r9 | |
| > <+1073>: adc $0x0,%r13d | |
| > <+1077>: add %rcx,%r9 | |
| > <+1080>: adc $0x0,%r13d | |
| > <+1084>: shld $0x20,%r9,%r13 | |
| > <+1089>: shl $0x20,%r9 | |
| > <+1093>: or %rsi,%r9 | |
| > <+1096>: add %rax,%r13 | |
| > <+1099>: jmp 0x58600 <bigint_sherlock::mul+1104> | |
| > <+1101>: xor %r13d,%r13d | |
| > <+1104>: mov %r10,%r12 | |
| > <+1107>: shr $0x20,%r12 | |
| > <+1111>: mov %r10d,%r14d | |
| > <+1114>: test %r11,%r11 | |
| > <+1117>: je 0x58684 <bigint_sherlock::mul+1236> | |
| > <+1119>: mov %r11,%rax | |
| > <+1122>: shr $0x20,%rax | |
| > <+1126>: mov %r11d,%edi | |
| > <+1129>: mov %r14,%rcx | |
| > <+1132>: imul %rax,%rcx | |
| > <+1136>: mov %r14,%rbx | |
| > <+1139>: imul %rdi,%rbx | |
| > <+1143>: mov %rcx,%rsi | |
| > <+1146>: shl $0x20,%rsi | |
| > <+1150>: shr $0x20,%rcx | |
| > <+1154>: add %rbx,%rsi | |
| > <+1157>: adc $0x0,%rcx | |
| > <+1161>: add %r8,%rsi | |
| > <+1164>: adc $0x0,%rcx | |
| > <+1168>: mov %esi,%ebx | |
| > <+1170>: shr $0x20,%rsi | |
| > <+1174>: imul %r12,%rax | |
| > <+1178>: imul %r12,%rdi | |
| > <+1182>: mov %rax,%r8 | |
| > <+1185>: shl $0x20,%r8 | |
| > <+1189>: shr $0x20,%rax | |
| > <+1193>: add %rdi,%r8 | |
| > <+1196>: adc $0x0,%eax | |
| > <+1199>: add %rsi,%r8 | |
| > <+1202>: adc $0x0,%eax | |
| > <+1205>: shld $0x20,%r8,%rax | |
| > <+1210>: shl $0x20,%r8 | |
| > <+1214>: or %rbx,%r8 | |
| > <+1217>: add %rcx,%rax | |
| > <+1220>: sbb %cl,%cl | |
| > <+1222>: add %rax,%r15 | |
| > <+1225>: sbb %al,%al | |
| > <+1227>: or %cl,%al | |
| > <+1229>: and $0x1,%al | |
| > <+1231>: movzbl %al,%edi | |
| > <+1234>: jmp 0x58686 <bigint_sherlock::mul+1238> | |
| > <+1236>: xor %edi,%edi | |
| > <+1238>: mov %rdi,%rax | |
| > <+1241>: mov -0x40(%rbp),%rsi | |
| > <+1245>: or %rsi,%rax | |
| > <+1248>: je 0x58709 <bigint_sherlock::mul+1369> | |
| > <+1250>: mov %rsi,%rcx | |
| > <+1253>: shr $0x20,%rcx | |
| > <+1257>: mov %esi,%ebx | |
| > <+1259>: mov %r14,%rax | |
| > <+1262>: imul %rcx,%rax | |
| > <+1266>: mov %r14,%rsi | |
| > <+1269>: imul %rbx,%rsi | |
| > <+1273>: mov %rax,%r10 | |
| > <+1276>: shl $0x20,%r10 | |
| > <+1280>: shr $0x20,%rax | |
| > <+1284>: add %rsi,%r10 | |
| > <+1287>: adc $0x0,%rax | |
| > <+1291>: add %rdi,%rax | |
| > <+1294>: add %r15,%r10 | |
| > <+1297>: adc $0x0,%rax | |
| > <+1301>: mov %r10d,%esi | |
| > <+1304>: shr $0x20,%r10 | |
| > <+1308>: imul %r12,%rcx | |
| > <+1312>: imul %r12,%rbx | |
| > <+1316>: mov %rcx,%r15 | |
| > <+1319>: shl $0x20,%r15 | |
| > <+1323>: shr $0x20,%rcx | |
| > <+1327>: add %rbx,%r15 | |
| > <+1330>: adc $0x0,%ecx | |
| > <+1333>: add %r10,%r15 | |
| > <+1336>: adc $0x0,%ecx | |
| > <+1339>: shld $0x20,%r15,%rcx | |
| > <+1344>: shl $0x20,%r15 | |
| > <+1348>: or %rsi,%r15 | |
| > <+1351>: add %rax,%rcx | |
| > <+1354>: sbb %al,%al | |
| > <+1356>: add %rcx,%r9 | |
| > <+1359>: sbb %cl,%cl | |
| > <+1361>: or %al,%cl | |
| > <+1363>: and $0x1,%cl | |
| > <+1366>: movzbl %cl,%edi | |
| > <+1369>: mov %rdi,%rax | |
| > <+1372>: mov -0x30(%rbp),%rsi | |
| > <+1376>: or %rsi,%rax | |
| > <+1379>: je 0x5878c <bigint_sherlock::mul+1500> | |
| > <+1381>: mov %rsi,%rcx | |
| > <+1384>: shr $0x20,%rcx | |
| > <+1388>: mov %esi,%r10d | |
| > <+1391>: mov %r14,%rax | |
| > <+1394>: imul %rcx,%rax | |
| > <+1398>: mov %r14,%rsi | |
| > <+1401>: imul %r10,%rsi | |
| > <+1405>: mov %rax,%rbx | |
| > <+1408>: shl $0x20,%rbx | |
| > <+1412>: shr $0x20,%rax | |
| > <+1416>: add %rsi,%rbx | |
| > <+1419>: adc $0x0,%rax | |
| > <+1423>: add %rdi,%rax | |
| > <+1426>: add %r9,%rbx | |
| > <+1429>: adc $0x0,%rax | |
| > <+1433>: mov %ebx,%esi | |
| > <+1435>: shr $0x20,%rbx | |
| > <+1439>: imul %r12,%rcx | |
| > <+1443>: imul %r12,%r10 | |
| > <+1447>: mov %rcx,%r9 | |
| > <+1450>: shl $0x20,%r9 | |
| > <+1454>: shr $0x20,%rcx | |
| > <+1458>: add %r10,%r9 | |
| > <+1461>: adc $0x0,%ecx | |
| > <+1464>: add %rbx,%r9 | |
| > <+1467>: adc $0x0,%ecx | |
| > <+1470>: shld $0x20,%r9,%rcx | |
| > <+1475>: shl $0x20,%r9 | |
| > <+1479>: or %rsi,%r9 | |
| > <+1482>: add %rax,%rcx | |
| > <+1485>: sbb %al,%al | |
| > <+1487>: add %rcx,%r13 | |
| > <+1490>: sbb %cl,%cl | |
| > <+1492>: or %al,%cl | |
| > <+1494>: and $0x1,%cl | |
| > <+1497>: movzbl %cl,%edi | |
| > <+1500>: mov %rdi,%rax | |
| > <+1503>: or %rdx,%rax | |
| > <+1506>: je 0x587fb <bigint_sherlock::mul+1611> | |
| > <+1508>: mov %rdx,%rcx | |
| > <+1511>: shr $0x20,%rcx | |
| > <+1515>: mov %edx,%r10d | |
| > <+1518>: mov %r14,%rax | |
| > <+1521>: imul %rcx,%rax | |
| > <+1525>: imul %r10,%r14 | |
| > <+1529>: mov %rax,%rbx | |
| > <+1532>: shl $0x20,%rbx | |
| > <+1536>: shr $0x20,%rax | |
| > <+1540>: add %r14,%rbx | |
| > <+1543>: adc $0x0,%rax | |
| > <+1547>: add %rdi,%rax | |
| > <+1550>: add %r13,%rbx | |
| > <+1553>: adc $0x0,%rax | |
| > <+1557>: mov %ebx,%esi | |
| > <+1559>: shr $0x20,%rbx | |
| > <+1563>: imul %r12,%rcx | |
| > <+1567>: imul %r10,%r12 | |
| > <+1571>: mov %rcx,%r13 | |
| > <+1574>: shl $0x20,%r13 | |
| > <+1578>: shr $0x20,%rcx | |
| > <+1582>: add %r12,%r13 | |
| > <+1585>: adc $0x0,%ecx | |
| > <+1588>: add %rbx,%r13 | |
| > <+1591>: adc $0x0,%ecx | |
| > <+1594>: shld $0x20,%r13,%rcx | |
| > <+1599>: shl $0x20,%r13 | |
| > <+1603>: or %rsi,%r13 | |
| > <+1606>: add %rax,%rcx | |
| > <+1609>: jmp 0x587fd <bigint_sherlock::mul+1613> | |
| > <+1611>: xor %ecx,%ecx | |
| > <+1613>: mov -0x60(%rbp),%rax | |
| > <+1617>: mov %rax,%r14 | |
| > <+1620>: shr $0x20,%r14 | |
| > <+1624>: mov %eax,%r12d | |
| > <+1627>: test %r11,%r11 | |
| > <+1630>: je 0x58885 <bigint_sherlock::mul+1749> | |
| > <+1632>: mov %r11,%rax | |
| > <+1635>: shr $0x20,%rax | |
| > <+1639>: mov %r11d,%r10d | |
| > <+1642>: mov %r12,%rdi | |
| > <+1645>: imul %rax,%rdi | |
| > <+1649>: mov %r12,%rbx | |
| > <+1652>: imul %r10,%rbx | |
| > <+1656>: mov %rdi,%rsi | |
| > <+1659>: shl $0x20,%rsi | |
| > <+1663>: shr $0x20,%rdi | |
| > <+1667>: add %rbx,%rsi | |
| > <+1670>: adc $0x0,%rdi | |
| > <+1674>: add %r15,%rsi | |
| > <+1677>: adc $0x0,%rdi | |
| > <+1681>: mov %esi,%ebx | |
| > <+1683>: shr $0x20,%rsi | |
| > <+1687>: imul %r14,%rax | |
| > <+1691>: imul %r14,%r10 | |
| > <+1695>: mov %rax,%r15 | |
| > <+1698>: shl $0x20,%r15 | |
| > <+1702>: shr $0x20,%rax | |
| > <+1706>: add %r10,%r15 | |
| > <+1709>: adc $0x0,%eax | |
| > <+1712>: add %rsi,%r15 | |
| > <+1715>: adc $0x0,%eax | |
| > <+1718>: shld $0x20,%r15,%rax | |
| > <+1723>: shl $0x20,%r15 | |
| > <+1727>: or %rbx,%r15 | |
| > <+1730>: add %rdi,%rax | |
| > <+1733>: sbb %bl,%bl | |
| > <+1735>: add %rax,%r9 | |
| > <+1738>: sbb %al,%al | |
| > <+1740>: or %bl,%al | |
| > <+1742>: and $0x1,%al | |
| > <+1744>: movzbl %al,%edi | |
| > <+1747>: jmp 0x58887 <bigint_sherlock::mul+1751> | |
| > <+1749>: xor %edi,%edi | |
| > <+1751>: mov %rdi,%rax | |
| > <+1754>: mov -0x40(%rbp),%rdx | |
| > <+1758>: or %rdx,%rax | |
| > <+1761>: je 0x58909 <bigint_sherlock::mul+1881> | |
| > <+1763>: mov %rdx,%rax | |
| > <+1766>: shr $0x20,%rax | |
| > <+1770>: mov %edx,%r11d | |
| > <+1773>: mov %r12,%rbx | |
| > <+1776>: imul %rax,%rbx | |
| > <+1780>: mov %r12,%rdx | |
| > <+1783>: imul %r11,%rdx | |
| > <+1787>: mov %rbx,%rsi | |
| > <+1790>: shl $0x20,%rsi | |
| > <+1794>: shr $0x20,%rbx | |
| > <+1798>: add %rdx,%rsi | |
| > <+1801>: adc $0x0,%rbx | |
| > <+1805>: add %rdi,%rbx | |
| > <+1808>: add %r9,%rsi | |
| > <+1811>: adc $0x0,%rbx | |
| > <+1815>: mov %esi,%edx | |
| > <+1817>: shr $0x20,%rsi | |
| > <+1821>: imul %r14,%rax | |
| > <+1825>: imul %r14,%r11 | |
| > <+1829>: mov %rax,%r9 | |
| > <+1832>: shl $0x20,%r9 | |
| > <+1836>: shr $0x20,%rax | |
| > <+1840>: add %r11,%r9 | |
| > <+1843>: adc $0x0,%eax | |
| > <+1846>: add %rsi,%r9 | |
| > <+1849>: adc $0x0,%eax | |
| > <+1852>: shld $0x20,%r9,%rax | |
| > <+1857>: shl $0x20,%r9 | |
| > <+1861>: or %rdx,%r9 | |
| > <+1864>: add %rbx,%rax | |
| > <+1867>: sbb %dl,%dl | |
| > <+1869>: add %rax,%r13 | |
| > <+1872>: sbb %al,%al | |
| > <+1874>: or %dl,%al | |
| > <+1876>: and $0x1,%al | |
| > <+1878>: movzbl %al,%edi | |
| > <+1881>: mov %rdi,%rax | |
| > <+1884>: mov -0x30(%rbp),%rdx | |
| > <+1888>: or %rdx,%rax | |
| > <+1891>: je 0x5898b <bigint_sherlock::mul+2011> | |
| > <+1893>: mov %rdx,%rax | |
| > <+1896>: shr $0x20,%rax | |
| > <+1900>: mov %edx,%r10d | |
| > <+1903>: mov %r12,%rbx | |
| > <+1906>: imul %rax,%rbx | |
| > <+1910>: mov %r12,%rdx | |
| > <+1913>: imul %r10,%rdx | |
| > <+1917>: mov %rbx,%rsi | |
| > <+1920>: shl $0x20,%rsi | |
| > <+1924>: shr $0x20,%rbx | |
| > <+1928>: add %rdx,%rsi | |
| > <+1931>: adc $0x0,%rbx | |
| > <+1935>: add %rdi,%rbx | |
| > <+1938>: add %r13,%rsi | |
| > <+1941>: adc $0x0,%rbx | |
| > <+1945>: mov %esi,%edx | |
| > <+1947>: shr $0x20,%rsi | |
| > <+1951>: imul %r14,%rax | |
| > <+1955>: imul %r14,%r10 | |
| > <+1959>: mov %rax,%r13 | |
| > <+1962>: shl $0x20,%r13 | |
| > <+1966>: shr $0x20,%rax | |
| > <+1970>: add %r10,%r13 | |
| > <+1973>: adc $0x0,%eax | |
| > <+1976>: add %rsi,%r13 | |
| > <+1979>: adc $0x0,%eax | |
| > <+1982>: shld $0x20,%r13,%rax | |
| > <+1987>: shl $0x20,%r13 | |
| > <+1991>: or %rdx,%r13 | |
| > <+1994>: add %rbx,%rax | |
| > <+1997>: sbb %dl,%dl | |
| > <+1999>: add %rax,%rcx | |
| > <+2002>: sbb %al,%al | |
| > <+2004>: or %dl,%al | |
| > <+2006>: and $0x1,%al | |
| > <+2008>: movzbl %al,%edi | |
| > <+2011>: mov %rdi,%rax | |
| > <+2014>: mov -0x48(%rbp),%rdx | |
| > <+2018>: or %rdx,%rax | |
| > <+2021>: je 0x58a05 <bigint_sherlock::mul+2133> | |
| > <+2023>: mov %rdx,%rax | |
| > <+2026>: shr $0x20,%rax | |
| > <+2030>: mov %edx,%r10d | |
| > <+2033>: mov %r12,%rbx | |
| > <+2036>: imul %rax,%rbx | |
| > <+2040>: imul %r10,%r12 | |
| > <+2044>: mov %rbx,%rsi | |
| > <+2047>: shl $0x20,%rsi | |
| > <+2051>: shr $0x20,%rbx | |
| > <+2055>: add %r12,%rsi | |
| > <+2058>: adc $0x0,%rbx | |
| > <+2062>: add %rdi,%rbx | |
| > <+2065>: add %rcx,%rsi | |
| > <+2068>: adc $0x0,%rbx | |
| > <+2072>: mov %esi,%edx | |
| > <+2074>: shr $0x20,%rsi | |
| > <+2078>: imul %r14,%rax | |
| > <+2082>: imul %r10,%r14 | |
| > <+2086>: mov %rax,%rcx | |
| > <+2089>: shl $0x20,%rcx | |
| > <+2093>: shr $0x20,%rax | |
| > <+2097>: add %r14,%rcx | |
| > <+2100>: adc $0x0,%eax | |
| > <+2103>: add %rsi,%rcx | |
| > <+2106>: adc $0x0,%eax | |
| > <+2109>: shld $0x20,%rcx,%rax | |
| > <+2114>: shl $0x20,%rcx | |
| > <+2118>: or %rdx,%rcx | |
| > <+2121>: add %rbx,%rax | |
| > <+2124>: setne %al | |
| > <+2127>: test %al,%al | |
| > <+2129>: je 0x58a0b <bigint_sherlock::mul+2139> | |
| > <+2131>: jmp 0x58a3d <bigint_sherlock::mul+2189> | |
| > <+2133>: xor %eax,%eax | |
| > <+2135>: test %al,%al | |
| > <+2137>: jne 0x58a3d <bigint_sherlock::mul+2189> | |
| > <+2139>: or %r9,%r13 | |
| > <+2142>: or %rcx,%r13 | |
| > <+2145>: jne 0x58a3d <bigint_sherlock::mul+2189> | |
| > <+2147>: mov -0x58(%rbp),%rax | |
| > <+2151>: mov -0x50(%rbp),%rcx | |
| > <+2155>: mov %rcx,(%rax) | |
| > <+2158>: mov -0x38(%rbp),%rcx | |
| > <+2162>: mov %rcx,0x8(%rax) | |
| > <+2166>: mov %r8,0x10(%rax) | |
| > <+2170>: mov %r15,0x18(%rax) | |
| > <+2174>: add $0x38,%rsp | |
| > <+2178>: pop %rbx | |
| > <+2179>: pop %r12 | |
| > <+2181>: pop %r13 | |
| > <+2183>: pop %r14 | |
| > <+2185>: pop %r15 | |
| > <+2187>: pop %rbp | |
| > <+2188>: retq | |
| > <+2189>: mov 0x44dbcc(%rip),%rdi # 0x4a6610 | |
| > <+2196>: callq 0x579d8 | |
| End of assembler dump. End of assembler dump. | |
| Dump of assembler code for function bigint_sherlock::add: Dump of assembler code for function bigint_sherlock::add: | |
| <+0>: push %rbp <+0>: push %rbp | |
| <+1>: mov %rsp,%rbp <+1>: mov %rsp,%rbp | |
| <+4>: sub $0x20,%rsp | <+4>: mov 0x10(%rbp),%r9 | |
| <+8>: mov 0x10(%rbp),%rcx | <+8>: mov 0x18(%rbp),%rcx | |
| <+12>: mov 0x18(%rbp),%rdx | <+12>: mov 0x20(%rbp),%rsi | |
| <+16>: mov 0x20(%rbp),%rsi | <+16>: mov 0x28(%rbp),%rdx | |
| <+20>: mov 0x28(%rbp),%r8 | <+20>: mov 0x40(%rbp),%r10 | |
| <+24>: mov 0x30(%rbp),%rax | <+24>: mov 0x48(%rbp),%r8 | |
| <+28>: mov 0x38(%rbp),%r9 | <+28>: add 0x38(%rbp),%rcx | |
| <+32>: mov 0x40(%rbp),%r10 | <+32>: setb %al | |
| <+36>: mov 0x48(%rbp),%r11 | <+35>: add 0x30(%rbp),%r9 | |
| <+40>: mov %rax,-0x20(%rbp) | <+39>: jae 0x58a7f <bigint_sherlock::add+47> | |
| <+44>: mov %r9,-0x18(%rbp) | <+41>: add $0x1,%rcx | |
| <+48>: mov %r10,-0x10(%rbp) | <+45>: adc $0x0,%al | |
| <+52>: mov %r11,-0x8(%rbp) | <+47>: test %al,%al | |
| <+56>: add -0x20(%rbp),%rcx | <+49>: je 0x58a9b <bigint_sherlock::add+75> | |
| <+60>: adc -0x18(%rbp),%rdx | <+51>: movzbl %al,%eax | |
| <+64>: adc -0x10(%rbp),%rsi | <+54>: lea (%rsi,%r10,1),%r11 | |
| <+68>: adc -0x8(%rbp),%r8 | <+58>: add %rax,%r11 | |
| <+72>: setb %al | <+61>: setb %al | |
| <+75>: test %al,%al | <+64>: add %r10,%rsi | |
| <+77>: jne 0x583e7 <bigint_sherlock::add+103> | <+67>: adc $0x0,%al | |
| <+79>: mov %rcx,(%rdi) | <+69>: test %al,%al | |
| <+82>: mov %rdx,0x8(%rdi) | <+71>: jne 0x58aa8 <bigint_sherlock::add+88> | |
| <+86>: mov %rsi,0x10(%rdi) | <+73>: jmp 0x58ac0 <bigint_sherlock::add+112> | |
| <+90>: mov %r8,0x18(%rdi) | <+75>: add %r10,%rsi | |
| <+94>: mov %rdi,%rax | <+78>: setb %al | |
| <+97>: add $0x20,%rsp | <+81>: mov %rsi,%r11 | |
| <+101>: pop %rbp | <+84>: test %al,%al | |
| <+102>: retq | <+86>: je 0x58ac0 <bigint_sherlock::add+112> | |
| <+103>: mov 0x3ff142(%rip),%rdi # 0x457530 | <+88>: movzbl %al,%eax | |
| <+110>: callq 0x57a38 | <+91>: lea (%rdx,%r8,1),%rsi | |
| > <+95>: add %rax,%rsi | |
| > <+98>: setb %al | |
| > <+101>: add %r8,%rdx | |
| > <+104>: adc $0x0,%al | |
| > <+106>: test %al,%al | |
| > <+108>: je 0x58acd <bigint_sherlock::add+125> | |
| > <+110>: jmp 0x58ae1 <bigint_sherlock::add+145> | |
| > <+112>: add %r8,%rdx | |
| > <+115>: setb %al | |
| > <+118>: mov %rdx,%rsi | |
| > <+121>: test %al,%al | |
| > <+123>: jne 0x58ae1 <bigint_sherlock::add+145> | |
| > <+125>: mov %r9,(%rdi) | |
| > <+128>: mov %rcx,0x8(%rdi) | |
| > <+132>: mov %r11,0x10(%rdi) | |
| > <+136>: mov %rsi,0x18(%rdi) | |
| > <+140>: mov %rdi,%rax | |
| > <+143>: pop %rbp | |
| > <+144>: retq | |
| > <+145>: mov 0x44da48(%rip),%rdi # 0x4a6530 | |
| > <+152>: callq 0x579d8 | |
| End of assembler dump. End of assembler dump. | |
| Dump of assembler code for function bigint_sherlock::sub: Dump of assembler code for function bigint_sherlock::sub: | |
| <+0>: push %rbp <+0>: push %rbp | |
| <+1>: mov %rsp,%rbp <+1>: mov %rsp,%rbp | |
| <+4>: sub $0x20,%rsp | <+4>: mov 0x10(%rbp),%r9 | |
| <+8>: mov 0x10(%rbp),%rcx | <+8>: mov 0x18(%rbp),%rcx | |
| <+12>: mov 0x18(%rbp),%rdx | <+12>: mov 0x20(%rbp),%rsi | |
| <+16>: mov 0x20(%rbp),%rsi | <+16>: mov 0x28(%rbp),%rdx | |
| <+20>: mov 0x28(%rbp),%r8 | <+20>: mov 0x40(%rbp),%r10 | |
| <+24>: mov 0x30(%rbp),%rax | <+24>: mov 0x48(%rbp),%r8 | |
| <+28>: mov 0x38(%rbp),%r9 | <+28>: add 0x38(%rbp),%rcx | |
| <+32>: mov 0x40(%rbp),%r10 | <+32>: setb %al | |
| <+36>: mov 0x48(%rbp),%r11 | <+35>: add 0x30(%rbp),%r9 | |
| <+40>: mov %rax,-0x20(%rbp) | <+39>: jae 0x58b1f <bigint_sherlock::sub+47> | |
| <+44>: mov %r9,-0x18(%rbp) | <+41>: add $0x1,%rcx | |
| <+48>: mov %r10,-0x10(%rbp) | <+45>: adc $0x0,%al | |
| <+52>: mov %r11,-0x8(%rbp) | <+47>: test %al,%al | |
| <+56>: add -0x20(%rbp),%rcx | <+49>: je 0x58b3b <bigint_sherlock::sub+75> | |
| <+60>: adc -0x18(%rbp),%rdx | <+51>: movzbl %al,%eax | |
| <+64>: adc -0x10(%rbp),%rsi | <+54>: lea (%rsi,%r10,1),%r11 | |
| <+68>: adc -0x8(%rbp),%r8 | <+58>: add %rax,%r11 | |
| <+72>: setb %al | <+61>: setb %al | |
| <+75>: test %al,%al | <+64>: add %r10,%rsi | |
| <+77>: jne 0x58467 <bigint_sherlock::sub+103> | <+67>: adc $0x0,%al | |
| <+79>: mov %rcx,(%rdi) | <+69>: test %al,%al | |
| <+82>: mov %rdx,0x8(%rdi) | <+71>: jne 0x58b48 <bigint_sherlock::sub+88> | |
| <+86>: mov %rsi,0x10(%rdi) | <+73>: jmp 0x58b60 <bigint_sherlock::sub+112> | |
| <+90>: mov %r8,0x18(%rdi) | <+75>: add %r10,%rsi | |
| <+94>: mov %rdi,%rax | <+78>: setb %al | |
| <+97>: add $0x20,%rsp | <+81>: mov %rsi,%r11 | |
| <+101>: pop %rbp | <+84>: test %al,%al | |
| <+102>: retq | <+86>: je 0x58b60 <bigint_sherlock::sub+112> | |
| <+103>: mov 0x3ff0c2(%rip),%rdi # 0x457530 | <+88>: movzbl %al,%eax | |
| <+110>: callq 0x57a38 | <+91>: lea (%rdx,%r8,1),%rsi | |
| > <+95>: add %rax,%rsi | |
| > <+98>: setb %al | |
| > <+101>: add %r8,%rdx | |
| > <+104>: adc $0x0,%al | |
| > <+106>: test %al,%al | |
| > <+108>: je 0x58b6d <bigint_sherlock::sub+125> | |
| > <+110>: jmp 0x58b81 <bigint_sherlock::sub+145> | |
| > <+112>: add %r8,%rdx | |
| > <+115>: setb %al | |
| > <+118>: mov %rdx,%rsi | |
| > <+121>: test %al,%al | |
| > <+123>: jne 0x58b81 <bigint_sherlock::sub+145> | |
| > <+125>: mov %r9,(%rdi) | |
| > <+128>: mov %rcx,0x8(%rdi) | |
| > <+132>: mov %r11,0x10(%rdi) | |
| > <+136>: mov %rsi,0x18(%rdi) | |
| > <+140>: mov %rdi,%rax | |
| > <+143>: pop %rbp | |
| > <+144>: retq | |
| > <+145>: mov 0x44d9a8(%rip),%rdi # 0x4a6530 | |
| > <+152>: callq 0x579d8 | |
| End of assembler dump. End of assembler dump. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment