1116680a4aac90f2aa7413d9095a592090648e557Ben MurdochOPTION DOTNAME 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles).text$ SEGMENT ALIGN(256) 'CODE' 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 4116680a4aac90f2aa7413d9095a592090648e557Ben MurdochEXTERN OPENSSL_ia32cap_P:NEAR 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 6116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC bn_mul_mont_gather5 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 8116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 64 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbn_mul_mont_gather5 PROC PUBLIC 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[8+rsp],rdi ;WIN64 prologue 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[16+rsp],rsi 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rsp 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_begin_bn_mul_mont_gather5:: 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,rcx 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,rdx 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdx,r8 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rcx,r9 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r8,QWORD PTR[40+rsp] 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r9,QWORD PTR[48+rsp] 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch test r9d,7 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz $L$mul_enter 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$mul4x_enter 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 26116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$mul_enter:: 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r9d,r9d 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rsp 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10d,DWORD PTR[56+rsp] 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push rbx 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push rbp 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r12 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r13 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r14 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r15 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[((-40))+rsp] 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[rsp],xmm6 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[16+rsp],xmm7 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r11,QWORD PTR[2+r9] 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg r11 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[r11*8+rsp] 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch and rsp,-1024 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[8+r9*8+rsp],rax 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$mul_body:: 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r12,rdx 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,r10 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r10,3 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch and r11,7 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch not r10 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rax,QWORD PTR[$L$magic_masks] 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch and r10,3 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r12,QWORD PTR[96+r11*8+r12] 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm4,QWORD PTR[r10*8+rax] 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm5,QWORD PTR[8+r10*8+rax] 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm6,QWORD PTR[16+r10*8+rax] 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm7,QWORD PTR[24+r10*8+rax] 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 6003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) movq xmm0,QWORD PTR[(((-96)))+r12] 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm1,QWORD PTR[((-32))+r12] 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm0,xmm4 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm2,QWORD PTR[32+r12] 64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm1,xmm5 65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm3,QWORD PTR[96+r12] 66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm2,xmm6 67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm0,xmm1 68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm3,xmm7 69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm0,xmm2 70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r12,QWORD PTR[256+r12] 71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm0,xmm3 72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 73116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,72,15,126,195 74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 75116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r8,QWORD PTR[r8] 76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[rsi] 77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor r14,r14 79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor r15,r15 80116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 8103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) movq xmm0,QWORD PTR[(((-96)))+r12] 82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm1,QWORD PTR[((-32))+r12] 83116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm0,xmm4 84116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm2,QWORD PTR[32+r12] 85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm1,xmm5 86116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 87116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbp,r8 88116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rax 90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[rcx] 91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 92116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm3,QWORD PTR[96+r12] 93116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm2,xmm6 94116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm0,xmm1 95116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm3,xmm7 96116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 97116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch imul rbp,r10 98116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 99116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm0,xmm2 101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r12,QWORD PTR[256+r12] 102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm0,xmm3 103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[8+rsi] 107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r15,QWORD PTR[1+r15] 111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$1st_enter 112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 113116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$1st:: 115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,rax 116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[r15*8+rsi] 117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r11 119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,r10 120116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 121116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-16))+r15*8+rsp],r13 122116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$1st_enter:: 125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 126116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,rax 127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[r15*8+rcx] 128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r15,QWORD PTR[1+r15] 130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rdx 131116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp r15,r9 134116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jne $L$1st 135116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 136116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,72,15,126,195 137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 138116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,rax 139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[rsi] 140116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r11 142116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 143116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-16))+r15*8+rsp],r13 144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 145116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,r10 146116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor rdx,rdx 148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r11 149116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 150116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-8))+r9*8+rsp],r13 151116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[r9*8+rsp],rdx 152116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 153116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r14,QWORD PTR[1+r14] 154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$outer 155116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$outer:: 157116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor r15,r15 158116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbp,r8 159116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,QWORD PTR[rsp] 160116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 16103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) movq xmm0,QWORD PTR[(((-96)))+r12] 162116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm1,QWORD PTR[((-32))+r12] 163116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm0,xmm4 164116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm2,QWORD PTR[32+r12] 165116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm1,xmm5 166116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 167116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 168116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 169116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[rcx] 170116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 171116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 172116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm3,QWORD PTR[96+r12] 173116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm2,xmm6 174116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm0,xmm1 175116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm3,xmm7 176116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 177116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch imul rbp,r10 178116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 179116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 180116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm0,xmm2 181116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r12,QWORD PTR[256+r12] 182116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm0,xmm3 183116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 184116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 185116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 186116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[8+rsi] 187116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 188116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,QWORD PTR[8+rsp] 189116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 190116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 191116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r15,QWORD PTR[1+r15] 192116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$inner_enter 193116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 194116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 195116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$inner:: 196116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,rax 197116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[r15*8+rsi] 198116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 199116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r10 200116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,QWORD PTR[r15*8+rsp] 201116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 202116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-16))+r15*8+rsp],r13 203116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 204116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 205116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$inner_enter:: 206116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 207116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,rax 208116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[r15*8+rcx] 209116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 210116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,r11 211116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 212116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r11,0 213116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r15,QWORD PTR[1+r15] 214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 215116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 216116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp r15,r9 217116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jne $L$inner 218116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 219116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,72,15,126,195 220116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 221116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,rax 222116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[rsi] 223116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 224116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r10 225116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,QWORD PTR[r15*8+rsp] 226116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 227116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-16))+r15*8+rsp],r13 228116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 229116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 230116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor rdx,rdx 231116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r11 232116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 233116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r10 234116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 235116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-8))+r9*8+rsp],r13 236116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[r9*8+rsp],rdx 237116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 238116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r14,QWORD PTR[1+r14] 239116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp r14,r9 240116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jb $L$outer 241116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 242116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor r14,r14 243116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[rsp] 244116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsi,QWORD PTR[rsp] 245116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r15,r9 246116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$sub 247116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 248116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$sub:: sbb rax,QWORD PTR[r14*8+rcx] 249116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[r14*8+rdi],rax 250116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[8+r14*8+rsi] 251116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r14,QWORD PTR[1+r14] 252116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch dec r15 253116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz $L$sub 254116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 255116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sbb rax,0 256116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor r14,r14 257116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r15,r9 258116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 259116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$copy:: 260116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,QWORD PTR[r14*8+rsp] 261116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rcx,QWORD PTR[r14*8+rdi] 262116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor rsi,rcx 263116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch and rsi,rax 264116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor rsi,rcx 265116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[r14*8+rsp],r14 266116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[r14*8+rdi],rsi 267116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r14,QWORD PTR[1+r14] 268116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub r15,1 269116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz $L$copy 270116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 271116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,QWORD PTR[8+r9*8+rsp] 272116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,1 273116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm6,XMMWORD PTR[((-88))+rsi] 274116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm7,XMMWORD PTR[((-72))+rsi] 275116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r15,QWORD PTR[((-48))+rsi] 276116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r14,QWORD PTR[((-40))+rsi] 277116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,QWORD PTR[((-32))+rsi] 278116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r12,QWORD PTR[((-24))+rsi] 279116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbp,QWORD PTR[((-16))+rsi] 280116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[((-8))+rsi] 281116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[rsi] 282116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$mul_epilogue:: 283116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue 284116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,QWORD PTR[16+rsp] 285116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 286116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_end_bn_mul_mont_gather5:: 287116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbn_mul_mont_gather5 ENDP 288116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 289116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 290116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbn_mul4x_mont_gather5 PROC PRIVATE 291116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[8+rsp],rdi ;WIN64 prologue 292116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[16+rsp],rsi 293116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rsp 294116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_begin_bn_mul4x_mont_gather5:: 295116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,rcx 296116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,rdx 297116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdx,r8 298116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rcx,r9 299116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r8,QWORD PTR[40+rsp] 300116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r9,QWORD PTR[48+rsp] 301116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 302116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 303116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$mul4x_enter:: 304116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 067h 305116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rsp 306116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push rbx 307116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push rbp 308116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r12 309116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r13 310116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r14 311116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r15 312116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[((-40))+rsp] 313116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[rsp],xmm6 314116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[16+rsp],xmm7 315116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 067h 316116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10d,r9d 317116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shl r9d,3 318116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shl r10d,3+2 319116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg r9 320116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 321116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 322116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 323116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 324116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 325116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 326116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 327116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 328116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r11,QWORD PTR[((-64))+r9*2+rsp] 329116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub r11,rsi 330116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch and r11,4095 331116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp r10,r11 332116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jb $L$mul4xsp_alt 333116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub rsp,r11 334116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[((-64))+r9*2+rsp] 335116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$mul4xsp_done 336116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 337116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 338116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$mul4xsp_alt:: 339116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r10,QWORD PTR[((4096-64))+r9*2] 340116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[((-64))+r9*2+rsp] 341116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub r11,r10 342116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,0 343116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmovc r11,r10 344116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub rsp,r11 345116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$mul4xsp_done:: 346116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch and rsp,-64 347116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg r9 348116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 349116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[40+rsp],rax 350116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$mul4x_body:: 351116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 352116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call mul4x_internal 353116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 354116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,QWORD PTR[40+rsp] 355116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,1 356116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm6,XMMWORD PTR[((-88))+rsi] 357116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm7,XMMWORD PTR[((-72))+rsi] 358116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r15,QWORD PTR[((-48))+rsi] 359116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r14,QWORD PTR[((-40))+rsi] 360116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,QWORD PTR[((-32))+rsi] 361116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r12,QWORD PTR[((-24))+rsi] 362116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbp,QWORD PTR[((-16))+rsi] 363116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[((-8))+rsi] 364116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[rsi] 365116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$mul4x_epilogue:: 366116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue 367116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,QWORD PTR[16+rsp] 368116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 369116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_end_bn_mul4x_mont_gather5:: 370116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbn_mul4x_mont_gather5 ENDP 371116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 372116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 373116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 374116680a4aac90f2aa7413d9095a592090648e557Ben Murdochmul4x_internal PROC PRIVATE 375116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shl r9,5 376116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10d,DWORD PTR[56+rax] 377116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r13,QWORD PTR[256+r9*1+rdx] 378116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r9,5 379116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,r10 380116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r10,3 381116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch and r11,7 382116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch not r10 383116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rax,QWORD PTR[$L$magic_masks] 384116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch and r10,3 385116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r12,QWORD PTR[96+r11*8+rdx] 386116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm4,QWORD PTR[r10*8+rax] 387116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm5,QWORD PTR[8+r10*8+rax] 388116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,7 389116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm6,QWORD PTR[16+r10*8+rax] 390116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm7,QWORD PTR[24+r10*8+rax] 391116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch and r11,7 392116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 39303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) movq xmm0,QWORD PTR[(((-96)))+r12] 394116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r14,QWORD PTR[256+r12] 395116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm1,QWORD PTR[((-32))+r12] 396116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm0,xmm4 397116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm2,QWORD PTR[32+r12] 398116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm1,xmm5 399116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm3,QWORD PTR[96+r12] 400116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm2,xmm6 401116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 067h 402116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm0,xmm1 403116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm1,QWORD PTR[((-96))+r14] 404116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 067h 405116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm3,xmm7 406116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 067h 407116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm0,xmm2 408116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm2,QWORD PTR[((-32))+r14] 409116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 067h 410116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm1,xmm4 411116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 067h 412116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm0,xmm3 413116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm3,QWORD PTR[32+r14] 414116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 415116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,72,15,126,195 416116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm0,QWORD PTR[96+r14] 417116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((16+8))+rsp],r13 418116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((56+8))+rsp],rdi 419116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 420116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r8,QWORD PTR[r8] 421116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[rsi] 422116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsi,QWORD PTR[r9*1+rsi] 423116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg r9 424116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 425116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbp,r8 426116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 427116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rax 428116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[rcx] 429116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 430116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm2,xmm5 431116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm3,xmm6 432116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm1,xmm2 433116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 434116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch imul rbp,r10 435116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 436116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 437116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 438116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 439116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 440116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 441116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 442116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r14,QWORD PTR[((64+8))+r11*8+rsp] 443116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 444116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 445116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm0,xmm7 446116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm1,xmm3 447116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r12,QWORD PTR[512+r12] 448116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm0,xmm1 449116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 450116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 451116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 452116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[8+r9*1+rsi] 453116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 454116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,rdx 455116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 456116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 457116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,rax 458116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[16+rcx] 459116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 460116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rdx 461116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 462116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 463116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdi,rax 464116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[16+r9*1+rsi] 465116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 466116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdi,r11 467116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r15,QWORD PTR[32+r9] 468116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rcx,QWORD PTR[64+rcx] 469116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 470116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[r14],rdi 471116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 472116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$1st4x 473116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 474116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 475116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$1st4x:: 476116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 477116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 478116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[((-32))+rcx] 479116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r14,QWORD PTR[32+r14] 480116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 481116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 482116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 483116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 484116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,rax 485116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[((-8))+r15*1+rsi] 486116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 487116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r10 488116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 489116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-24))+r14],r13 490116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,rdx 491116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 492116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 493116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,rax 494116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[((-16))+rcx] 495116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 496116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rdx 497116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 498116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 499116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdi,rax 500116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[r15*1+rsi] 501116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 502116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdi,r11 503116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 504116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-16))+r14],rdi 505116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 506116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 507116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 508116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 509116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[rcx] 510116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 511116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 512116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 513116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 514116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,rax 515116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[8+r15*1+rsi] 516116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 517116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r10 518116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 519116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-8))+r14],r13 520116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,rdx 521116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 522116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 523116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,rax 524116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[16+rcx] 525116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 526116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rdx 527116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 528116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 529116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdi,rax 530116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[16+r15*1+rsi] 531116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 532116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdi,r11 533116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rcx,QWORD PTR[64+rcx] 534116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 535116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[r14],rdi 536116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 537116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 538116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r15,32 539116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz $L$1st4x 540116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 541116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 542116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 543116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[((-32))+rcx] 544116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r14,QWORD PTR[32+r14] 545116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 546116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 547116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 548116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 549116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,rax 550116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[((-8))+rsi] 551116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 552116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r10 553116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 554116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-24))+r14],r13 555116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,rdx 556116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 557116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 558116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,rax 559116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[((-16))+rcx] 560116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 561116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rdx 562116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 563116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 564116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdi,rax 565116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[r9*1+rsi] 566116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 567116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdi,r11 568116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 569116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-16))+r14],rdi 570116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 571116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 572116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,72,15,126,195 573116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rcx,QWORD PTR[r9*2+rcx] 574116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 575116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor rdi,rdi 576116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r10 577116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdi,0 578116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-8))+r14],r13 579116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 580116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$outer4x 581116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 582116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 583116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$outer4x:: 584116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,QWORD PTR[r9*1+r14] 585116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbp,r8 586116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 587116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 588116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[rcx] 589116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 590116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 59103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) movq xmm0,QWORD PTR[(((-96)))+r12] 592116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm1,QWORD PTR[((-32))+r12] 593116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm0,xmm4 594116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm2,QWORD PTR[32+r12] 595116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm1,xmm5 596116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm3,QWORD PTR[96+r12] 597116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 598116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch imul rbp,r10 599116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 067h 600116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 601116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[r14],rdi 602116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 603116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm2,xmm6 604116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm0,xmm1 605116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm3,xmm7 606116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm0,xmm2 607116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r14,QWORD PTR[r9*1+r14] 608116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r12,QWORD PTR[256+r12] 609116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm0,xmm3 610116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 611116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 612116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 613116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[8+r9*1+rsi] 614116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 615116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,rdx 616116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 617116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 618116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,rax 619116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[16+rcx] 620116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 621116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,QWORD PTR[8+r14] 622116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 623116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rdx 624116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 625116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 626116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdi,rax 627116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[16+r9*1+rsi] 628116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 629116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdi,r11 630116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r15,QWORD PTR[32+r9] 631116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rcx,QWORD PTR[64+rcx] 632116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 633116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 634116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$inner4x 635116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 636116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 637116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$inner4x:: 638116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 639116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 640116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[((-32))+rcx] 641116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 642116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,QWORD PTR[16+r14] 643116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r14,QWORD PTR[32+r14] 644116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 645116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 646116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 647116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 648116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,rax 649116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[((-8))+r15*1+rsi] 650116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 651116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r10 652116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 653116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-32))+r14],rdi 654116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,rdx 655116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 656116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 657116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,rax 658116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[((-16))+rcx] 659116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 660116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,QWORD PTR[((-8))+r14] 661116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 662116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rdx 663116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 664116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 665116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdi,rax 666116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[r15*1+rsi] 667116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 668116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdi,r11 669116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 670116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-24))+r14],r13 671116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 672116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 673116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 674116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 675116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[rcx] 676116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 677116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,QWORD PTR[r14] 678116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 679116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 680116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 681116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 682116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,rax 683116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[8+r15*1+rsi] 684116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 685116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r10 686116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 687116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-16))+r14],rdi 688116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,rdx 689116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 690116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 691116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,rax 692116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[16+rcx] 693116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 694116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,QWORD PTR[8+r14] 695116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 696116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rdx 697116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 698116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 699116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdi,rax 700116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[16+r15*1+rsi] 701116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 702116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdi,r11 703116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rcx,QWORD PTR[64+rcx] 704116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 705116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-8))+r14],r13 706116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 707116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 708116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r15,32 709116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz $L$inner4x 710116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 711116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 712116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 713116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[((-32))+rcx] 714116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 715116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,QWORD PTR[16+r14] 716116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r14,QWORD PTR[32+r14] 717116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 718116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 719116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 720116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 721116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,rax 722116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[((-8))+rsi] 723116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 724116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r10 725116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 726116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-32))+r14],rdi 727116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,rdx 728116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 729116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 730116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,rax 731116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbp 732116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbp,QWORD PTR[((-16))+rcx] 733116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 734116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,QWORD PTR[((-8))+r14] 735116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 736116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rdx 737116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 738116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbp 739116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdi,rax 740116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[r9*1+rsi] 741116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 742116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdi,r11 743116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 744116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-24))+r14],r13 745116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 746116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 747116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,72,15,126,195 748116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-16))+r14],rdi 749116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rcx,QWORD PTR[r9*2+rcx] 750116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 751116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor rdi,rdi 752116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r10 753116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdi,0 754116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,QWORD PTR[r14] 755116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdi,0 756116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-8))+r14],r13 757116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 758116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp r12,QWORD PTR[((16+8))+rsp] 759116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jb $L$outer4x 760116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub rbp,r13 761116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r15,r15 762116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch or rdi,r15 763116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor rdi,1 764116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rbx,QWORD PTR[r9*1+r14] 765116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rbp,QWORD PTR[rdi*8+rcx] 766116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rcx,r9 767116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sar rcx,3+2 768116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,QWORD PTR[((56+8))+rsp] 769116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$sqr4x_sub 770116680a4aac90f2aa7413d9095a592090648e557Ben Murdochmul4x_internal ENDP 771116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC bn_power5 772116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 773116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 774116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbn_power5 PROC PUBLIC 775116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[8+rsp],rdi ;WIN64 prologue 776116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[16+rsp],rsi 777116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rsp 778116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_begin_bn_power5:: 779116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,rcx 780116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,rdx 781116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdx,r8 782116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rcx,r9 783116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r8,QWORD PTR[40+rsp] 784116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r9,QWORD PTR[48+rsp] 785116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 786116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 787116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rsp 788116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push rbx 789116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push rbp 790116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r12 791116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r13 792116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r14 793116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r15 794116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[((-40))+rsp] 795116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[rsp],xmm6 796116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[16+rsp],xmm7 797116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10d,r9d 798116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shl r9d,3 799116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shl r10d,3+2 800116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg r9 801116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r8,QWORD PTR[r8] 802116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 803116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 804116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 805116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 806116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 807116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 808116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 809116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r11,QWORD PTR[((-64))+r9*2+rsp] 810116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub r11,rsi 811116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch and r11,4095 812116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp r10,r11 813116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jb $L$pwr_sp_alt 814116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub rsp,r11 815116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[((-64))+r9*2+rsp] 816116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$pwr_sp_done 817116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 818116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 819116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$pwr_sp_alt:: 820116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r10,QWORD PTR[((4096-64))+r9*2] 821116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[((-64))+r9*2+rsp] 822116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub r11,r10 823116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,0 824116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmovc r11,r10 825116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub rsp,r11 826116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$pwr_sp_done:: 827116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch and rsp,-64 828116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,r9 829116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg r9 830116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 831116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 832116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 833116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 834116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 835116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 836116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 837116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 838116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 839116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 840116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[32+rsp],r8 841116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[40+rsp],rax 842116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$power5_body:: 843116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,72,15,110,207 844116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,72,15,110,209 845116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,73,15,110,218 846116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,72,15,110,226 847116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 848116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __bn_sqr8x_internal 849116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __bn_sqr8x_internal 850116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __bn_sqr8x_internal 851116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __bn_sqr8x_internal 852116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __bn_sqr8x_internal 853116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 854116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,72,15,126,209 855116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,72,15,126,226 856116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,rsi 857116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[40+rsp] 858116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r8,QWORD PTR[32+rsp] 859116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 860116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call mul4x_internal 861116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 862116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,QWORD PTR[40+rsp] 863116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,1 864116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r15,QWORD PTR[((-48))+rsi] 865116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r14,QWORD PTR[((-40))+rsi] 866116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,QWORD PTR[((-32))+rsi] 867116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r12,QWORD PTR[((-24))+rsi] 868116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbp,QWORD PTR[((-16))+rsi] 869116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[((-8))+rsi] 870116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[rsi] 871116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$power5_epilogue:: 872116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue 873116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,QWORD PTR[16+rsp] 874116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 875116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_end_bn_power5:: 876116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbn_power5 ENDP 877116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 878116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC bn_sqr8x_internal 879116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 880116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 881116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 882116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbn_sqr8x_internal PROC PUBLIC 883116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch__bn_sqr8x_internal:: 884116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 885116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 886116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 887116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 888116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 889116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 890116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 891116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 892116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 893116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 894116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 895116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 896116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 897116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 898116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 899116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 900116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 901116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 902116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 903116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 904116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 905116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 906116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 907116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 908116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 909116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 910116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 911116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 912116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 913116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 914116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 915116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 916116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 917116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 918116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 919116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 920116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 921116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 922116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 923116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 924116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 925116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 926116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 927116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 928116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 929116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 930116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 931116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 932116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 933116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 934116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 935116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 936116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 937116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 938116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 939116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 940116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 941116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 942116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 943116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 944116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 945116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 946116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 947116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 948116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 949116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 950116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 951116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 952116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 953116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 954116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 955116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 956116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 957116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rbp,QWORD PTR[32+r10] 958116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsi,QWORD PTR[r9*1+rsi] 959116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 960116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rcx,r9 961116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 962116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 963116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r14,QWORD PTR[((-32))+rbp*1+rsi] 964116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdi,QWORD PTR[((48+8))+r9*2+rsp] 965116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[((-24))+rbp*1+rsi] 966116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdi,QWORD PTR[((-32))+rbp*1+rdi] 967116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[((-16))+rbp*1+rsi] 968116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r15,rax 969116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 970116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r14 971116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rax 972116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 973116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 974116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-24))+rbp*1+rdi],r10 975116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 976116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r14 977116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,rax 978116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 979116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 980116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-16))+rbp*1+rdi],r11 981116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rdx 982116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 983116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 984116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[((-8))+rbp*1+rsi] 985116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r15 986116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r12,rax 987116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 988116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 989116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 990116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rcx,QWORD PTR[rbp] 991116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r14 992116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 993116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 994116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 995116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r11,0 996116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,r12 997116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r11,0 998116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-8))+rcx*1+rdi],r10 999116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$sqr4x_1st 1000116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1001116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 1002116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$sqr4x_1st:: 1003116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[rcx*1+rsi] 1004116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r15 1005116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,rax 1006116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1007116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r12,rdx 1008116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r12,0 1009116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1010116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r14 1011116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,rax 1012116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1013116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[8+rcx*1+rsi] 1014116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rdx 1015116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r10,0 1016116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,r13 1017116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r10,0 1018116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1019116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1020116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r15 1021116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r12,rax 1022116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1023116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[rcx*1+rdi],r11 1024116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 1025116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r13,0 1026116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1027116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r14 1028116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 1029116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1030116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[16+rcx*1+rsi] 1031116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 1032116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r11,0 1033116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,r12 1034116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r11,0 1035116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1036116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r15 1037116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,rax 1038116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1039116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[8+rcx*1+rdi],r10 1040116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r12,rdx 1041116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r12,0 1042116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1043116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r14 1044116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,rax 1045116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1046116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[24+rcx*1+rsi] 1047116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rdx 1048116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r10,0 1049116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,r13 1050116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r10,0 1051116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1052116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1053116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r15 1054116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r12,rax 1055116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1056116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[16+rcx*1+rdi],r11 1057116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 1058116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r13,0 1059116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rcx,QWORD PTR[32+rcx] 1060116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1061116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r14 1062116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 1063116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1064116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 1065116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r11,0 1066116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,r12 1067116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r11,0 1068116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-8))+rcx*1+rdi],r10 1069116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1070116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp rcx,0 1071116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jne $L$sqr4x_1st 1072116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1073116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r15 1074116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,rax 1075116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rbp,QWORD PTR[16+rbp] 1076116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1077116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r11 1078116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1079116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1080116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[rdi],r13 1081116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r12,rdx 1082116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[8+rdi],rdx 1083116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$sqr4x_outer 1084116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1085116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 1086116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$sqr4x_outer:: 1087116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r14,QWORD PTR[((-32))+rbp*1+rsi] 1088116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdi,QWORD PTR[((48+8))+r9*2+rsp] 1089116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[((-24))+rbp*1+rsi] 1090116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdi,QWORD PTR[((-32))+rbp*1+rdi] 1091116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[((-16))+rbp*1+rsi] 1092116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r15,rax 1093116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1094116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r14 1095116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,QWORD PTR[((-24))+rbp*1+rdi] 1096116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 1097116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1098116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1099116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-24))+rbp*1+rdi],r10 1100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 1101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r14 1103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,rax 1104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,QWORD PTR[((-16))+rbp*1+rdi] 1107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rdx 1108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r10,0 1109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-16))+rbp*1+rdi],r11 1110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor r12,r12 1112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[((-8))+rbp*1+rsi] 1114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r15 1115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r12,rax 1116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r12,QWORD PTR[((-8))+rbp*1+rdi] 1119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 1120116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r13,0 1121116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1122116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r14 1123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 1124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1126116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,r12 1127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 1128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r11,0 1129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-8))+rbp*1+rdi],r10 1130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1131116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rcx,QWORD PTR[rbp] 1132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$sqr4x_inner 1133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1134116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 1135116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$sqr4x_inner:: 1136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[rcx*1+rsi] 1137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r15 1138116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,rax 1139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1140116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r12,rdx 1141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r12,0 1142116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,QWORD PTR[rcx*1+rdi] 1143116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r12,0 1144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1145116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 067h 1146116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r14 1147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,rax 1148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1149116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[8+rcx*1+rsi] 1150116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rdx 1151116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r10,0 1152116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,r13 1153116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r10,0 1154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1155116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r15 1156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r12,rax 1157116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[rcx*1+rdi],r11 1158116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1159116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 1160116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r13,0 1161116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r12,QWORD PTR[8+rcx*1+rdi] 1162116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rcx,QWORD PTR[16+rcx] 1163116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r13,0 1164116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1165116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r14 1166116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 1167116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1168116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1169116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,r12 1170116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 1171116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r11,0 1172116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-8))+rcx*1+rdi],r10 1173116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1174116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp rcx,0 1175116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jne $L$sqr4x_inner 1176116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1177116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 067h 1178116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r15 1179116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,rax 1180116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1181116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r11 1182116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1183116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1184116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[rdi],r13 1185116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r12,rdx 1186116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[8+rdi],rdx 1187116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1188116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rbp,16 1189116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz $L$sqr4x_outer 1190116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1191116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1192116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r14,QWORD PTR[((-32))+rsi] 1193116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdi,QWORD PTR[((48+8))+r9*2+rsp] 1194116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[((-24))+rsi] 1195116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdi,QWORD PTR[((-32))+rbp*1+rdi] 1196116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[((-16))+rsi] 1197116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r15,rax 1198116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1199116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r14 1200116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 1201116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1202116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 1203116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r11,0 1204116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1205116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r14 1206116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,rax 1207116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1208116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-24))+rdi],r10 1209116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rdx 1210116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r10,0 1211116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,r13 1212116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[((-8))+rsi] 1213116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r10,0 1214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1215116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r15 1216116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r12,rax 1217116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1218116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-16))+rdi],r11 1219116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 1220116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r13,0 1221116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1222116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r14 1223116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 1224116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rbx 1225116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 1226116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r11,0 1227116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,r12 1228116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r11,0 1229116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-8))+rdi],r10 1230116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1231116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul r15 1232116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,rax 1233116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[((-16))+rsi] 1234116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1235116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r11 1236116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1237116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1238116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[rdi],r13 1239116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r12,rdx 1240116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[8+rdi],rdx 1241116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1242116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 1243116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rbp,16 1244116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor r14,r14 1245116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub rbp,r9 1246116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor r15,r15 1247116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1248116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rax,r12 1249116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1250116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[8+rdi],rax 1251116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[16+rdi],rdx 1252116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[24+rdi],r15 1253116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1254116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[((-16))+rbp*1+rsi] 1255116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdi,QWORD PTR[((48+8))+rsp] 1256116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor r10,r10 1257116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,QWORD PTR[8+rdi] 1258116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1259116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r12,QWORD PTR[r10*2+r14] 1260116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r10,63 1261116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r13,QWORD PTR[r11*2+rcx] 1262116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r11,63 1263116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch or r13,r10 1264116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,QWORD PTR[16+rdi] 1265116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r14,r11 1266116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rax 1267116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg r15 1268116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,QWORD PTR[24+rdi] 1269116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r12,rax 1270116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[((-8))+rbp*1+rsi] 1271116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[rdi],r12 1272116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r13,rdx 1273116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1274116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rbx,QWORD PTR[r10*2+r14] 1275116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[8+rdi],r13 1276116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sbb r15,r15 1277116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r10,63 1278116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r8,QWORD PTR[r11*2+rcx] 1279116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r11,63 1280116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch or r8,r10 1281116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,QWORD PTR[32+rdi] 1282116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r14,r11 1283116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rax 1284116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg r15 1285116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,QWORD PTR[40+rdi] 1286116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rbx,rax 1287116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[rbp*1+rsi] 1288116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[16+rdi],rbx 1289116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r8,rdx 1290116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rbp,QWORD PTR[16+rbp] 1291116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[24+rdi],r8 1292116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sbb r15,r15 1293116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdi,QWORD PTR[64+rdi] 1294116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$sqr4x_shift_n_add 1295116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1296116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 1297116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$sqr4x_shift_n_add:: 1298116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r12,QWORD PTR[r10*2+r14] 1299116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r10,63 1300116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r13,QWORD PTR[r11*2+rcx] 1301116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r11,63 1302116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch or r13,r10 1303116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,QWORD PTR[((-16))+rdi] 1304116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r14,r11 1305116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rax 1306116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg r15 1307116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,QWORD PTR[((-8))+rdi] 1308116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r12,rax 1309116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[((-8))+rbp*1+rsi] 1310116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-32))+rdi],r12 1311116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r13,rdx 1312116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1313116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rbx,QWORD PTR[r10*2+r14] 1314116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-24))+rdi],r13 1315116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sbb r15,r15 1316116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r10,63 1317116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r8,QWORD PTR[r11*2+rcx] 1318116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r11,63 1319116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch or r8,r10 1320116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,QWORD PTR[rdi] 1321116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r14,r11 1322116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rax 1323116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg r15 1324116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,QWORD PTR[8+rdi] 1325116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rbx,rax 1326116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[rbp*1+rsi] 1327116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-16))+rdi],rbx 1328116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r8,rdx 1329116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1330116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r12,QWORD PTR[r10*2+r14] 1331116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-8))+rdi],r8 1332116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sbb r15,r15 1333116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r10,63 1334116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r13,QWORD PTR[r11*2+rcx] 1335116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r11,63 1336116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch or r13,r10 1337116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,QWORD PTR[16+rdi] 1338116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r14,r11 1339116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rax 1340116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg r15 1341116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,QWORD PTR[24+rdi] 1342116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r12,rax 1343116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[8+rbp*1+rsi] 1344116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[rdi],r12 1345116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r13,rdx 1346116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1347116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rbx,QWORD PTR[r10*2+r14] 1348116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[8+rdi],r13 1349116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sbb r15,r15 1350116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r10,63 1351116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r8,QWORD PTR[r11*2+rcx] 1352116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r11,63 1353116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch or r8,r10 1354116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,QWORD PTR[32+rdi] 1355116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r14,r11 1356116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rax 1357116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg r15 1358116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,QWORD PTR[40+rdi] 1359116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rbx,rax 1360116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[16+rbp*1+rsi] 1361116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[16+rdi],rbx 1362116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r8,rdx 1363116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[24+rdi],r8 1364116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sbb r15,r15 1365116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdi,QWORD PTR[64+rdi] 1366116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rbp,32 1367116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz $L$sqr4x_shift_n_add 1368116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1369116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r12,QWORD PTR[r10*2+r14] 1370116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 067h 1371116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r10,63 1372116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r13,QWORD PTR[r11*2+rcx] 1373116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r11,63 1374116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch or r13,r10 1375116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,QWORD PTR[((-16))+rdi] 1376116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r14,r11 1377116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rax 1378116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg r15 1379116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,QWORD PTR[((-8))+rdi] 1380116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r12,rax 1381116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[((-8))+rsi] 1382116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-32))+rdi],r12 1383116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r13,rdx 1384116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1385116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rbx,QWORD PTR[r10*2+r14] 1386116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-24))+rdi],r13 1387116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sbb r15,r15 1388116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r10,63 1389116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r8,QWORD PTR[r11*2+rcx] 1390116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r11,63 1391116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch or r8,r10 1392116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rax 1393116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg r15 1394116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rbx,rax 1395116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r8,rdx 1396116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-16))+rdi],rbx 1397116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((-8))+rdi],r8 1398116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,72,15,126,213 1399116680a4aac90f2aa7413d9095a592090648e557Ben Murdochsqr8x_reduction:: 1400116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor rax,rax 1401116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rcx,QWORD PTR[r9*2+rbp] 1402116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdx,QWORD PTR[((48+8))+r9*2+rsp] 1403116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((0+8))+rsp],rcx 1404116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdi,QWORD PTR[((48+8))+r9*1+rsp] 1405116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((8+8))+rsp],rdx 1406116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg r9 1407116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$8x_reduction_loop 1408116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1409116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 1410116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$8x_reduction_loop:: 1411116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdi,QWORD PTR[r9*1+rdi] 1412116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 066h 1413116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[rdi] 1414116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r9,QWORD PTR[8+rdi] 1415116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,QWORD PTR[16+rdi] 1416116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,QWORD PTR[24+rdi] 1417116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r12,QWORD PTR[32+rdi] 1418116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,QWORD PTR[40+rdi] 1419116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r14,QWORD PTR[48+rdi] 1420116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r15,QWORD PTR[56+rdi] 1421116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[rdx],rax 1422116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdi,QWORD PTR[64+rdi] 1423116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1424116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 067h 1425116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r8,rbx 1426116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch imul rbx,QWORD PTR[((32+8))+rsp] 1427116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[rbp] 1428116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov ecx,8 1429116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$8x_reduce 1430116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1431116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 1432116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$8x_reduce:: 1433116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 1434116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[16+rbp] 1435116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg r8 1436116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r8,rdx 1437116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r8,0 1438116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1439116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 1440116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r9,rax 1441116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[32+rbp] 1442116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1443116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r8,r9 1444116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[((48-8+8))+rcx*8+rsp],rbx 1445116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r9,rdx 1446116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r9,0 1447116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1448116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 1449116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 1450116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[48+rbp] 1451116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1452116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r9,r10 1453116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,QWORD PTR[((32+8))+rsp] 1454116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rdx 1455116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r10,0 1456116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1457116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 1458116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,rax 1459116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[64+rbp] 1460116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1461116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch imul rsi,r8 1462116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,r11 1463116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 1464116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r11,0 1465116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1466116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 1467116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r12,rax 1468116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[80+rbp] 1469116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1470116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,r12 1471116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r12,rdx 1472116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r12,0 1473116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1474116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 1475116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,rax 1476116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[96+rbp] 1477116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1478116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r12,r13 1479116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 1480116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r13,0 1481116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1482116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 1483116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r14,rax 1484116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[112+rbp] 1485116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1486116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r14 1487116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r14,rdx 1488116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r14,0 1489116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1490116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 1491116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,rsi 1492116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r15,rax 1493116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[rbp] 1494116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1495116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r14,r15 1496116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r15,rdx 1497116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r15,0 1498116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1499116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch dec ecx 1500116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz $L$8x_reduce 1501116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1502116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rbp,QWORD PTR[128+rbp] 1503116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor rax,rax 1504116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdx,QWORD PTR[((8+8))+rsp] 1505116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp rbp,QWORD PTR[((0+8))+rsp] 1506116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jae $L$8x_no_tail 1507116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1508116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 066h 1509116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r8,QWORD PTR[rdi] 1510116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r9,QWORD PTR[8+rdi] 1511116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r10,QWORD PTR[16+rdi] 1512116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r11,QWORD PTR[24+rdi] 1513116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r12,QWORD PTR[32+rdi] 1514116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r13,QWORD PTR[40+rdi] 1515116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r14,QWORD PTR[48+rdi] 1516116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r15,QWORD PTR[56+rdi] 1517116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sbb rsi,rsi 1518116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1519116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[((48+56+8))+rsp] 1520116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov ecx,8 1521116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[rbp] 1522116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$8x_tail 1523116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1524116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 1525116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$8x_tail:: 1526116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 1527116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r8,rax 1528116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[16+rbp] 1529116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[rdi],r8 1530116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r8,rdx 1531116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r8,0 1532116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1533116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 1534116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r9,rax 1535116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[32+rbp] 1536116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1537116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r8,r9 1538116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdi,QWORD PTR[8+rdi] 1539116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r9,rdx 1540116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r9,0 1541116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1542116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 1543116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,rax 1544116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[48+rbp] 1545116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1546116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r9,r10 1547116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,rdx 1548116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r10,0 1549116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1550116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 1551116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,rax 1552116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[64+rbp] 1553116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1554116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r10,r11 1555116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rdx 1556116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r11,0 1557116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1558116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 1559116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r12,rax 1560116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[80+rbp] 1561116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1562116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,r12 1563116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r12,rdx 1564116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r12,0 1565116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1566116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 1567116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,rax 1568116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[96+rbp] 1569116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1570116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r12,r13 1571116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,rdx 1572116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r13,0 1573116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1574116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 1575116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r14,rax 1576116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[112+rbp] 1577116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1578116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r13,r14 1579116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r14,rdx 1580116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r14,0 1581116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1582116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mul rbx 1583116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[((48-16+8))+rcx*8+rsp] 1584116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r15,rax 1585116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rdx,0 1586116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r14,r15 1587116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[rbp] 1588116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r15,rdx 1589116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r15,0 1590116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1591116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch dec ecx 1592116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz $L$8x_tail 1593116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1594116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rbp,QWORD PTR[128+rbp] 1595116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdx,QWORD PTR[((8+8))+rsp] 1596116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp rbp,QWORD PTR[((0+8))+rsp] 1597116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jae $L$8x_tail_done 1598116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1599116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[((48+56+8))+rsp] 1600116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg rsi 1601116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[rbp] 1602116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r8,QWORD PTR[rdi] 1603116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r9,QWORD PTR[8+rdi] 1604116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r10,QWORD PTR[16+rdi] 1605116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r11,QWORD PTR[24+rdi] 1606116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r12,QWORD PTR[32+rdi] 1607116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r13,QWORD PTR[40+rdi] 1608116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r14,QWORD PTR[48+rdi] 1609116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r15,QWORD PTR[56+rdi] 1610116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sbb rsi,rsi 1611116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1612116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov ecx,8 1613116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$8x_tail 1614116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1615116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 1616116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$8x_tail_done:: 1617116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r8,QWORD PTR[rdx] 1618116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor rax,rax 1619116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1620116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg rsi 1621116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$8x_no_tail:: 1622116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r8,QWORD PTR[rdi] 1623116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r9,QWORD PTR[8+rdi] 1624116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r10,QWORD PTR[16+rdi] 1625116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r11,QWORD PTR[24+rdi] 1626116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r12,QWORD PTR[32+rdi] 1627116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r13,QWORD PTR[40+rdi] 1628116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r14,QWORD PTR[48+rdi] 1629116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc r15,QWORD PTR[56+rdi] 1630116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rax,0 1631116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rcx,QWORD PTR[((-16))+rbp] 1632116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor rsi,rsi 1633116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1634116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,72,15,126,213 1635116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1636116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[rdi],r8 1637116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[8+rdi],r9 1638116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,73,15,126,217 1639116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[16+rdi],r10 1640116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[24+rdi],r11 1641116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[32+rdi],r12 1642116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[40+rdi],r13 1643116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[48+rdi],r14 1644116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[56+rdi],r15 1645116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdi,QWORD PTR[64+rdi] 1646116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1647116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp rdi,rdx 1648116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jb $L$8x_reduction_loop 1649116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1650116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub rcx,r15 1651116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rbx,QWORD PTR[r9*1+rdi] 1652116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch adc rsi,rsi 1653116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rcx,r9 1654116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch or rax,rsi 1655116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,72,15,126,207 1656116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor rax,1 1657116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,72,15,126,206 1658116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rbp,QWORD PTR[rax*8+rbp] 1659116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sar rcx,3+2 1660116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$sqr4x_sub 1661116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1662116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 1663116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$sqr4x_sub:: 1664116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 066h 1665116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r12,QWORD PTR[rbx] 1666116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,QWORD PTR[8+rbx] 1667116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sbb r12,QWORD PTR[rbp] 1668116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r14,QWORD PTR[16+rbx] 1669116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sbb r13,QWORD PTR[16+rbp] 1670116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r15,QWORD PTR[24+rbx] 1671116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rbx,QWORD PTR[32+rbx] 1672116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sbb r14,QWORD PTR[32+rbp] 1673116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[rdi],r12 1674116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sbb r15,QWORD PTR[48+rbp] 1675116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rbp,QWORD PTR[64+rbp] 1676116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[8+rdi],r13 1677116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[16+rdi],r14 1678116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[24+rdi],r15 1679116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdi,QWORD PTR[32+rdi] 1680116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1681116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch inc rcx 1682116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz $L$sqr4x_sub 1683116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,r9 1684116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg r9 1685116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 1686116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbn_sqr8x_internal ENDP 1687116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC bn_from_montgomery 1688116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1689116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 1690116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbn_from_montgomery PROC PUBLIC 1691116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch test DWORD PTR[48+rsp],7 1692116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jz bn_from_mont8x 1693116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor eax,eax 1694116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 1695116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbn_from_montgomery ENDP 1696116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1697116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1698116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 1699116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbn_from_mont8x PROC PRIVATE 1700116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[8+rsp],rdi ;WIN64 prologue 1701116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[16+rsp],rsi 1702116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rsp 1703116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_begin_bn_from_mont8x:: 1704116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,rcx 1705116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,rdx 1706116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdx,r8 1707116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rcx,r9 1708116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r8,QWORD PTR[40+rsp] 1709116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r9,QWORD PTR[48+rsp] 1710116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1711116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1712116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 067h 1713116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rsp 1714116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push rbx 1715116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push rbp 1716116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r12 1717116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r13 1718116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r14 1719116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r15 1720116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[((-40))+rsp] 1721116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[rsp],xmm6 1722116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[16+rsp],xmm7 1723116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 067h 1724116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10d,r9d 1725116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shl r9d,3 1726116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shl r10d,3+2 1727116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg r9 1728116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r8,QWORD PTR[r8] 1729116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1730116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1731116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1732116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1733116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1734116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1735116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1736116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r11,QWORD PTR[((-64))+r9*2+rsp] 1737116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub r11,rsi 1738116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch and r11,4095 1739116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp r10,r11 1740116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jb $L$from_sp_alt 1741116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub rsp,r11 1742116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[((-64))+r9*2+rsp] 1743116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$from_sp_done 1744116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1745116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 1746116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$from_sp_alt:: 1747116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r10,QWORD PTR[((4096-64))+r9*2] 1748116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[((-64))+r9*2+rsp] 1749116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub r11,r10 1750116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,0 1751116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmovc r11,r10 1752116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub rsp,r11 1753116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$from_sp_done:: 1754116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch and rsp,-64 1755116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,r9 1756116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch neg r9 1757116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1758116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1759116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1760116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1761116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1762116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1763116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1764116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1765116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1766116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1767116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[32+rsp],r8 1768116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[40+rsp],rax 1769116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$from_body:: 1770116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,r9 1771116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rax,QWORD PTR[48+rsp] 1772116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm0 1773116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$mul_by_1 1774116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1775116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 1776116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$mul_by_1:: 1777116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu xmm1,XMMWORD PTR[rsi] 1778116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu xmm2,XMMWORD PTR[16+rsi] 1779116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu xmm3,XMMWORD PTR[32+rsi] 1780116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa XMMWORD PTR[r9*1+rax],xmm0 1781116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu xmm4,XMMWORD PTR[48+rsi] 1782116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa XMMWORD PTR[16+r9*1+rax],xmm0 1783116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 048h,08dh,0b6h,040h,000h,000h,000h 1784116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa XMMWORD PTR[rax],xmm1 1785116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa XMMWORD PTR[32+r9*1+rax],xmm0 1786116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa XMMWORD PTR[16+rax],xmm2 1787116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa XMMWORD PTR[48+r9*1+rax],xmm0 1788116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa XMMWORD PTR[32+rax],xmm3 1789116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa XMMWORD PTR[48+rax],xmm4 1790116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rax,QWORD PTR[64+rax] 1791116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub r11,64 1792116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz $L$mul_by_1 1793116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1794116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,72,15,110,207 1795116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,72,15,110,209 1796116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 067h 1797116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbp,rcx 1798116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,73,15,110,218 1799116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call sqr8x_reduction 1800116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1801116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm0 1802116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rax,QWORD PTR[48+rsp] 1803116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,QWORD PTR[40+rsp] 1804116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$from_mont_zero 1805116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1806116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 32 1807116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$from_mont_zero:: 1808116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa XMMWORD PTR[rax],xmm0 1809116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa XMMWORD PTR[16+rax],xmm0 1810116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa XMMWORD PTR[32+rax],xmm0 1811116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa XMMWORD PTR[48+rax],xmm0 1812116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rax,QWORD PTR[64+rax] 1813116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub r9,32 1814116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz $L$from_mont_zero 1815116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1816116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,1 1817116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r15,QWORD PTR[((-48))+rsi] 1818116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r14,QWORD PTR[((-40))+rsi] 1819116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,QWORD PTR[((-32))+rsi] 1820116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r12,QWORD PTR[((-24))+rsi] 1821116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbp,QWORD PTR[((-16))+rsi] 1822116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[((-8))+rsi] 1823116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[rsi] 1824116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$from_epilogue:: 1825116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue 1826116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,QWORD PTR[16+rsp] 1827116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 1828116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_end_bn_from_mont8x:: 1829116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbn_from_mont8x ENDP 1830116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC bn_scatter5 1831116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1832116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 1833116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbn_scatter5 PROC PUBLIC 1834116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp edx,0 1835116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jz $L$scatter_epilogue 1836116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r8,QWORD PTR[r9*8+r8] 1837116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$scatter:: 1838116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[rcx] 1839116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rcx,QWORD PTR[8+rcx] 1840116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[r8],rax 1841116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r8,QWORD PTR[256+r8] 1842116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub edx,1 1843116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz $L$scatter 1844116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$scatter_epilogue:: 1845116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 1846116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbn_scatter5 ENDP 1847116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1848116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC bn_gather5 1849116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1850116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 1851116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbn_gather5 PROC PUBLIC 1852116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_begin_bn_gather5:: 1853116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1854116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 048h,083h,0ech,028h 1855116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 00fh,029h,034h,024h 1856116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 00fh,029h,07ch,024h,010h 1857116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11d,r9d 1858116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r9d,3 1859116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch and r11,7 1860116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch not r9d 1861116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rax,QWORD PTR[$L$magic_masks] 1862116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch and r9d,3 1863116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r8,QWORD PTR[128+r11*8+r8] 1864116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm4,QWORD PTR[r9*8+rax] 1865116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm5,QWORD PTR[8+r9*8+rax] 1866116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm6,QWORD PTR[16+r9*8+rax] 1867116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm7,QWORD PTR[24+r9*8+rax] 1868116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$gather 1869116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 1870116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$gather:: 187103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) movq xmm0,QWORD PTR[(((-128)))+r8] 1872116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm1,QWORD PTR[((-64))+r8] 1873116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm0,xmm4 1874116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm2,QWORD PTR[r8] 1875116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm1,xmm5 1876116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq xmm3,QWORD PTR[64+r8] 1877116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm2,xmm6 1878116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm0,xmm1 1879116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm3,xmm7 1880116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 067h,067h 1881116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm0,xmm2 1882116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r8,QWORD PTR[256+r8] 1883116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch por xmm0,xmm3 1884116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1885116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movq QWORD PTR[rcx],xmm0 1886116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rcx,QWORD PTR[8+rcx] 1887116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub edx,1 1888116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz $L$gather 1889116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm6,XMMWORD PTR[rsp] 1890116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm7,XMMWORD PTR[16+rsp] 1891116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[40+rsp] 1892116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 1893116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_end_bn_gather5:: 1894116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbn_gather5 ENDP 1895116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 64 1896116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$magic_masks:: 1897116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD 0,0,0,0,0,0,-1,-1 1898116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD 0,0,0,0,0,0,0,0 1899116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 1900116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 112,108,105,99,97,116,105,111,110,32,119,105,116,104,32,115 1901116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 99,97,116,116,101,114,47,103,97,116,104,101,114,32,102,111 1902116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79 1903116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111 1904116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 112,101,110,115,115,108,46,111,114,103,62,0 1905116680a4aac90f2aa7413d9095a592090648e557Ben MurdochEXTERN __imp_RtlVirtualUnwind:NEAR 1906116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1907116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 1908116680a4aac90f2aa7413d9095a592090648e557Ben Murdochmul_handler PROC PRIVATE 1909116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push rsi 1910116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push rdi 1911116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push rbx 1912116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push rbp 1913116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r12 1914116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r13 1915116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r14 1916116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r15 1917116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushfq 1918116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub rsp,64 1919116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1920116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[120+r8] 1921116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[248+r8] 1922116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1923116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,QWORD PTR[8+r9] 1924116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,QWORD PTR[56+r9] 1925116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1926116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10d,DWORD PTR[r11] 1927116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r10,QWORD PTR[r10*1+rsi] 1928116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp rbx,r10 1929116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jb $L$common_seh_tail 1930116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1931116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[152+r8] 1932116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1933116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10d,DWORD PTR[4+r11] 1934116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r10,QWORD PTR[r10*1+rsi] 1935116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp rbx,r10 1936116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jae $L$common_seh_tail 1937116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1938116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r10,QWORD PTR[$L$mul_epilogue] 1939116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp rbx,r10 1940116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jb $L$body_40 1941116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1942116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,QWORD PTR[192+r8] 1943116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[8+r10*8+rax] 1944116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$body_proceed 1945116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1946116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$body_40:: 1947116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[40+rax] 1948116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$body_proceed:: 1949116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1950116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm0,XMMWORD PTR[((-88))+rax] 1951116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm1,XMMWORD PTR[((-72))+rax] 1952116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1953116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[((-8))+rax] 1954116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbp,QWORD PTR[((-16))+rax] 1955116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r12,QWORD PTR[((-24))+rax] 1956116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r13,QWORD PTR[((-32))+rax] 1957116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r14,QWORD PTR[((-40))+rax] 1958116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r15,QWORD PTR[((-48))+rax] 1959116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[144+r8],rbx 1960116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[160+r8],rbp 1961116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[216+r8],r12 1962116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[224+r8],r13 1963116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[232+r8],r14 1964116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[240+r8],r15 1965116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movups XMMWORD PTR[512+r8],xmm0 1966116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movups XMMWORD PTR[528+r8],xmm1 1967116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1968116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$common_seh_tail:: 1969116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,QWORD PTR[8+rax] 1970116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,QWORD PTR[16+rax] 1971116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[152+r8],rax 1972116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[168+r8],rsi 1973116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[176+r8],rdi 1974116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1975116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,QWORD PTR[40+r9] 1976116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,r8 1977116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov ecx,154 1978116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD 0a548f3fch 1979116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1980116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,r9 1981116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor rcx,rcx 1982116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdx,QWORD PTR[8+rsi] 1983116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r8,QWORD PTR[rsi] 1984116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r9,QWORD PTR[16+rsi] 1985116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,QWORD PTR[40+rsi] 1986116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r11,QWORD PTR[56+rsi] 1987116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r12,QWORD PTR[24+rsi] 1988116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[32+rsp],r10 1989116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[40+rsp],r11 1990116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[48+rsp],r12 1991116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[56+rsp],rcx 1992116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call QWORD PTR[__imp_RtlVirtualUnwind] 1993116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1994116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov eax,1 1995116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rsp,64 1996116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popfq 1997116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pop r15 1998116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pop r14 1999116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pop r13 2000116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pop r12 2001116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pop rbp 2002116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pop rbx 2003116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pop rdi 2004116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pop rsi 2005116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 2006116680a4aac90f2aa7413d9095a592090648e557Ben Murdochmul_handler ENDP 2007116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 2008116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.text$ ENDS 2009116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.pdata SEGMENT READONLY ALIGN(4) 2010116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 4 2011116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_begin_bn_mul_mont_gather5 2012116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_end_bn_mul_mont_gather5 2013116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_info_bn_mul_mont_gather5 2014116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 2015116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_begin_bn_mul4x_mont_gather5 2016116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_end_bn_mul4x_mont_gather5 2017116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_info_bn_mul4x_mont_gather5 2018116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 2019116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_begin_bn_power5 2020116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_end_bn_power5 2021116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_info_bn_power5 2022116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 2023116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_begin_bn_from_mont8x 2024116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_end_bn_from_mont8x 2025116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_info_bn_from_mont8x 2026116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_begin_bn_gather5 2027116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_end_bn_gather5 2028116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_info_bn_gather5 2029116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 2030116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.pdata ENDS 2031116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.xdata SEGMENT READONLY ALIGN(8) 2032116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 8 2033116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_info_bn_mul_mont_gather5:: 2034116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 9,0,0,0 2035116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel mul_handler 2036116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$mul_body,imagerel $L$mul_epilogue 2037116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 8 2038116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_info_bn_mul4x_mont_gather5:: 2039116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 9,0,0,0 2040116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel mul_handler 2041116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$mul4x_body,imagerel $L$mul4x_epilogue 2042116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 8 2043116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_info_bn_power5:: 2044116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 9,0,0,0 2045116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel mul_handler 2046116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$power5_body,imagerel $L$power5_epilogue 2047116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 8 2048116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_info_bn_from_mont8x:: 2049116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 9,0,0,0 2050116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel mul_handler 2051116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$from_body,imagerel $L$from_epilogue 2052116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 8 2053116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_info_bn_gather5:: 2054116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 001h,00dh,005h,000h 2055116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 00dh,078h,001h,000h 2056116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 008h,068h,000h,000h 2057116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 004h,042h,000h,000h 2058116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 8 2059116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 2060116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.xdata ENDS 2061116680a4aac90f2aa7413d9095a592090648e557Ben MurdochEND 2062