/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-│ │vi: set et ft=asm ts=8 tw=8 fenc=utf-8 :vi│ ╞══════════════════════════════════════════════════════════════════════════════╡ │ Copyright 2021 Justine Alexandra Roberts Tunney │ │ │ │ Permission to use, copy, modify, and/or distribute this software for │ │ any purpose with or without fee is hereby granted, provided that the │ │ above copyright notice and this permission notice appear in all copies. │ │ │ │ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ │ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ │ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ │ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ │ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ │ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/macros.internal.h" // Computes 1024-bit product of 512-bit and 512-bit numbers. // // Instructions: 260 // Total Cycles: 98 // Total uOps: 452 // uOps Per Cycle: 4.61 // IPC: 2.65 // Block RThroughput: 75.3 // // @param rdi receives 16 quadword result // @param rsi is left hand side which must have 8 quadwords // @param rdx is right hand side which must have 8 quadwords // @note words are host endian while array is little endian // @mayalias Mul8x8Adx: push %rbp mov %rsp,%rbp .profilable sub $104,%rsp mov %r15,-8(%rbp) mov %r14,-16(%rbp) mov %r13,-24(%rbp) mov %r12,-32(%rbp) mov %rbx,-40(%rbp) mov %rdx,%r12 mov (%rdx),%rdx mulx (%rsi),%rax,%rcx mov %rdi,-48(%rbp) mov %rax,-56(%rbp) mulx 8(%rsi),%rdx,%rax add %rdx,%rcx mov (%r12),%rdx mulx 16(%rsi),%rdx,%rbx adc %rdx,%rax mov (%r12),%rdx mulx 24(%rsi),%rdx,%r11 adc %rdx,%rbx mov (%r12),%rdx mulx 32(%rsi),%rdx,%r10 adc %rdx,%r11 mov (%r12),%rdx mulx 40(%rsi),%rdx,%r9 adc %rdx,%r10 mov (%r12),%rdx mulx 48(%rsi),%rdx,%r8 adc %rdx,%r9 mov (%r12),%rdx mulx 56(%rsi),%rdx,%rdi adc %rdx,%r8 adc $0,%rdi xor %r13d,%r13d mov 8(%r12),%rdx mulx (%rsi),%r15,%r14 adox %r15,%rcx adcx %r14,%rax mov %rcx,-64(%rbp) mulx 8(%rsi),%r14,%rcx adox %r14,%rax adcx %rcx,%rbx mulx 16(%rsi),%r14,%rcx adox %r14,%rbx adcx %rcx,%r11 mulx 24(%rsi),%r14,%rcx adox %r14,%r11 adcx %rcx,%r10 mulx 32(%rsi),%r14,%rcx adox %r14,%r10 adcx %rcx,%r9 mulx 40(%rsi),%r14,%rcx adox %r14,%r9 adcx %rcx,%r8 mulx 48(%rsi),%r14,%rcx adox %r14,%r8 adcx %rcx,%rdi mulx 56(%rsi),%rdx,%rcx adox %rdx,%rdi adcx %r13,%rcx mov 16(%r12),%rdx adox %r13,%rcx mulx (%rsi),%r15,%r14 xor %r13d,%r13d adox %r15,%rax adcx %r14,%rbx mov %rax,-72(%rbp) mulx 8(%rsi),%r14,%rax adox %r14,%rbx adcx %rax,%r11 mulx 16(%rsi),%r14,%rax adox %r14,%r11 adcx %rax,%r10 mulx 24(%rsi),%r14,%rax adox %r14,%r10 adcx %rax,%r9 mulx 32(%rsi),%r14,%rax adox %r14,%r9 adcx %rax,%r8 mulx 40(%rsi),%r14,%rax adox %r14,%r8 adcx %rax,%rdi mulx 48(%rsi),%r14,%rax adox %r14,%rdi adcx %rax,%rcx mulx 56(%rsi),%rdx,%rax adox %rdx,%rcx adcx %r13,%rax adox %r13,%rax xor %r13d,%r13d mov 24(%r12),%rdx mulx (%rsi),%r15,%r14 adox %r15,%rbx adcx %r14,%r11 mov %rbx,-80(%rbp) mov %r11,%r15 mulx 8(%rsi),%r14,%rbx adox %r14,%r15 adcx %rbx,%r10 mulx 16(%rsi),%rbx,%r11 adox %rbx,%r10 adcx %r11,%r9 mulx 24(%rsi),%rbx,%r11 adox %rbx,%r9 adcx %r11,%r8 mulx 32(%rsi),%rbx,%r11 adox %rbx,%r8 adcx %r11,%rdi mulx 40(%rsi),%rbx,%r11 adox %rbx,%rdi adcx %r11,%rcx mulx 48(%rsi),%rbx,%r11 adox %rbx,%rcx adcx %r11,%rax mulx 56(%rsi),%rdx,%r11 adox %rdx,%rax adcx %r13,%r11 mov 32(%r12),%rdx adox %r13,%r11 xor %ebx,%ebx mulx (%rsi),%r14,%r13 adox %r14,%r15 adcx %r13,%r10 mov %r15,-88(%rbp) mulx 8(%rsi),%r14,%r13 mov %r10,%r15 adcx %r13,%r9 adox %r14,%r15 mulx 16(%rsi),%r13,%r10 adox %r13,%r9 adcx %r10,%r8 mulx 24(%rsi),%r13,%r10 adcx %r10,%rdi adox %r13,%r8 mulx 32(%rsi),%r13,%r10 adox %r13,%rdi adcx %r10,%rcx mulx 40(%rsi),%r13,%r10 adox %r13,%rcx adcx %r10,%rax mulx 48(%rsi),%r13,%r10 adox %r13,%rax adcx %r10,%r11 mulx 56(%rsi),%rdx,%r10 adox %rdx,%r11 adcx %rbx,%r10 mov 40(%r12),%rdx adox %rbx,%r10 mulx (%rsi),%r14,%r13 xor %ebx,%ebx adox %r14,%r15 mov %r15,-96(%rbp) adcx %r13,%r9 mulx 8(%rsi),%r14,%r13 mov %r9,%r15 adox %r14,%r15 adcx %r13,%r8 mulx 16(%rsi),%r13,%r9 adox %r13,%r8 adcx %r9,%rdi mulx 24(%rsi),%r13,%r9 adox %r13,%rdi adcx %r9,%rcx mulx 32(%rsi),%r13,%r9 adox %r13,%rcx adcx %r9,%rax mulx 40(%rsi),%r13,%r9 adox %r13,%rax adcx %r9,%r11 mulx 48(%rsi),%r13,%r9 adox %r13,%r11 adcx %r9,%r10 mulx 56(%rsi),%rdx,%r9 adox %rdx,%r10 adcx %rbx,%r9 adox %rbx,%r9 xor %ebx,%ebx mov 48(%r12),%rdx mulx (%rsi),%r14,%r13 adox %r14,%r15 adcx %r13,%r8 mov %r15,-104(%rbp) mulx 8(%rsi),%r14,%r13 mov %r8,%r15 adcx %r13,%rdi adox %r14,%r15 mulx 16(%rsi),%r13,%r8 adox %r13,%rdi adcx %r8,%rcx mulx 24(%rsi),%r13,%r8 adox %r13,%rcx adcx %r8,%rax mulx 32(%rsi),%r13,%r8 adox %r13,%rax adcx %r8,%r11 mulx 40(%rsi),%r13,%r8 adox %r13,%r11 adcx %r8,%r10 mulx 48(%rsi),%r13,%r8 adox %r13,%r10 adcx %r8,%r9 mulx 56(%rsi),%rdx,%r8 adox %rdx,%r9 mov 56(%r12),%rdx adcx %rbx,%r8 mulx (%rsi),%r13,%r12 adox %rbx,%r8 xor %ebx,%ebx adox %r13,%r15 adcx %r12,%rdi mulx 8(%rsi),%r13,%r12 adox %r13,%rdi adcx %r12,%rcx mulx 16(%rsi),%r13,%r12 adox %r13,%rcx adcx %r12,%rax mulx 24(%rsi),%r13,%r12 adox %r13,%rax adcx %r12,%r11 mulx 32(%rsi),%r13,%r12 adox %r13,%r11 adcx %r12,%r10 mulx 40(%rsi),%r13,%r12 adox %r13,%r10 adcx %r12,%r9 mulx 48(%rsi),%r13,%r12 mulx 56(%rsi),%rsi,%rdx adox %r13,%r9 adcx %r12,%r8 adox %rsi,%r8 adcx %rbx,%rdx mov -64(%rbp),%rsi adox %rbx,%rdx mov -48(%rbp),%rbx mov -56(%rbp),%r14 mov %rsi,8(%rbx) mov -72(%rbp),%rsi mov %r14,(%rbx) mov %rsi,16(%rbx) mov -80(%rbp),%rsi mov %rsi,24(%rbx) mov -88(%rbp),%rsi mov %rsi,32(%rbx) mov -96(%rbp),%rsi mov %rsi,40(%rbx) mov -104(%rbp),%rsi mov %r15,56(%rbx) mov %rsi,48(%rbx) mov %rdi,64(%rbx) mov %rcx,72(%rbx) mov %rax,80(%rbx) mov %r11,88(%rbx) mov %r10,96(%rbx) mov %r9,104(%rbx) mov %r8,112(%rbx) mov %rdx,120(%rbx) mov -8(%rbp),%r15 mov -16(%rbp),%r14 mov -24(%rbp),%r13 mov -32(%rbp),%r12 mov -40(%rbp),%rbx leave ret .endfn Mul8x8Adx,globl .end TIMELINE VIEW 0123456789 0123456789 0123456789 0123456789 Index 0123456789 0123456789 0123456789 0123456789 [0,0] DeER . . . . . . . . . . . . . . . . subq $104, %rsp [0,1] DeER . . . . . . . . . . . . . . . . movq %r15, -8(%rbp) [0,2] D=eER. . . . . . . . . . . . . . . . movq %r14, -16(%rbp) [0,3] D==eER . . . . . . . . . . . . . . . movq %r13, -24(%rbp) [0,4] D===eER . . . . . . . . . . . . . . . movq %r12, -32(%rbp) [0,5] D====eER . . . . . . . . . . . . . . . movq %rbx, -40(%rbp) [0,6] .DeE---R . . . . . . . . . . . . . . . movq %rdx, %r12 [0,7] .DeeeeeER . . . . . . . . . . . . . . . movq (%rdx), %rdx [0,8] .D=====eeeeeeeeeER . . . . . . . . . . . . . mulxq (%rsi), %rax, %rcx [0,9] . D====eE--------R . . . . . . . . . . . . . movq %rdi, -48(%rbp) [0,10] . D=======eE-----R . . . . . . . . . . . . . movq %rax, -56(%rbp) [0,11] . D=====eeeeeeeeeER . . . . . . . . . . . . . mulxq 8(%rsi), %rdx, %rax [0,12] . D============eER . . . . . . . . . . . . . addq %rdx, %rcx [0,13] . DeeeeeE--------R . . . . . . . . . . . . . movq (%r12), %rdx [0,14] . D=====eeeeeeeeeER. . . . . . . . . . . . . mulxq 16(%rsi), %rdx, %rbx [0,15] . D============eER. . . . . . . . . . . . . adcq %rdx, %rax [0,16] . DeeeeeE--------R. . . . . . . . . . . . . movq (%r12), %rdx [0,17] . D=====eeeeeeeeeER . . . . . . . . . . . . mulxq 24(%rsi), %rdx, %r11 [0,18] . D============eER . . . . . . . . . . . . adcq %rdx, %rbx [0,19] . DeeeeeE--------R . . . . . . . . . . . . movq (%r12), %rdx [0,20] . D=====eeeeeeeeeER . . . . . . . . . . . . mulxq 32(%rsi), %rdx, %r10 [0,21] . .D============eER . . . . . . . . . . . . adcq %rdx, %r11 [0,22] . .DeeeeeE--------R . . . . . . . . . . . . movq (%r12), %rdx [0,23] . .D=====eeeeeeeeeER . . . . . . . . . . . . mulxq 40(%rsi), %rdx, %r9 [0,24] . . D============eER . . . . . . . . . . . . adcq %rdx, %r10 [0,25] . . DeeeeeE--------R . . . . . . . . . . . . movq (%r12), %rdx [0,26] . . D=====eeeeeeeeeER . . . . . . . . . . . . mulxq 48(%rsi), %rdx, %r8 [0,27] . . D============eER . . . . . . . . . . . . adcq %rdx, %r9 [0,28] . . DeeeeeE--------R . . . . . . . . . . . . movq (%r12), %rdx [0,29] . . D=====eeeeeeeeeER. . . . . . . . . . . . mulxq 56(%rsi), %rdx, %rdi [0,30] . . D============eER. . . . . . . . . . . . adcq %rdx, %r8 [0,31] . . D=============eER . . . . . . . . . . . adcq $0, %rdi [0,32] . . D---------------R . . . . . . . . . . . xorl %r13d, %r13d [0,33] . . DeeeeeE---------R . . . . . . . . . . . movq 8(%r12), %rdx [0,34] . . D====eeeeeeeeeER . . . . . . . . . . . mulxq (%rsi), %r15, %r14 [0,35] . . D=======eE-----R . . . . . . . . . . . adoxq %r15, %rcx [0,36] . . D=============eER . . . . . . . . . . . adcxq %r14, %rax [0,37] . . .D=======eE-----R . . . . . . . . . . . movq %rcx, -64(%rbp) [0,38] . . .D====eeeeeeeeeER . . . . . . . . . . . mulxq 8(%rsi), %r14, %rcx [0,39] . . .D=============eER . . . . . . . . . . . adoxq %r14, %rax [0,40] . . . D=============eER . . . . . . . . . . . adcxq %rcx, %rbx [0,41] . . . D====eeeeeeeeeE-R . . . . . . . . . . . mulxq 16(%rsi), %r14, %rcx [0,42] . . . D==============eER. . . . . . . . . . . adoxq %r14, %rbx [0,43] . . . D==============eER . . . . . . . . . . adcxq %rcx, %r11 [0,44] . . . D====eeeeeeeeeE--R . . . . . . . . . . mulxq 24(%rsi), %r14, %rcx [0,45] . . . D===============eER . . . . . . . . . . adoxq %r14, %r11 [0,46] . . . D===============eER . . . . . . . . . . adcxq %rcx, %r10 [0,47] . . . D====eeeeeeeeeE---R . . . . . . . . . . mulxq 32(%rsi), %r14, %rcx [0,48] . . . D================eER . . . . . . . . . . adoxq %r14, %r10 [0,49] . . . D================eER. . . . . . . . . . adcxq %rcx, %r9 [0,50] . . . D====eeeeeeeeeE----R. . . . . . . . . . mulxq 40(%rsi), %r14, %rcx [0,51] . . . D=================eER . . . . . . . . . adoxq %r14, %r9 [0,52] . . . .D=================eER . . . . . . . . . adcxq %rcx, %r8 [0,53] . . . .D====eeeeeeeeeE-----R . . . . . . . . . mulxq 48(%rsi), %r14, %rcx [0,54] . . . .D==================eER . . . . . . . . . adoxq %r14, %r8 [0,55] . . . . D==================eER . . . . . . . . . adcxq %rcx, %rdi [0,56] . . . . D====eeeeeeeeeE------R . . . . . . . . . mulxq 56(%rsi), %rdx, %rcx [0,57] . . . . D===================eER. . . . . . . . . adoxq %rdx, %rdi [0,58] . . . . D===================eER . . . . . . . . adcxq %r13, %rcx [0,59] . . . . DeeeeeE---------------R . . . . . . . . movq 16(%r12), %rdx [0,60] . . . . D====================eER . . . . . . . . adoxq %r13, %rcx [0,61] . . . . D====eeeeeeeeeE-------R . . . . . . . . mulxq (%rsi), %r15, %r14 [0,62] . . . . D---------------------R . . . . . . . . xorl %r13d, %r13d [0,63] . . . . D=======eE------------R . . . . . . . . adoxq %r15, %rax [0,64] . . . . D============eE------R . . . . . . . . adcxq %r14, %rbx [0,65] . . . . D=======eE-----------R . . . . . . . . movq %rax, -72(%rbp) [0,66] . . . . D====eeeeeeeeeE------R . . . . . . . . mulxq 8(%rsi), %r14, %rax [0,67] . . . . .D============eE-----R . . . . . . . . adoxq %r14, %rbx [0,68] . . . . .D=============eE----R . . . . . . . . adcxq %rax, %r11 [0,69] . . . . .D====eeeeeeeeeE-----R . . . . . . . . mulxq 16(%rsi), %r14, %rax [0,70] . . . . . D=============eE---R . . . . . . . . adoxq %r14, %r11 [0,71] . . . . . D==============eE--R . . . . . . . . adcxq %rax, %r10 [0,72] . . . . . D====eeeeeeeeeE----R . . . . . . . . mulxq 24(%rsi), %r14, %rax [0,73] . . . . . D==============eE-R . . . . . . . . adoxq %r14, %r10 [0,74] . . . . . D===============eER . . . . . . . . adcxq %rax, %r9 [0,75] . . . . . D====eeeeeeeeeE---R . . . . . . . . mulxq 32(%rsi), %r14, %rax [0,76] . . . . . D===============eER . . . . . . . . adoxq %r14, %r9 [0,77] . . . . . D================eER . . . . . . . . adcxq %rax, %r8 [0,78] . . . . . D====eeeeeeeeeE----R . . . . . . . . mulxq 40(%rsi), %r14, %rax [0,79] . . . . . D================eER. . . . . . . . adoxq %r14, %r8 [0,80] . . . . . D=================eER . . . . . . . adcxq %rax, %rdi [0,81] . . . . . D====eeeeeeeeeE-----R . . . . . . . mulxq 48(%rsi), %r14, %rax [0,82] . . . . . .D=================eER . . . . . . . adoxq %r14, %rdi [0,83] . . . . . .D==================eER . . . . . . . adcxq %rax, %rcx [0,84] . . . . . .D====eeeeeeeeeE------R . . . . . . . mulxq 56(%rsi), %rdx, %rax [0,85] . . . . . . D==================eER . . . . . . . adoxq %rdx, %rcx [0,86] . . . . . . D===================eER. . . . . . . adcxq %r13, %rax [0,87] . . . . . . D====================eER . . . . . . adoxq %r13, %rax [0,88] . . . . . . D----------------------R . . . . . . xorl %r13d, %r13d [0,89] . . . . . . DeeeeeE----------------R . . . . . . movq 24(%r12), %rdx [0,90] . . . . . . D====eeeeeeeeeE-------R . . . . . . mulxq (%rsi), %r15, %r14 [0,91] . . . . . . D===========eE--------R . . . . . . adoxq %r15, %rbx [0,92] . . . . . . D=============eE------R . . . . . . adcxq %r14, %r11 [0,93] . . . . . . D===========eE-------R . . . . . . movq %rbx, -80(%rbp) [0,94] . . . . . . D=============eE-----R . . . . . . movq %r11, %r15 [0,95] . . . . . . D====eeeeeeeeeE------R . . . . . . mulxq 8(%rsi), %r14, %rbx [0,96] . . . . . . D=============eE----R . . . . . . adoxq %r14, %r15 [0,97] . . . . . . D==============eE---R . . . . . . adcxq %rbx, %r10 [0,98] . . . . . . D====eeeeeeeeeE-----R . . . . . . mulxq 16(%rsi), %rbx, %r11 [0,99] . . . . . . .D==============eE--R . . . . . . adoxq %rbx, %r10 [0,100] . . . . . . .D===============eE-R . . . . . . adcxq %r11, %r9 [0,101] . . . . . . .D====eeeeeeeeeE----R . . . . . . mulxq 24(%rsi), %rbx, %r11 [0,102] . . . . . . . D===============eER . . . . . . adoxq %rbx, %r9 [0,103] . . . . . . . D================eER . . . . . . adcxq %r11, %r8 [0,104] . . . . . . . D====eeeeeeeeeE----R . . . . . . mulxq 32(%rsi), %rbx, %r11 [0,105] . . . . . . . D================eER . . . . . . adoxq %rbx, %r8 [0,106] . . . . . . . D=================eER . . . . . . adcxq %r11, %rdi [0,107] . . . . . . . D====eeeeeeeeeE-----R . . . . . . mulxq 40(%rsi), %rbx, %r11 [0,108] . . . . . . . D=================eER. . . . . . adoxq %rbx, %rdi [0,109] . . . . . . . D==================eER . . . . . adcxq %r11, %rcx [0,110] . . . . . . . D====eeeeeeeeeE------R . . . . . mulxq 48(%rsi), %rbx, %r11 [0,111] . . . . . . . D==================eER . . . . . adoxq %rbx, %rcx [0,112] . . . . . . . D===================eER . . . . . adcxq %r11, %rax [0,113] . . . . . . . D====eeeeeeeeeE-------R . . . . . mulxq 56(%rsi), %rdx, %r11 [0,114] . . . . . . . .D===================eER . . . . . adoxq %rdx, %rax [0,115] . . . . . . . .D====================eER. . . . . adcxq %r13, %r11 [0,116] . . . . . . . .DeeeeeE----------------R. . . . . movq 32(%r12), %rdx [0,117] . . . . . . . .D=====================eER . . . . adoxq %r13, %r11 [0,118] . . . . . . . .D=====E-----------------R . . . . xorl %ebx, %ebx [0,119] . . . . . . . . D====eeeeeeeeeE--------R . . . . mulxq (%rsi), %r14, %r13 [0,120] . . . . . . . . D===========eE---------R . . . . adoxq %r14, %r15 [0,121] . . . . . . . . D=============eE-------R . . . . adcxq %r13, %r10 [0,122] . . . . . . . . D===========eE--------R . . . . movq %r15, -88(%rbp) [0,123] . . . . . . . . D====eeeeeeeeeE-------R . . . . mulxq 8(%rsi), %r14, %r13 [0,124] . . . . . . . . D=============eE------R . . . . movq %r10, %r15 [0,125] . . . . . . . . D============eE------R . . . . adcxq %r13, %r9 [0,126] . . . . . . . . D=============eE-----R . . . . adoxq %r14, %r15 [0,127] . . . . . . . . D====eeeeeeeeeE------R . . . . mulxq 16(%rsi), %r13, %r10 [0,128] . . . . . . . . D=============eE----R . . . . adoxq %r13, %r9 [0,129] . . . . . . . . D==============eE---R . . . . adcxq %r10, %r8 [0,130] . . . . . . . . D====eeeeeeeeeE-----R . . . . mulxq 24(%rsi), %r13, %r10 [0,131] . . . . . . . . .D==============eE--R . . . . adcxq %r10, %rdi [0,132] . . . . . . . . .D===============eE-R . . . . adoxq %r13, %r8 [0,133] . . . . . . . . .D====eeeeeeeeeE----R . . . . mulxq 32(%rsi), %r13, %r10 [0,134] . . . . . . . . . D===============eER . . . . adoxq %r13, %rdi [0,135] . . . . . . . . . D================eER . . . . adcxq %r10, %rcx [0,136] . . . . . . . . . D====eeeeeeeeeE----R . . . . mulxq 40(%rsi), %r13, %r10 [0,137] . . . . . . . . . D================eER . . . . adoxq %r13, %rcx [0,138] . . . . . . . . . D=================eER . . . . adcxq %r10, %rax [0,139] . . . . . . . . . D====eeeeeeeeeE-----R . . . . mulxq 48(%rsi), %r13, %r10 [0,140] . . . . . . . . . D=================eER. . . . adoxq %r13, %rax [0,141] . . . . . . . . . D==================eER . . . adcxq %r10, %r11 [0,142] . . . . . . . . . D====eeeeeeeeeE------R . . . mulxq 56(%rsi), %rdx, %r10 [0,143] . . . . . . . . . D==================eER . . . adoxq %rdx, %r11 [0,144] . . . . . . . . . D===================eER . . . adcxq %rbx, %r10 [0,145] . . . . . . . . . DeeeeeE---------------R . . . movq 40(%r12), %rdx [0,146] . . . . . . . . . D====================eER . . . adoxq %rbx, %r10 [0,147] . . . . . . . . . .D====eeeeeeeeeE-------R . . . mulxq (%rsi), %r14, %r13 [0,148] . . . . . . . . . .D---------------------R . . . xorl %ebx, %ebx [0,149] . . . . . . . . . .D============eE-------R . . . adoxq %r14, %r15 [0,150] . . . . . . . . . . D============eE------R . . . movq %r15, -96(%rbp) [0,151] . . . . . . . . . . D============eE------R . . . adcxq %r13, %r9 [0,152] . . . . . . . . . . D=====eeeeeeeeeE-----R . . . mulxq 8(%rsi), %r14, %r13 [0,153] . . . . . . . . . . D============eE-----R . . . movq %r9, %r15 [0,154] . . . . . . . . . . D=============eE----R . . . adoxq %r14, %r15 [0,155] . . . . . . . . . . D==============eE---R . . . adcxq %r13, %r8 [0,156] . . . . . . . . . . D====eeeeeeeeeE----R . . . mulxq 16(%rsi), %r13, %r9 [0,157] . . . . . . . . . . D==============eE--R . . . adoxq %r13, %r8 [0,158] . . . . . . . . . . D===============eE-R . . . adcxq %r9, %rdi [0,159] . . . . . . . . . . D====eeeeeeeeeE---R . . . mulxq 24(%rsi), %r13, %r9 [0,160] . . . . . . . . . . D===============eER . . . adoxq %r13, %rdi [0,161] . . . . . . . . . . D================eER. . . adcxq %r9, %rcx [0,162] . . . . . . . . . . .D====eeeeeeeeeE---R. . . mulxq 32(%rsi), %r13, %r9 [0,163] . . . . . . . . . . .D================eER . . adoxq %r13, %rcx [0,164] . . . . . . . . . . .D=================eER . . adcxq %r9, %rax [0,165] . . . . . . . . . . . D====eeeeeeeeeE----R . . mulxq 40(%rsi), %r13, %r9 [0,166] . . . . . . . . . . . D=================eER . . adoxq %r13, %rax [0,167] . . . . . . . . . . . D==================eER . . adcxq %r9, %r11 [0,168] . . . . . . . . . . . D====eeeeeeeeeE-----R . . mulxq 48(%rsi), %r13, %r9 [0,169] . . . . . . . . . . . D==================eER. . adoxq %r13, %r11 [0,170] . . . . . . . . . . . D===================eER . adcxq %r9, %r10 [0,171] . . . . . . . . . . . D====eeeeeeeeeE------R . mulxq 56(%rsi), %rdx, %r9 [0,172] . . . . . . . . . . . D===================eER . adoxq %rdx, %r10 [0,173] . . . . . . . . . . . D====================eER . adcxq %rbx, %r9 [0,174] . . . . . . . . . . . D====================eER. adoxq %rbx, %r9 [0,175] . . . . . . . . . . . D----------------------R. xorl %ebx, %ebx [0,176] . . . . . . . . . . . DeeeeeE----------------R. movq 48(%r12), %rdx [0,177] . . . . . . . . . . . .D=====eeeeeeeeeE------R. mulxq (%rsi), %r14, %r13 [0,178] . . . . . . . . . . . .D==========eE---------R. adoxq %r14, %r15 [0,179] . . . . . . . . . . . .D==============eE-----R. adcxq %r13, %r8 [0,180] . . . . . . . . . . . . D==========eE--------R. movq %r15, -104(%rbp) [0,181] . . . . . . . . . . . . D=====eeeeeeeeeE-----R. mulxq 8(%rsi), %r14, %r13 [0,182] . . . . . . . . . . . . D==============eE----R. movq %r8, %r15 [0,183] . . . . . . . . . . . . D==============eE---R. adcxq %r13, %rdi [0,184] . . . . . . . . . . . . D===============eE--R. adoxq %r14, %r15 [0,185] . . . . . . . . . . . . D=====eeeeeeeeeE----R. mulxq 16(%rsi), %r13, %r8 [0,186] . . . . . . . . . . . . D===============eE-R. adoxq %r13, %rdi [0,187] . . . . . . . . . . . . D================eER. adcxq %r8, %rcx [0,188] . . . . . . . . . . . . D=====eeeeeeeeeE---R. mulxq 24(%rsi), %r13, %r8 [0,189] . . . . . . . . . . . . D================eER adoxq %r13, %rcx