Created
August 18, 2017 16:21
-
-
Save eira-fransham/bb385367fd628890cfb1c04425cd0d85 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 | <+198>: xor %eax,%eax | |
<+101>: mov %rdx,%r10 | <+200>: mov %rax,-0x50(%rbp) | |
<+104>: mov -0x40(%rbp),%rax | <+204>: xor %r13d,%r13d | |
<+108>: mulq -0x10(%rbp) | <+207>: xor %r14d,%r14d | |
<+112>: add %rax,%r10 | <+210>: mov %r14,%rax | |
<+115>: adc $0x0,%rdx | <+213>: or %rsi,%rax | |
<+119>: mov %rdx,%r11 | <+216>: je 0x582fc <bigint_sherlock::mul+332> | |
<+122>: mov -0x40(%rbp),%rax | <+332>: xor %r8d,%r8d | |
<+126>: mulq -0x8(%rbp) | <+335>: mov -0x30(%rbp),%rdx | |
<+130>: add %rax,%r11 | <+339>: mov %r14,%rax | |
<+133>: adc $0x0,%rdx | <+342>: or %rdx,%rax | |
<+137>: mov %rdx,%rcx | <+345>: je 0x5837d <bigint_sherlock::mul+461> | |
<+140>: mov -0x38(%rbp),%rax | <+461>: xor %r15d,%r15d | |
<+144>: mulq -0x20(%rbp) | <+464>: mov %r14,%rax | |
<+148>: add %rax,%r9 | <+467>: mov -0x48(%rbp),%rdx | |
<+151>: adc %rdx,%r10 | <+471>: or %rdx,%rax | |
<+154>: adc $0x0,%r11 | <+474>: je 0x583f4 <bigint_sherlock::mul+580> | |
<+158>: adc $0x0,%rcx | <+580>: xor %r9d,%r9d | |
<+162>: mov -0x38(%rbp),%rax | <+583>: mov -0x38(%rbp),%r10 | |
<+166>: mulq -0x18(%rbp) | <+587>: mov %r12,%r14 | |
<+170>: add %rax,%r10 | <+590>: shr $0x20,%r14 | |
<+173>: adc %rdx,%r11 | <+594>: mov %r12d,%r12d | |
<+176>: adc $0x0,%rcx | <+597>: test %r11,%r11 | |
<+180>: adc $0x0,%r11 | <+600>: je 0x5847f <bigint_sherlock::mul+719> | |
<+184>: adc $0x0,%rcx | <+719>: xor %edi,%edi | |
<+188>: mov -0x38(%rbp),%rax | <+721>: mov %rdi,%rax | |
<+192>: mulq -0x10(%rbp) | <+724>: mov -0x40(%rbp),%rcx | |
<+196>: add %rax,%r11 | <+728>: or %rcx,%rax | |
<+199>: adc $0x0,%rdx | <+731>: je 0x58503 <bigint_sherlock::mul+851> | |
<+203>: or %rdx,%rcx | <+851>: mov %rdi,%rax | |
<+206>: mov -0x30(%rbp),%rax | <+854>: mov -0x30(%rbp),%rcx | |
<+210>: mulq -0x20(%rbp) | <+858>: or %rcx,%rax | |
<+214>: add %rax,%r10 | <+861>: je 0x58585 <bigint_sherlock::mul+981> | |
<+217>: adc %rdx,%r11 | <+981>: mov %r13,-0x38(%rbp) | |
<+220>: adc $0x0,%rcx | <+985>: mov %rdi,%rax | |
<+224>: mov -0x30(%rbp),%rax | <+988>: mov -0x48(%rbp),%rdx | |
<+228>: mulq -0x18(%rbp) | <+992>: or %rdx,%rax | |
<+232>: add %rax,%r11 | <+995>: je 0x585fd <bigint_sherlock::mul+1101> | |
<+235>: adc $0x0,%rdx | <+1101>: xor %r13d,%r13d | |
<+239>: or %rdx,%rcx | <+1104>: mov %r10,%r12 | |
<+242>: mov -0x28(%rbp),%rax | <+1107>: shr $0x20,%r12 | |
<+246>: mulq -0x20(%rbp) | <+1111>: mov %r10d,%r14d | |
<+250>: add %rax,%r11 | <+1114>: test %r11,%r11 | |
<+253>: or %rdx,%rcx | <+1117>: je 0x58684 <bigint_sherlock::mul+1236> | |
<+256>: cmp $0x0,%rcx | <+1236>: xor %edi,%edi | |
<+260>: jne 0x58351 <bigint_sherlock::mul+321> | <+1238>: mov %rdi,%rax | |
<+262>: mov -0x28(%rbp),%rcx | <+1241>: mov -0x40(%rbp),%rsi | |
<+266>: jrcxz 0x58330 <bigint_sherlock::mul+288> | <+1245>: or %rsi,%rax | |
<+268>: mov -0x8(%rbp),%rcx | <+1248>: je 0x58709 <bigint_sherlock::mul+1369> | |
<+272>: mov -0x10(%rbp),%rax | <+1369>: mov %rdi,%rax | |
<+276>: or %rax,%rcx | <+1372>: mov -0x30(%rbp),%rsi | |
<+279>: mov -0x18(%rbp),%rax | <+1376>: or %rsi,%rax | |
<+283>: or %rax,%rcx | <+1379>: je 0x5878c <bigint_sherlock::mul+1500> | |
<+286>: jmp 0x58351 <bigint_sherlock::mul+321> | <+1500>: mov %rdi,%rax | |
<+288>: mov -0x8(%rbp),%rcx | <+1503>: or %rdx,%rax | |
<+292>: jrcxz 0x58347 <bigint_sherlock::mul+311> | <+1506>: je 0x587fb <bigint_sherlock::mul+1611> | |
<+294>: mov -0x30(%rbp),%rcx | <+1611>: xor %ecx,%ecx | |
<+298>: mov -0x38(%rbp),%rax | <+1613>: mov -0x60(%rbp),%rax | |
<+302>: or %rax,%rcx | <+1617>: mov %rax,%r14 | |
<+305>: cmp $0x0,%rcx | <+1620>: shr $0x20,%r14 | |
<+309>: jne 0x58351 <bigint_sherlock::mul+321> | <+1624>: mov %eax,%r12d | |
<+311>: mov -0x10(%rbp),%rcx | <+1627>: test %r11,%r11 | |
<+315>: jrcxz 0x58351 <bigint_sherlock::mul+321> | <+1630>: je 0x58885 <bigint_sherlock::mul+1749> | |
<+317>: mov -0x30(%rbp),%rcx | <+1749>: xor %edi,%edi | |
<+321>: test %rcx,%rcx | <+1751>: mov %rdi,%rax | |
<+324>: jne 0x5836e <bigint_sherlock::mul+350> | <+1754>: mov -0x40(%rbp),%rdx | |
<+326>: mov %r8,(%rdi) | <+1758>: or %rdx,%rax | |
<+329>: mov %r9,0x8(%rdi) | <+1761>: je 0x58909 <bigint_sherlock::mul+1881> | |
<+333>: mov %r10,0x10(%rdi) | <+1881>: mov %rdi,%rax | |
<+337>: mov %r11,0x18(%rdi) | <+1884>: mov -0x30(%rbp),%rdx | |
<+341>: mov %rdi,%rax | <+1888>: or %rdx,%rax | |
<+344>: add $0x40,%rsp | <+1891>: je 0x5898b <bigint_sherlock::mul+2011> | |
<+348>: pop %rbp | <+2011>: mov %rdi,%rax | |
<+349>: retq | <+2014>: mov -0x48(%rbp),%rdx | |
<+350>: mov 0x3ff29b(%rip),%rdi # 0x457610 | <+2018>: or %rdx,%rax | |
<+357>: callq 0x57a38 | <+2021>: je 0x58a05 <bigint_sherlock::mul+2133> | |
> <+2133>: xor %eax,%eax | |
> <+2135>: test %al,%al | |
> <+2137>: jne 0x58a3d <bigint_sherlock::mul+2189> | |
> <+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