Last active
August 18, 2017 15:52
-
-
Save eira-fransham/bac1d30dc04c63794eb398d9218a1533 to your computer and use it in GitHub Desktop.
This file contains 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