| OLD | NEW |
| 1 OPTION» DOTNAME | 1 default»rel |
| 2 .text$» SEGMENT ALIGN(256) 'CODE' | 2 %define XMMWORD |
| 3 %define YMMWORD |
| 4 %define ZMMWORD |
| 5 section».text code align=64 |
| 3 | 6 |
| 4 EXTERN OPENSSL_ia32cap_P:NEAR | |
| 5 | 7 |
| 6 PUBLIC» bn_mul_mont_gather5 | 8 EXTERN» OPENSSL_ia32cap_P |
| 9 |
| 10 global» bn_mul_mont_gather5 |
| 7 | 11 |
| 8 ALIGN 64 | 12 ALIGN 64 |
| 9 bn_mul_mont_gather5» PROC PUBLIC | 13 bn_mul_mont_gather5: |
| 10 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue | 14 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue |
| 11 » mov» QWORD PTR[16+rsp],rsi | 15 » mov» QWORD[16+rsp],rsi |
| 12 mov rax,rsp | 16 mov rax,rsp |
| 13 $L$SEH_begin_bn_mul_mont_gather5:: | 17 $L$SEH_begin_bn_mul_mont_gather5: |
| 14 mov rdi,rcx | 18 mov rdi,rcx |
| 15 mov rsi,rdx | 19 mov rsi,rdx |
| 16 mov rdx,r8 | 20 mov rdx,r8 |
| 17 mov rcx,r9 | 21 mov rcx,r9 |
| 18 » mov» r8,QWORD PTR[40+rsp] | 22 » mov» r8,QWORD[40+rsp] |
| 19 » mov» r9,QWORD PTR[48+rsp] | 23 » mov» r9,QWORD[48+rsp] |
| 20 | 24 |
| 21 | 25 |
| 22 test r9d,7 | 26 test r9d,7 |
| 23 » jnz» $L$mul_enter | 27 » jnz» NEAR $L$mul_enter |
| 24 » jmp» $L$mul4x_enter | 28 » jmp» NEAR $L$mul4x_enter |
| 25 | 29 |
| 26 ALIGN 16 | 30 ALIGN 16 |
| 27 $L$mul_enter:: | 31 $L$mul_enter: |
| 28 mov r9d,r9d | 32 mov r9d,r9d |
| 29 mov rax,rsp | 33 mov rax,rsp |
| 30 » mov» r10d,DWORD PTR[56+rsp] | 34 » mov» r10d,DWORD[56+rsp] |
| 31 push rbx | 35 push rbx |
| 32 push rbp | 36 push rbp |
| 33 push r12 | 37 push r12 |
| 34 push r13 | 38 push r13 |
| 35 push r14 | 39 push r14 |
| 36 push r15 | 40 push r15 |
| 37 » lea» rsp,QWORD PTR[((-40))+rsp] | 41 » lea» rsp,[((-40))+rsp] |
| 38 » movaps» XMMWORD PTR[rsp],xmm6 | 42 » movaps» XMMWORD[rsp],xmm6 |
| 39 » movaps» XMMWORD PTR[16+rsp],xmm7 | 43 » movaps» XMMWORD[16+rsp],xmm7 |
| 40 » lea» r11,QWORD PTR[2+r9] | 44 » lea» r11,[2+r9] |
| 41 neg r11 | 45 neg r11 |
| 42 » lea» rsp,QWORD PTR[r11*8+rsp] | 46 » lea» rsp,[r11*8+rsp] |
| 43 and rsp,-1024 | 47 and rsp,-1024 |
| 44 | 48 |
| 45 » mov» QWORD PTR[8+r9*8+rsp],rax | 49 » mov» QWORD[8+r9*8+rsp],rax |
| 46 $L$mul_body:: | 50 $L$mul_body: |
| 47 mov r12,rdx | 51 mov r12,rdx |
| 48 mov r11,r10 | 52 mov r11,r10 |
| 49 shr r10,3 | 53 shr r10,3 |
| 50 and r11,7 | 54 and r11,7 |
| 51 not r10 | 55 not r10 |
| 52 » lea» rax,QWORD PTR[$L$magic_masks] | 56 » lea» rax,[$L$magic_masks] |
| 53 and r10,3 | 57 and r10,3 |
| 54 » lea» r12,QWORD PTR[96+r11*8+r12] | 58 » lea» r12,[96+r11*8+r12] |
| 55 » movq» xmm4,QWORD PTR[r10*8+rax] | 59 » movq» xmm4,QWORD[r10*8+rax] |
| 56 » movq» xmm5,QWORD PTR[8+r10*8+rax] | 60 » movq» xmm5,QWORD[8+r10*8+rax] |
| 57 » movq» xmm6,QWORD PTR[16+r10*8+rax] | 61 » movq» xmm6,QWORD[16+r10*8+rax] |
| 58 » movq» xmm7,QWORD PTR[24+r10*8+rax] | 62 » movq» xmm7,QWORD[24+r10*8+rax] |
| 59 | 63 |
| 60 » movq» xmm0,QWORD PTR[(((-96)))+r12] | 64 » movq» xmm0,QWORD[(((-96)))+r12] |
| 61 » movq» xmm1,QWORD PTR[((-32))+r12] | 65 » movq» xmm1,QWORD[((-32))+r12] |
| 62 pand xmm0,xmm4 | 66 pand xmm0,xmm4 |
| 63 » movq» xmm2,QWORD PTR[32+r12] | 67 » movq» xmm2,QWORD[32+r12] |
| 64 pand xmm1,xmm5 | 68 pand xmm1,xmm5 |
| 65 » movq» xmm3,QWORD PTR[96+r12] | 69 » movq» xmm3,QWORD[96+r12] |
| 66 pand xmm2,xmm6 | 70 pand xmm2,xmm6 |
| 67 por xmm0,xmm1 | 71 por xmm0,xmm1 |
| 68 pand xmm3,xmm7 | 72 pand xmm3,xmm7 |
| 69 por xmm0,xmm2 | 73 por xmm0,xmm2 |
| 70 » lea» r12,QWORD PTR[256+r12] | 74 » lea» r12,[256+r12] |
| 71 por xmm0,xmm3 | 75 por xmm0,xmm3 |
| 72 | 76 |
| 73 DB 102,72,15,126,195 | 77 DB 102,72,15,126,195 |
| 74 | 78 |
| 75 » mov» r8,QWORD PTR[r8] | 79 » mov» r8,QWORD[r8] |
| 76 » mov» rax,QWORD PTR[rsi] | 80 » mov» rax,QWORD[rsi] |
| 77 | 81 |
| 78 xor r14,r14 | 82 xor r14,r14 |
| 79 xor r15,r15 | 83 xor r15,r15 |
| 80 | 84 |
| 81 » movq» xmm0,QWORD PTR[(((-96)))+r12] | 85 » movq» xmm0,QWORD[(((-96)))+r12] |
| 82 » movq» xmm1,QWORD PTR[((-32))+r12] | 86 » movq» xmm1,QWORD[((-32))+r12] |
| 83 pand xmm0,xmm4 | 87 pand xmm0,xmm4 |
| 84 » movq» xmm2,QWORD PTR[32+r12] | 88 » movq» xmm2,QWORD[32+r12] |
| 85 pand xmm1,xmm5 | 89 pand xmm1,xmm5 |
| 86 | 90 |
| 87 mov rbp,r8 | 91 mov rbp,r8 |
| 88 mul rbx | 92 mul rbx |
| 89 mov r10,rax | 93 mov r10,rax |
| 90 » mov» rax,QWORD PTR[rcx] | 94 » mov» rax,QWORD[rcx] |
| 91 | 95 |
| 92 » movq» xmm3,QWORD PTR[96+r12] | 96 » movq» xmm3,QWORD[96+r12] |
| 93 pand xmm2,xmm6 | 97 pand xmm2,xmm6 |
| 94 por xmm0,xmm1 | 98 por xmm0,xmm1 |
| 95 pand xmm3,xmm7 | 99 pand xmm3,xmm7 |
| 96 | 100 |
| 97 imul rbp,r10 | 101 imul rbp,r10 |
| 98 mov r11,rdx | 102 mov r11,rdx |
| 99 | 103 |
| 100 por xmm0,xmm2 | 104 por xmm0,xmm2 |
| 101 » lea» r12,QWORD PTR[256+r12] | 105 » lea» r12,[256+r12] |
| 102 por xmm0,xmm3 | 106 por xmm0,xmm3 |
| 103 | 107 |
| 104 mul rbp | 108 mul rbp |
| 105 add r10,rax | 109 add r10,rax |
| 106 » mov» rax,QWORD PTR[8+rsi] | 110 » mov» rax,QWORD[8+rsi] |
| 107 adc rdx,0 | 111 adc rdx,0 |
| 108 mov r13,rdx | 112 mov r13,rdx |
| 109 | 113 |
| 110 » lea» r15,QWORD PTR[1+r15] | 114 » lea» r15,[1+r15] |
| 111 » jmp» $L$1st_enter | 115 » jmp» NEAR $L$1st_enter |
| 112 | 116 |
| 113 ALIGN 16 | 117 ALIGN 16 |
| 114 $L$1st:: | 118 $L$1st: |
| 115 add r13,rax | 119 add r13,rax |
| 116 » mov» rax,QWORD PTR[r15*8+rsi] | 120 » mov» rax,QWORD[r15*8+rsi] |
| 117 adc rdx,0 | 121 adc rdx,0 |
| 118 add r13,r11 | 122 add r13,r11 |
| 119 mov r11,r10 | 123 mov r11,r10 |
| 120 adc rdx,0 | 124 adc rdx,0 |
| 121 » mov» QWORD PTR[((-16))+r15*8+rsp],r13 | 125 » mov» QWORD[((-16))+r15*8+rsp],r13 |
| 122 mov r13,rdx | 126 mov r13,rdx |
| 123 | 127 |
| 124 $L$1st_enter:: | 128 $L$1st_enter: |
| 125 mul rbx | 129 mul rbx |
| 126 add r11,rax | 130 add r11,rax |
| 127 » mov» rax,QWORD PTR[r15*8+rcx] | 131 » mov» rax,QWORD[r15*8+rcx] |
| 128 adc rdx,0 | 132 adc rdx,0 |
| 129 » lea» r15,QWORD PTR[1+r15] | 133 » lea» r15,[1+r15] |
| 130 mov r10,rdx | 134 mov r10,rdx |
| 131 | 135 |
| 132 mul rbp | 136 mul rbp |
| 133 cmp r15,r9 | 137 cmp r15,r9 |
| 134 » jne» $L$1st | 138 » jne» NEAR $L$1st |
| 135 | 139 |
| 136 DB 102,72,15,126,195 | 140 DB 102,72,15,126,195 |
| 137 | 141 |
| 138 add r13,rax | 142 add r13,rax |
| 139 » mov» rax,QWORD PTR[rsi] | 143 » mov» rax,QWORD[rsi] |
| 140 adc rdx,0 | 144 adc rdx,0 |
| 141 add r13,r11 | 145 add r13,r11 |
| 142 adc rdx,0 | 146 adc rdx,0 |
| 143 » mov» QWORD PTR[((-16))+r15*8+rsp],r13 | 147 » mov» QWORD[((-16))+r15*8+rsp],r13 |
| 144 mov r13,rdx | 148 mov r13,rdx |
| 145 mov r11,r10 | 149 mov r11,r10 |
| 146 | 150 |
| 147 xor rdx,rdx | 151 xor rdx,rdx |
| 148 add r13,r11 | 152 add r13,r11 |
| 149 adc rdx,0 | 153 adc rdx,0 |
| 150 » mov» QWORD PTR[((-8))+r9*8+rsp],r13 | 154 » mov» QWORD[((-8))+r9*8+rsp],r13 |
| 151 » mov» QWORD PTR[r9*8+rsp],rdx | 155 » mov» QWORD[r9*8+rsp],rdx |
| 152 | 156 |
| 153 » lea» r14,QWORD PTR[1+r14] | 157 » lea» r14,[1+r14] |
| 154 » jmp» $L$outer | 158 » jmp» NEAR $L$outer |
| 155 ALIGN 16 | 159 ALIGN 16 |
| 156 $L$outer:: | 160 $L$outer: |
| 157 xor r15,r15 | 161 xor r15,r15 |
| 158 mov rbp,r8 | 162 mov rbp,r8 |
| 159 » mov» r10,QWORD PTR[rsp] | 163 » mov» r10,QWORD[rsp] |
| 160 | 164 |
| 161 » movq» xmm0,QWORD PTR[(((-96)))+r12] | 165 » movq» xmm0,QWORD[(((-96)))+r12] |
| 162 » movq» xmm1,QWORD PTR[((-32))+r12] | 166 » movq» xmm1,QWORD[((-32))+r12] |
| 163 pand xmm0,xmm4 | 167 pand xmm0,xmm4 |
| 164 » movq» xmm2,QWORD PTR[32+r12] | 168 » movq» xmm2,QWORD[32+r12] |
| 165 pand xmm1,xmm5 | 169 pand xmm1,xmm5 |
| 166 | 170 |
| 167 mul rbx | 171 mul rbx |
| 168 add r10,rax | 172 add r10,rax |
| 169 » mov» rax,QWORD PTR[rcx] | 173 » mov» rax,QWORD[rcx] |
| 170 adc rdx,0 | 174 adc rdx,0 |
| 171 | 175 |
| 172 » movq» xmm3,QWORD PTR[96+r12] | 176 » movq» xmm3,QWORD[96+r12] |
| 173 pand xmm2,xmm6 | 177 pand xmm2,xmm6 |
| 174 por xmm0,xmm1 | 178 por xmm0,xmm1 |
| 175 pand xmm3,xmm7 | 179 pand xmm3,xmm7 |
| 176 | 180 |
| 177 imul rbp,r10 | 181 imul rbp,r10 |
| 178 mov r11,rdx | 182 mov r11,rdx |
| 179 | 183 |
| 180 por xmm0,xmm2 | 184 por xmm0,xmm2 |
| 181 » lea» r12,QWORD PTR[256+r12] | 185 » lea» r12,[256+r12] |
| 182 por xmm0,xmm3 | 186 por xmm0,xmm3 |
| 183 | 187 |
| 184 mul rbp | 188 mul rbp |
| 185 add r10,rax | 189 add r10,rax |
| 186 » mov» rax,QWORD PTR[8+rsi] | 190 » mov» rax,QWORD[8+rsi] |
| 187 adc rdx,0 | 191 adc rdx,0 |
| 188 » mov» r10,QWORD PTR[8+rsp] | 192 » mov» r10,QWORD[8+rsp] |
| 189 mov r13,rdx | 193 mov r13,rdx |
| 190 | 194 |
| 191 » lea» r15,QWORD PTR[1+r15] | 195 » lea» r15,[1+r15] |
| 192 » jmp» $L$inner_enter | 196 » jmp» NEAR $L$inner_enter |
| 193 | 197 |
| 194 ALIGN 16 | 198 ALIGN 16 |
| 195 $L$inner:: | 199 $L$inner: |
| 196 add r13,rax | 200 add r13,rax |
| 197 » mov» rax,QWORD PTR[r15*8+rsi] | 201 » mov» rax,QWORD[r15*8+rsi] |
| 198 adc rdx,0 | 202 adc rdx,0 |
| 199 add r13,r10 | 203 add r13,r10 |
| 200 » mov» r10,QWORD PTR[r15*8+rsp] | 204 » mov» r10,QWORD[r15*8+rsp] |
| 201 adc rdx,0 | 205 adc rdx,0 |
| 202 » mov» QWORD PTR[((-16))+r15*8+rsp],r13 | 206 » mov» QWORD[((-16))+r15*8+rsp],r13 |
| 203 mov r13,rdx | 207 mov r13,rdx |
| 204 | 208 |
| 205 $L$inner_enter:: | 209 $L$inner_enter: |
| 206 mul rbx | 210 mul rbx |
| 207 add r11,rax | 211 add r11,rax |
| 208 » mov» rax,QWORD PTR[r15*8+rcx] | 212 » mov» rax,QWORD[r15*8+rcx] |
| 209 adc rdx,0 | 213 adc rdx,0 |
| 210 add r10,r11 | 214 add r10,r11 |
| 211 mov r11,rdx | 215 mov r11,rdx |
| 212 adc r11,0 | 216 adc r11,0 |
| 213 » lea» r15,QWORD PTR[1+r15] | 217 » lea» r15,[1+r15] |
| 214 | 218 |
| 215 mul rbp | 219 mul rbp |
| 216 cmp r15,r9 | 220 cmp r15,r9 |
| 217 » jne» $L$inner | 221 » jne» NEAR $L$inner |
| 218 | 222 |
| 219 DB 102,72,15,126,195 | 223 DB 102,72,15,126,195 |
| 220 | 224 |
| 221 add r13,rax | 225 add r13,rax |
| 222 » mov» rax,QWORD PTR[rsi] | 226 » mov» rax,QWORD[rsi] |
| 223 adc rdx,0 | 227 adc rdx,0 |
| 224 add r13,r10 | 228 add r13,r10 |
| 225 » mov» r10,QWORD PTR[r15*8+rsp] | 229 » mov» r10,QWORD[r15*8+rsp] |
| 226 adc rdx,0 | 230 adc rdx,0 |
| 227 » mov» QWORD PTR[((-16))+r15*8+rsp],r13 | 231 » mov» QWORD[((-16))+r15*8+rsp],r13 |
| 228 mov r13,rdx | 232 mov r13,rdx |
| 229 | 233 |
| 230 xor rdx,rdx | 234 xor rdx,rdx |
| 231 add r13,r11 | 235 add r13,r11 |
| 232 adc rdx,0 | 236 adc rdx,0 |
| 233 add r13,r10 | 237 add r13,r10 |
| 234 adc rdx,0 | 238 adc rdx,0 |
| 235 » mov» QWORD PTR[((-8))+r9*8+rsp],r13 | 239 » mov» QWORD[((-8))+r9*8+rsp],r13 |
| 236 » mov» QWORD PTR[r9*8+rsp],rdx | 240 » mov» QWORD[r9*8+rsp],rdx |
| 237 | 241 |
| 238 » lea» r14,QWORD PTR[1+r14] | 242 » lea» r14,[1+r14] |
| 239 cmp r14,r9 | 243 cmp r14,r9 |
| 240 » jb» $L$outer | 244 » jb» NEAR $L$outer |
| 241 | 245 |
| 242 xor r14,r14 | 246 xor r14,r14 |
| 243 » mov» rax,QWORD PTR[rsp] | 247 » mov» rax,QWORD[rsp] |
| 244 » lea» rsi,QWORD PTR[rsp] | 248 » lea» rsi,[rsp] |
| 245 mov r15,r9 | 249 mov r15,r9 |
| 246 » jmp» $L$sub | 250 » jmp» NEAR $L$sub |
| 247 ALIGN 16 | 251 ALIGN 16 |
| 248 $L$sub::» sbb» rax,QWORD PTR[r14*8+rcx] | 252 $L$sub:»sbb» rax,QWORD[r14*8+rcx] |
| 249 » mov» QWORD PTR[r14*8+rdi],rax | 253 » mov» QWORD[r14*8+rdi],rax |
| 250 » mov» rax,QWORD PTR[8+r14*8+rsi] | 254 » mov» rax,QWORD[8+r14*8+rsi] |
| 251 » lea» r14,QWORD PTR[1+r14] | 255 » lea» r14,[1+r14] |
| 252 dec r15 | 256 dec r15 |
| 253 » jnz» $L$sub | 257 » jnz» NEAR $L$sub |
| 254 | 258 |
| 255 sbb rax,0 | 259 sbb rax,0 |
| 256 xor r14,r14 | 260 xor r14,r14 |
| 257 mov r15,r9 | 261 mov r15,r9 |
| 258 ALIGN 16 | 262 ALIGN 16 |
| 259 $L$copy:: | 263 $L$copy: |
| 260 » mov» rsi,QWORD PTR[r14*8+rsp] | 264 » mov» rsi,QWORD[r14*8+rsp] |
| 261 » mov» rcx,QWORD PTR[r14*8+rdi] | 265 » mov» rcx,QWORD[r14*8+rdi] |
| 262 xor rsi,rcx | 266 xor rsi,rcx |
| 263 and rsi,rax | 267 and rsi,rax |
| 264 xor rsi,rcx | 268 xor rsi,rcx |
| 265 » mov» QWORD PTR[r14*8+rsp],r14 | 269 » mov» QWORD[r14*8+rsp],r14 |
| 266 » mov» QWORD PTR[r14*8+rdi],rsi | 270 » mov» QWORD[r14*8+rdi],rsi |
| 267 » lea» r14,QWORD PTR[1+r14] | 271 » lea» r14,[1+r14] |
| 268 sub r15,1 | 272 sub r15,1 |
| 269 » jnz» $L$copy | 273 » jnz» NEAR $L$copy |
| 270 | 274 |
| 271 » mov» rsi,QWORD PTR[8+r9*8+rsp] | 275 » mov» rsi,QWORD[8+r9*8+rsp] |
| 272 mov rax,1 | 276 mov rax,1 |
| 273 » movaps» xmm6,XMMWORD PTR[((-88))+rsi] | 277 » movaps» xmm6,XMMWORD[((-88))+rsi] |
| 274 » movaps» xmm7,XMMWORD PTR[((-72))+rsi] | 278 » movaps» xmm7,XMMWORD[((-72))+rsi] |
| 275 » mov» r15,QWORD PTR[((-48))+rsi] | 279 » mov» r15,QWORD[((-48))+rsi] |
| 276 » mov» r14,QWORD PTR[((-40))+rsi] | 280 » mov» r14,QWORD[((-40))+rsi] |
| 277 » mov» r13,QWORD PTR[((-32))+rsi] | 281 » mov» r13,QWORD[((-32))+rsi] |
| 278 » mov» r12,QWORD PTR[((-24))+rsi] | 282 » mov» r12,QWORD[((-24))+rsi] |
| 279 » mov» rbp,QWORD PTR[((-16))+rsi] | 283 » mov» rbp,QWORD[((-16))+rsi] |
| 280 » mov» rbx,QWORD PTR[((-8))+rsi] | 284 » mov» rbx,QWORD[((-8))+rsi] |
| 281 » lea» rsp,QWORD PTR[rsi] | 285 » lea» rsp,[rsi] |
| 282 $L$mul_epilogue:: | 286 $L$mul_epilogue: |
| 283 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue | 287 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue |
| 284 » mov» rsi,QWORD PTR[16+rsp] | 288 » mov» rsi,QWORD[16+rsp] |
| 285 DB 0F3h,0C3h ;repret | 289 DB 0F3h,0C3h ;repret |
| 286 $L$SEH_end_bn_mul_mont_gather5:: | 290 $L$SEH_end_bn_mul_mont_gather5: |
| 287 bn_mul_mont_gather5» ENDP | |
| 288 | 291 |
| 289 ALIGN 32 | 292 ALIGN 32 |
| 290 bn_mul4x_mont_gather5» PROC PRIVATE | 293 bn_mul4x_mont_gather5: |
| 291 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue | 294 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue |
| 292 » mov» QWORD PTR[16+rsp],rsi | 295 » mov» QWORD[16+rsp],rsi |
| 293 mov rax,rsp | 296 mov rax,rsp |
| 294 $L$SEH_begin_bn_mul4x_mont_gather5:: | 297 $L$SEH_begin_bn_mul4x_mont_gather5: |
| 295 mov rdi,rcx | 298 mov rdi,rcx |
| 296 mov rsi,rdx | 299 mov rsi,rdx |
| 297 mov rdx,r8 | 300 mov rdx,r8 |
| 298 mov rcx,r9 | 301 mov rcx,r9 |
| 299 » mov» r8,QWORD PTR[40+rsp] | 302 » mov» r8,QWORD[40+rsp] |
| 300 » mov» r9,QWORD PTR[48+rsp] | 303 » mov» r9,QWORD[48+rsp] |
| 301 | 304 |
| 302 | 305 |
| 303 $L$mul4x_enter:: | 306 $L$mul4x_enter: |
| 304 DB» 067h | 307 DB» 0x67 |
| 305 mov rax,rsp | 308 mov rax,rsp |
| 306 push rbx | 309 push rbx |
| 307 push rbp | 310 push rbp |
| 308 push r12 | 311 push r12 |
| 309 push r13 | 312 push r13 |
| 310 push r14 | 313 push r14 |
| 311 push r15 | 314 push r15 |
| 312 » lea» rsp,QWORD PTR[((-40))+rsp] | 315 » lea» rsp,[((-40))+rsp] |
| 313 » movaps» XMMWORD PTR[rsp],xmm6 | 316 » movaps» XMMWORD[rsp],xmm6 |
| 314 » movaps» XMMWORD PTR[16+rsp],xmm7 | 317 » movaps» XMMWORD[16+rsp],xmm7 |
| 315 DB» 067h | 318 DB» 0x67 |
| 316 mov r10d,r9d | 319 mov r10d,r9d |
| 317 shl r9d,3 | 320 shl r9d,3 |
| 318 shl r10d,3+2 | 321 shl r10d,3+2 |
| 319 neg r9 | 322 neg r9 |
| 320 | 323 |
| 321 | 324 |
| 322 | 325 |
| 323 | 326 |
| 324 | 327 |
| 325 | 328 |
| 326 | 329 |
| 327 | 330 |
| 328 » lea» r11,QWORD PTR[((-64))+r9*2+rsp] | 331 » lea» r11,[((-64))+r9*2+rsp] |
| 329 sub r11,rsi | 332 sub r11,rsi |
| 330 and r11,4095 | 333 and r11,4095 |
| 331 cmp r10,r11 | 334 cmp r10,r11 |
| 332 » jb» $L$mul4xsp_alt | 335 » jb» NEAR $L$mul4xsp_alt |
| 333 sub rsp,r11 | 336 sub rsp,r11 |
| 334 » lea» rsp,QWORD PTR[((-64))+r9*2+rsp] | 337 » lea» rsp,[((-64))+r9*2+rsp] |
| 335 » jmp» $L$mul4xsp_done | 338 » jmp» NEAR $L$mul4xsp_done |
| 336 | 339 |
| 337 ALIGN 32 | 340 ALIGN 32 |
| 338 $L$mul4xsp_alt:: | 341 $L$mul4xsp_alt: |
| 339 » lea» r10,QWORD PTR[((4096-64))+r9*2] | 342 » lea» r10,[((4096-64))+r9*2] |
| 340 » lea» rsp,QWORD PTR[((-64))+r9*2+rsp] | 343 » lea» rsp,[((-64))+r9*2+rsp] |
| 341 sub r11,r10 | 344 sub r11,r10 |
| 342 mov r10,0 | 345 mov r10,0 |
| 343 cmovc r11,r10 | 346 cmovc r11,r10 |
| 344 sub rsp,r11 | 347 sub rsp,r11 |
| 345 $L$mul4xsp_done:: | 348 $L$mul4xsp_done: |
| 346 and rsp,-64 | 349 and rsp,-64 |
| 347 neg r9 | 350 neg r9 |
| 348 | 351 |
| 349 » mov» QWORD PTR[40+rsp],rax | 352 » mov» QWORD[40+rsp],rax |
| 350 $L$mul4x_body:: | 353 $L$mul4x_body: |
| 351 | 354 |
| 352 call mul4x_internal | 355 call mul4x_internal |
| 353 | 356 |
| 354 » mov» rsi,QWORD PTR[40+rsp] | 357 » mov» rsi,QWORD[40+rsp] |
| 355 mov rax,1 | 358 mov rax,1 |
| 356 » movaps» xmm6,XMMWORD PTR[((-88))+rsi] | 359 » movaps» xmm6,XMMWORD[((-88))+rsi] |
| 357 » movaps» xmm7,XMMWORD PTR[((-72))+rsi] | 360 » movaps» xmm7,XMMWORD[((-72))+rsi] |
| 358 » mov» r15,QWORD PTR[((-48))+rsi] | 361 » mov» r15,QWORD[((-48))+rsi] |
| 359 » mov» r14,QWORD PTR[((-40))+rsi] | 362 » mov» r14,QWORD[((-40))+rsi] |
| 360 » mov» r13,QWORD PTR[((-32))+rsi] | 363 » mov» r13,QWORD[((-32))+rsi] |
| 361 » mov» r12,QWORD PTR[((-24))+rsi] | 364 » mov» r12,QWORD[((-24))+rsi] |
| 362 » mov» rbp,QWORD PTR[((-16))+rsi] | 365 » mov» rbp,QWORD[((-16))+rsi] |
| 363 » mov» rbx,QWORD PTR[((-8))+rsi] | 366 » mov» rbx,QWORD[((-8))+rsi] |
| 364 » lea» rsp,QWORD PTR[rsi] | 367 » lea» rsp,[rsi] |
| 365 $L$mul4x_epilogue:: | 368 $L$mul4x_epilogue: |
| 366 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue | 369 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue |
| 367 » mov» rsi,QWORD PTR[16+rsp] | 370 » mov» rsi,QWORD[16+rsp] |
| 368 DB 0F3h,0C3h ;repret | 371 DB 0F3h,0C3h ;repret |
| 369 $L$SEH_end_bn_mul4x_mont_gather5:: | 372 $L$SEH_end_bn_mul4x_mont_gather5: |
| 370 bn_mul4x_mont_gather5» ENDP | |
| 371 | 373 |
| 372 | 374 |
| 373 ALIGN 32 | 375 ALIGN 32 |
| 374 mul4x_internal» PROC PRIVATE | 376 mul4x_internal: |
| 375 shl r9,5 | 377 shl r9,5 |
| 376 » mov» r10d,DWORD PTR[56+rax] | 378 » mov» r10d,DWORD[56+rax] |
| 377 » lea» r13,QWORD PTR[256+r9*1+rdx] | 379 » lea» r13,[256+r9*1+rdx] |
| 378 shr r9,5 | 380 shr r9,5 |
| 379 mov r11,r10 | 381 mov r11,r10 |
| 380 shr r10,3 | 382 shr r10,3 |
| 381 and r11,7 | 383 and r11,7 |
| 382 not r10 | 384 not r10 |
| 383 » lea» rax,QWORD PTR[$L$magic_masks] | 385 » lea» rax,[$L$magic_masks] |
| 384 and r10,3 | 386 and r10,3 |
| 385 » lea» r12,QWORD PTR[96+r11*8+rdx] | 387 » lea» r12,[96+r11*8+rdx] |
| 386 » movq» xmm4,QWORD PTR[r10*8+rax] | 388 » movq» xmm4,QWORD[r10*8+rax] |
| 387 » movq» xmm5,QWORD PTR[8+r10*8+rax] | 389 » movq» xmm5,QWORD[8+r10*8+rax] |
| 388 add r11,7 | 390 add r11,7 |
| 389 » movq» xmm6,QWORD PTR[16+r10*8+rax] | 391 » movq» xmm6,QWORD[16+r10*8+rax] |
| 390 » movq» xmm7,QWORD PTR[24+r10*8+rax] | 392 » movq» xmm7,QWORD[24+r10*8+rax] |
| 391 and r11,7 | 393 and r11,7 |
| 392 | 394 |
| 393 » movq» xmm0,QWORD PTR[(((-96)))+r12] | 395 » movq» xmm0,QWORD[(((-96)))+r12] |
| 394 » lea» r14,QWORD PTR[256+r12] | 396 » lea» r14,[256+r12] |
| 395 » movq» xmm1,QWORD PTR[((-32))+r12] | 397 » movq» xmm1,QWORD[((-32))+r12] |
| 396 pand xmm0,xmm4 | 398 pand xmm0,xmm4 |
| 397 » movq» xmm2,QWORD PTR[32+r12] | 399 » movq» xmm2,QWORD[32+r12] |
| 398 pand xmm1,xmm5 | 400 pand xmm1,xmm5 |
| 399 » movq» xmm3,QWORD PTR[96+r12] | 401 » movq» xmm3,QWORD[96+r12] |
| 400 pand xmm2,xmm6 | 402 pand xmm2,xmm6 |
| 401 DB» 067h | 403 DB» 0x67 |
| 402 por xmm0,xmm1 | 404 por xmm0,xmm1 |
| 403 » movq» xmm1,QWORD PTR[((-96))+r14] | 405 » movq» xmm1,QWORD[((-96))+r14] |
| 404 DB» 067h | 406 DB» 0x67 |
| 405 pand xmm3,xmm7 | 407 pand xmm3,xmm7 |
| 406 DB» 067h | 408 DB» 0x67 |
| 407 por xmm0,xmm2 | 409 por xmm0,xmm2 |
| 408 » movq» xmm2,QWORD PTR[((-32))+r14] | 410 » movq» xmm2,QWORD[((-32))+r14] |
| 409 DB» 067h | 411 DB» 0x67 |
| 410 pand xmm1,xmm4 | 412 pand xmm1,xmm4 |
| 411 DB» 067h | 413 DB» 0x67 |
| 412 por xmm0,xmm3 | 414 por xmm0,xmm3 |
| 413 » movq» xmm3,QWORD PTR[32+r14] | 415 » movq» xmm3,QWORD[32+r14] |
| 414 | 416 |
| 415 DB 102,72,15,126,195 | 417 DB 102,72,15,126,195 |
| 416 » movq» xmm0,QWORD PTR[96+r14] | 418 » movq» xmm0,QWORD[96+r14] |
| 417 » mov» QWORD PTR[((16+8))+rsp],r13 | 419 » mov» QWORD[((16+8))+rsp],r13 |
| 418 » mov» QWORD PTR[((56+8))+rsp],rdi | 420 » mov» QWORD[((56+8))+rsp],rdi |
| 419 | 421 |
| 420 » mov» r8,QWORD PTR[r8] | 422 » mov» r8,QWORD[r8] |
| 421 » mov» rax,QWORD PTR[rsi] | 423 » mov» rax,QWORD[rsi] |
| 422 » lea» rsi,QWORD PTR[r9*1+rsi] | 424 » lea» rsi,[r9*1+rsi] |
| 423 neg r9 | 425 neg r9 |
| 424 | 426 |
| 425 mov rbp,r8 | 427 mov rbp,r8 |
| 426 mul rbx | 428 mul rbx |
| 427 mov r10,rax | 429 mov r10,rax |
| 428 » mov» rax,QWORD PTR[rcx] | 430 » mov» rax,QWORD[rcx] |
| 429 | 431 |
| 430 pand xmm2,xmm5 | 432 pand xmm2,xmm5 |
| 431 pand xmm3,xmm6 | 433 pand xmm3,xmm6 |
| 432 por xmm1,xmm2 | 434 por xmm1,xmm2 |
| 433 | 435 |
| 434 imul rbp,r10 | 436 imul rbp,r10 |
| 435 | 437 |
| 436 | 438 |
| 437 | 439 |
| 438 | 440 |
| 439 | 441 |
| 440 | 442 |
| 441 | 443 |
| 442 » lea» r14,QWORD PTR[((64+8))+r11*8+rsp] | 444 » lea» r14,[((64+8))+r11*8+rsp] |
| 443 mov r11,rdx | 445 mov r11,rdx |
| 444 | 446 |
| 445 pand xmm0,xmm7 | 447 pand xmm0,xmm7 |
| 446 por xmm1,xmm3 | 448 por xmm1,xmm3 |
| 447 » lea» r12,QWORD PTR[512+r12] | 449 » lea» r12,[512+r12] |
| 448 por xmm0,xmm1 | 450 por xmm0,xmm1 |
| 449 | 451 |
| 450 mul rbp | 452 mul rbp |
| 451 add r10,rax | 453 add r10,rax |
| 452 » mov» rax,QWORD PTR[8+r9*1+rsi] | 454 » mov» rax,QWORD[8+r9*1+rsi] |
| 453 » adc» rdx,0 | 455 » adc» rdx,0 |
| 454 » mov» rdi,rdx | 456 » mov» rdi,rdx |
| 455 | 457 |
| 456 » mul» rbx | 458 » mul» rbx |
| 457 » add» r11,rax | 459 » add» r11,rax |
| 458 » mov» rax,QWORD PTR[16+rcx] | 460 » mov» rax,QWORD[16+rcx] |
| 459 » adc» rdx,0 | 461 » adc» rdx,0 |
| 460 » mov» r10,rdx | 462 » mov» r10,rdx |
| 461 | 463 |
| 462 » mul» rbp | 464 » mul» rbp |
| 463 » add» rdi,rax | 465 » add» rdi,rax |
| 464 » mov» rax,QWORD PTR[16+r9*1+rsi] | 466 » mov» rax,QWORD[16+r9*1+rsi] |
| 465 » adc» rdx,0 | 467 » adc» rdx,0 |
| 466 » add» rdi,r11 | 468 » add» rdi,r11 |
| 467 » lea» r15,QWORD PTR[32+r9] | 469 » lea» r15,[32+r9] |
| 468 » lea» rcx,QWORD PTR[64+rcx] | 470 » lea» rcx,[64+rcx] |
| 469 » adc» rdx,0 | 471 » adc» rdx,0 |
| 470 » mov» QWORD PTR[r14],rdi | 472 » mov» QWORD[r14],rdi |
| 471 » mov» r13,rdx | 473 » mov» r13,rdx |
| 472 » jmp» $L$1st4x | 474 » jmp» NEAR $L$1st4x |
| 473 | 475 |
| 474 ALIGN 32 | 476 ALIGN 32 |
| 475 $L$1st4x:: | 477 $L$1st4x: |
| 476 » mul» rbx | 478 » mul» rbx |
| 477 » add» r10,rax | 479 » add» r10,rax |
| 478 » mov» rax,QWORD PTR[((-32))+rcx] | 480 » mov» rax,QWORD[((-32))+rcx] |
| 479 » lea» r14,QWORD PTR[32+r14] | 481 » lea» r14,[32+r14] |
| 480 » adc» rdx,0 | 482 » adc» rdx,0 |
| 481 » mov» r11,rdx | 483 » mov» r11,rdx |
| 482 | 484 |
| 483 » mul» rbp | 485 » mul» rbp |
| 484 » add» r13,rax | 486 » add» r13,rax |
| 485 » mov» rax,QWORD PTR[((-8))+r15*1+rsi] | 487 » mov» rax,QWORD[((-8))+r15*1+rsi] |
| 486 » adc» rdx,0 | 488 » adc» rdx,0 |
| 487 » add» r13,r10 | 489 » add» r13,r10 |
| 488 » adc» rdx,0 | 490 » adc» rdx,0 |
| 489 » mov» QWORD PTR[((-24))+r14],r13 | 491 » mov» QWORD[((-24))+r14],r13 |
| 490 » mov» rdi,rdx | 492 » mov» rdi,rdx |
| 491 | 493 |
| 492 » mul» rbx | 494 » mul» rbx |
| 493 » add» r11,rax | 495 » add» r11,rax |
| 494 » mov» rax,QWORD PTR[((-16))+rcx] | 496 » mov» rax,QWORD[((-16))+rcx] |
| 495 » adc» rdx,0 | 497 » adc» rdx,0 |
| 496 » mov» r10,rdx | 498 » mov» r10,rdx |
| 497 | 499 |
| 498 » mul» rbp | 500 » mul» rbp |
| 499 » add» rdi,rax | 501 » add» rdi,rax |
| 500 » mov» rax,QWORD PTR[r15*1+rsi] | 502 » mov» rax,QWORD[r15*1+rsi] |
| 501 » adc» rdx,0 | 503 » adc» rdx,0 |
| 502 » add» rdi,r11 | 504 » add» rdi,r11 |
| 503 » adc» rdx,0 | 505 » adc» rdx,0 |
| 504 » mov» QWORD PTR[((-16))+r14],rdi | 506 » mov» QWORD[((-16))+r14],rdi |
| 505 » mov» r13,rdx | 507 » mov» r13,rdx |
| 506 | 508 |
| 507 » mul» rbx | 509 » mul» rbx |
| 508 » add» r10,rax | 510 » add» r10,rax |
| 509 » mov» rax,QWORD PTR[rcx] | 511 » mov» rax,QWORD[rcx] |
| 510 » adc» rdx,0 | 512 » adc» rdx,0 |
| 511 » mov» r11,rdx | 513 » mov» r11,rdx |
| 512 | 514 |
| 513 » mul» rbp | 515 » mul» rbp |
| 514 » add» r13,rax | 516 » add» r13,rax |
| 515 » mov» rax,QWORD PTR[8+r15*1+rsi] | 517 » mov» rax,QWORD[8+r15*1+rsi] |
| 516 » adc» rdx,0 | 518 » adc» rdx,0 |
| 517 » add» r13,r10 | 519 » add» r13,r10 |
| 518 » adc» rdx,0 | 520 » adc» rdx,0 |
| 519 » mov» QWORD PTR[((-8))+r14],r13 | 521 » mov» QWORD[((-8))+r14],r13 |
| 520 » mov» rdi,rdx | 522 » mov» rdi,rdx |
| 521 | 523 |
| 522 » mul» rbx | 524 » mul» rbx |
| 523 » add» r11,rax | 525 » add» r11,rax |
| 524 » mov» rax,QWORD PTR[16+rcx] | 526 » mov» rax,QWORD[16+rcx] |
| 525 » adc» rdx,0 | 527 » adc» rdx,0 |
| 526 » mov» r10,rdx | 528 » mov» r10,rdx |
| 527 | 529 |
| 528 » mul» rbp | 530 » mul» rbp |
| 529 » add» rdi,rax | 531 » add» rdi,rax |
| 530 » mov» rax,QWORD PTR[16+r15*1+rsi] | 532 » mov» rax,QWORD[16+r15*1+rsi] |
| 531 » adc» rdx,0 | 533 » adc» rdx,0 |
| 532 » add» rdi,r11 | 534 » add» rdi,r11 |
| 533 » lea» rcx,QWORD PTR[64+rcx] | 535 » lea» rcx,[64+rcx] |
| 534 » adc» rdx,0 | 536 » adc» rdx,0 |
| 535 » mov» QWORD PTR[r14],rdi | 537 » mov» QWORD[r14],rdi |
| 536 mov r13,rdx | 538 mov r13,rdx |
| 537 | 539 |
| 538 add r15,32 | 540 add r15,32 |
| 539 » jnz» $L$1st4x | 541 » jnz» NEAR $L$1st4x |
| 540 | 542 |
| 541 » mul» rbx | 543 » mul» rbx |
| 542 » add» r10,rax | 544 » add» r10,rax |
| 543 » mov» rax,QWORD PTR[((-32))+rcx] | 545 » mov» rax,QWORD[((-32))+rcx] |
| 544 » lea» r14,QWORD PTR[32+r14] | 546 » lea» r14,[32+r14] |
| 545 » adc» rdx,0 | 547 » adc» rdx,0 |
| 546 » mov» r11,rdx | 548 » mov» r11,rdx |
| 547 | 549 |
| 548 » mul» rbp | 550 » mul» rbp |
| 549 » add» r13,rax | 551 » add» r13,rax |
| 550 » mov» rax,QWORD PTR[((-8))+rsi] | 552 » mov» rax,QWORD[((-8))+rsi] |
| 551 » adc» rdx,0 | 553 » adc» rdx,0 |
| 552 » add» r13,r10 | 554 » add» r13,r10 |
| 553 » adc» rdx,0 | 555 » adc» rdx,0 |
| 554 » mov» QWORD PTR[((-24))+r14],r13 | 556 » mov» QWORD[((-24))+r14],r13 |
| 555 » mov» rdi,rdx | 557 » mov» rdi,rdx |
| 556 | 558 |
| 557 » mul» rbx | 559 » mul» rbx |
| 558 » add» r11,rax | 560 » add» r11,rax |
| 559 » mov» rax,QWORD PTR[((-16))+rcx] | 561 » mov» rax,QWORD[((-16))+rcx] |
| 560 » adc» rdx,0 | 562 » adc» rdx,0 |
| 561 » mov» r10,rdx | 563 » mov» r10,rdx |
| 562 | 564 |
| 563 » mul» rbp | 565 » mul» rbp |
| 564 » add» rdi,rax | 566 » add» rdi,rax |
| 565 » mov» rax,QWORD PTR[r9*1+rsi] | 567 » mov» rax,QWORD[r9*1+rsi] |
| 566 » adc» rdx,0 | 568 » adc» rdx,0 |
| 567 » add» rdi,r11 | 569 » add» rdi,r11 |
| 568 » adc» rdx,0 | 570 » adc» rdx,0 |
| 569 » mov» QWORD PTR[((-16))+r14],rdi | 571 » mov» QWORD[((-16))+r14],rdi |
| 570 mov r13,rdx | 572 mov r13,rdx |
| 571 | 573 |
| 572 DB 102,72,15,126,195 | 574 DB 102,72,15,126,195 |
| 573 » lea» rcx,QWORD PTR[r9*2+rcx] | 575 » lea» rcx,[r9*2+rcx] |
| 574 | 576 |
| 575 xor rdi,rdi | 577 xor rdi,rdi |
| 576 add r13,r10 | 578 add r13,r10 |
| 577 adc rdi,0 | 579 adc rdi,0 |
| 578 » mov» QWORD PTR[((-8))+r14],r13 | 580 » mov» QWORD[((-8))+r14],r13 |
| 579 | 581 |
| 580 » jmp» $L$outer4x | 582 » jmp» NEAR $L$outer4x |
| 581 | 583 |
| 582 ALIGN 32 | 584 ALIGN 32 |
| 583 $L$outer4x:: | 585 $L$outer4x: |
| 584 » mov» r10,QWORD PTR[r9*1+r14] | 586 » mov» r10,QWORD[r9*1+r14] |
| 585 mov rbp,r8 | 587 mov rbp,r8 |
| 586 mul rbx | 588 mul rbx |
| 587 add r10,rax | 589 add r10,rax |
| 588 » mov» rax,QWORD PTR[rcx] | 590 » mov» rax,QWORD[rcx] |
| 589 » adc» rdx,0 | 591 » adc» rdx,0 |
| 590 | 592 |
| 591 » movq» xmm0,QWORD PTR[(((-96)))+r12] | 593 » movq» xmm0,QWORD[(((-96)))+r12] |
| 592 » movq» xmm1,QWORD PTR[((-32))+r12] | 594 » movq» xmm1,QWORD[((-32))+r12] |
| 593 pand xmm0,xmm4 | 595 pand xmm0,xmm4 |
| 594 » movq» xmm2,QWORD PTR[32+r12] | 596 » movq» xmm2,QWORD[32+r12] |
| 595 pand xmm1,xmm5 | 597 pand xmm1,xmm5 |
| 596 » movq» xmm3,QWORD PTR[96+r12] | 598 » movq» xmm3,QWORD[96+r12] |
| 597 | 599 |
| 598 imul rbp,r10 | 600 imul rbp,r10 |
| 599 DB» 067h | 601 DB» 0x67 |
| 600 » mov» r11,rdx | 602 » mov» r11,rdx |
| 601 » mov» QWORD PTR[r14],rdi | 603 » mov» QWORD[r14],rdi |
| 602 | 604 |
| 603 pand xmm2,xmm6 | 605 pand xmm2,xmm6 |
| 604 por xmm0,xmm1 | 606 por xmm0,xmm1 |
| 605 pand xmm3,xmm7 | 607 pand xmm3,xmm7 |
| 606 por xmm0,xmm2 | 608 por xmm0,xmm2 |
| 607 » lea» r14,QWORD PTR[r9*1+r14] | 609 » lea» r14,[r9*1+r14] |
| 608 » lea» r12,QWORD PTR[256+r12] | 610 » lea» r12,[256+r12] |
| 609 por xmm0,xmm3 | 611 por xmm0,xmm3 |
| 610 | 612 |
| 611 mul rbp | 613 mul rbp |
| 612 add r10,rax | 614 add r10,rax |
| 613 » mov» rax,QWORD PTR[8+r9*1+rsi] | 615 » mov» rax,QWORD[8+r9*1+rsi] |
| 614 » adc» rdx,0 | 616 » adc» rdx,0 |
| 615 » mov» rdi,rdx | 617 » mov» rdi,rdx |
| 616 | 618 |
| 617 » mul» rbx | 619 » mul» rbx |
| 618 » add» r11,rax | 620 » add» r11,rax |
| 619 » mov» rax,QWORD PTR[16+rcx] | 621 » mov» rax,QWORD[16+rcx] |
| 620 » adc» rdx,0 | 622 » adc» rdx,0 |
| 621 » add» r11,QWORD PTR[8+r14] | 623 » add» r11,QWORD[8+r14] |
| 622 » adc» rdx,0 | 624 » adc» rdx,0 |
| 623 » mov» r10,rdx | 625 » mov» r10,rdx |
| 624 | 626 |
| 625 » mul» rbp | 627 » mul» rbp |
| 626 » add» rdi,rax | 628 » add» rdi,rax |
| 627 » mov» rax,QWORD PTR[16+r9*1+rsi] | 629 » mov» rax,QWORD[16+r9*1+rsi] |
| 628 » adc» rdx,0 | 630 » adc» rdx,0 |
| 629 » add» rdi,r11 | 631 » add» rdi,r11 |
| 630 » lea» r15,QWORD PTR[32+r9] | 632 » lea» r15,[32+r9] |
| 631 » lea» rcx,QWORD PTR[64+rcx] | 633 » lea» rcx,[64+rcx] |
| 632 » adc» rdx,0 | 634 » adc» rdx,0 |
| 633 » mov» r13,rdx | 635 » mov» r13,rdx |
| 634 » jmp» $L$inner4x | 636 » jmp» NEAR $L$inner4x |
| 635 | 637 |
| 636 ALIGN 32 | 638 ALIGN 32 |
| 637 $L$inner4x:: | 639 $L$inner4x: |
| 638 » mul» rbx | 640 » mul» rbx |
| 639 » add» r10,rax | 641 » add» r10,rax |
| 640 » mov» rax,QWORD PTR[((-32))+rcx] | 642 » mov» rax,QWORD[((-32))+rcx] |
| 641 » adc» rdx,0 | 643 » adc» rdx,0 |
| 642 » add» r10,QWORD PTR[16+r14] | 644 » add» r10,QWORD[16+r14] |
| 643 » lea» r14,QWORD PTR[32+r14] | 645 » lea» r14,[32+r14] |
| 644 » adc» rdx,0 | 646 » adc» rdx,0 |
| 645 » mov» r11,rdx | 647 » mov» r11,rdx |
| 646 | 648 |
| 647 » mul» rbp | 649 » mul» rbp |
| 648 » add» r13,rax | 650 » add» r13,rax |
| 649 » mov» rax,QWORD PTR[((-8))+r15*1+rsi] | 651 » mov» rax,QWORD[((-8))+r15*1+rsi] |
| 650 » adc» rdx,0 | 652 » adc» rdx,0 |
| 651 » add» r13,r10 | 653 » add» r13,r10 |
| 652 » adc» rdx,0 | 654 » adc» rdx,0 |
| 653 » mov» QWORD PTR[((-32))+r14],rdi | 655 » mov» QWORD[((-32))+r14],rdi |
| 654 » mov» rdi,rdx | 656 » mov» rdi,rdx |
| 655 | 657 |
| 656 » mul» rbx | 658 » mul» rbx |
| 657 » add» r11,rax | 659 » add» r11,rax |
| 658 » mov» rax,QWORD PTR[((-16))+rcx] | 660 » mov» rax,QWORD[((-16))+rcx] |
| 659 » adc» rdx,0 | 661 » adc» rdx,0 |
| 660 » add» r11,QWORD PTR[((-8))+r14] | 662 » add» r11,QWORD[((-8))+r14] |
| 661 » adc» rdx,0 | 663 » adc» rdx,0 |
| 662 » mov» r10,rdx | 664 » mov» r10,rdx |
| 663 | 665 |
| 664 » mul» rbp | 666 » mul» rbp |
| 665 » add» rdi,rax | 667 » add» rdi,rax |
| 666 » mov» rax,QWORD PTR[r15*1+rsi] | 668 » mov» rax,QWORD[r15*1+rsi] |
| 667 » adc» rdx,0 | 669 » adc» rdx,0 |
| 668 » add» rdi,r11 | 670 » add» rdi,r11 |
| 669 » adc» rdx,0 | 671 » adc» rdx,0 |
| 670 » mov» QWORD PTR[((-24))+r14],r13 | 672 » mov» QWORD[((-24))+r14],r13 |
| 671 » mov» r13,rdx | 673 » mov» r13,rdx |
| 672 | 674 |
| 673 » mul» rbx | 675 » mul» rbx |
| 674 » add» r10,rax | 676 » add» r10,rax |
| 675 » mov» rax,QWORD PTR[rcx] | 677 » mov» rax,QWORD[rcx] |
| 676 » adc» rdx,0 | 678 » adc» rdx,0 |
| 677 » add» r10,QWORD PTR[r14] | 679 » add» r10,QWORD[r14] |
| 678 » adc» rdx,0 | 680 » adc» rdx,0 |
| 679 » mov» r11,rdx | 681 » mov» r11,rdx |
| 680 | 682 |
| 681 » mul» rbp | 683 » mul» rbp |
| 682 » add» r13,rax | 684 » add» r13,rax |
| 683 » mov» rax,QWORD PTR[8+r15*1+rsi] | 685 » mov» rax,QWORD[8+r15*1+rsi] |
| 684 » adc» rdx,0 | 686 » adc» rdx,0 |
| 685 » add» r13,r10 | 687 » add» r13,r10 |
| 686 » adc» rdx,0 | 688 » adc» rdx,0 |
| 687 » mov» QWORD PTR[((-16))+r14],rdi | 689 » mov» QWORD[((-16))+r14],rdi |
| 688 » mov» rdi,rdx | 690 » mov» rdi,rdx |
| 689 | 691 |
| 690 » mul» rbx | 692 » mul» rbx |
| 691 » add» r11,rax | 693 » add» r11,rax |
| 692 » mov» rax,QWORD PTR[16+rcx] | 694 » mov» rax,QWORD[16+rcx] |
| 693 » adc» rdx,0 | 695 » adc» rdx,0 |
| 694 » add» r11,QWORD PTR[8+r14] | 696 » add» r11,QWORD[8+r14] |
| 695 » adc» rdx,0 | 697 » adc» rdx,0 |
| 696 » mov» r10,rdx | 698 » mov» r10,rdx |
| 697 | 699 |
| 698 » mul» rbp | 700 » mul» rbp |
| 699 » add» rdi,rax | 701 » add» rdi,rax |
| 700 » mov» rax,QWORD PTR[16+r15*1+rsi] | 702 » mov» rax,QWORD[16+r15*1+rsi] |
| 701 » adc» rdx,0 | 703 » adc» rdx,0 |
| 702 » add» rdi,r11 | 704 » add» rdi,r11 |
| 703 » lea» rcx,QWORD PTR[64+rcx] | 705 » lea» rcx,[64+rcx] |
| 704 » adc» rdx,0 | 706 » adc» rdx,0 |
| 705 » mov» QWORD PTR[((-8))+r14],r13 | 707 » mov» QWORD[((-8))+r14],r13 |
| 706 mov r13,rdx | 708 mov r13,rdx |
| 707 | 709 |
| 708 add r15,32 | 710 add r15,32 |
| 709 » jnz» $L$inner4x | 711 » jnz» NEAR $L$inner4x |
| 710 | 712 |
| 711 » mul» rbx | 713 » mul» rbx |
| 712 » add» r10,rax | 714 » add» r10,rax |
| 713 » mov» rax,QWORD PTR[((-32))+rcx] | 715 » mov» rax,QWORD[((-32))+rcx] |
| 714 » adc» rdx,0 | 716 » adc» rdx,0 |
| 715 » add» r10,QWORD PTR[16+r14] | 717 » add» r10,QWORD[16+r14] |
| 716 » lea» r14,QWORD PTR[32+r14] | 718 » lea» r14,[32+r14] |
| 717 » adc» rdx,0 | 719 » adc» rdx,0 |
| 718 » mov» r11,rdx | 720 » mov» r11,rdx |
| 719 | 721 |
| 720 » mul» rbp | 722 » mul» rbp |
| 721 » add» r13,rax | 723 » add» r13,rax |
| 722 » mov» rax,QWORD PTR[((-8))+rsi] | 724 » mov» rax,QWORD[((-8))+rsi] |
| 723 » adc» rdx,0 | 725 » adc» rdx,0 |
| 724 » add» r13,r10 | 726 » add» r13,r10 |
| 725 » adc» rdx,0 | 727 » adc» rdx,0 |
| 726 » mov» QWORD PTR[((-32))+r14],rdi | 728 » mov» QWORD[((-32))+r14],rdi |
| 727 mov rdi,rdx | 729 mov rdi,rdx |
| 728 | 730 |
| 729 mul rbx | 731 mul rbx |
| 730 add r11,rax | 732 add r11,rax |
| 731 mov rax,rbp | 733 mov rax,rbp |
| 732 » mov» rbp,QWORD PTR[((-16))+rcx] | 734 » mov» rbp,QWORD[((-16))+rcx] |
| 733 » adc» rdx,0 | 735 » adc» rdx,0 |
| 734 » add» r11,QWORD PTR[((-8))+r14] | 736 » add» r11,QWORD[((-8))+r14] |
| 735 » adc» rdx,0 | 737 » adc» rdx,0 |
| 736 » mov» r10,rdx | 738 » mov» r10,rdx |
| 737 | 739 |
| 738 » mul» rbp | 740 » mul» rbp |
| 739 » add» rdi,rax | 741 » add» rdi,rax |
| 740 » mov» rax,QWORD PTR[r9*1+rsi] | 742 » mov» rax,QWORD[r9*1+rsi] |
| 741 » adc» rdx,0 | 743 » adc» rdx,0 |
| 742 » add» rdi,r11 | 744 » add» rdi,r11 |
| 743 » adc» rdx,0 | 745 » adc» rdx,0 |
| 744 » mov» QWORD PTR[((-24))+r14],r13 | 746 » mov» QWORD[((-24))+r14],r13 |
| 745 mov r13,rdx | 747 mov r13,rdx |
| 746 | 748 |
| 747 DB 102,72,15,126,195 | 749 DB 102,72,15,126,195 |
| 748 » mov» QWORD PTR[((-16))+r14],rdi | 750 » mov» QWORD[((-16))+r14],rdi |
| 749 » lea» rcx,QWORD PTR[r9*2+rcx] | 751 » lea» rcx,[r9*2+rcx] |
| 750 | 752 |
| 751 xor rdi,rdi | 753 xor rdi,rdi |
| 752 add r13,r10 | 754 add r13,r10 |
| 753 adc rdi,0 | 755 adc rdi,0 |
| 754 » add» r13,QWORD PTR[r14] | 756 » add» r13,QWORD[r14] |
| 755 adc rdi,0 | 757 adc rdi,0 |
| 756 » mov» QWORD PTR[((-8))+r14],r13 | 758 » mov» QWORD[((-8))+r14],r13 |
| 757 | 759 |
| 758 » cmp» r12,QWORD PTR[((16+8))+rsp] | 760 » cmp» r12,QWORD[((16+8))+rsp] |
| 759 » jb» $L$outer4x | 761 » jb» NEAR $L$outer4x |
| 760 sub rbp,r13 | 762 sub rbp,r13 |
| 761 adc r15,r15 | 763 adc r15,r15 |
| 762 or rdi,r15 | 764 or rdi,r15 |
| 763 xor rdi,1 | 765 xor rdi,1 |
| 764 » lea» rbx,QWORD PTR[r9*1+r14] | 766 » lea» rbx,[r9*1+r14] |
| 765 » lea» rbp,QWORD PTR[rdi*8+rcx] | 767 » lea» rbp,[rdi*8+rcx] |
| 766 mov rcx,r9 | 768 mov rcx,r9 |
| 767 sar rcx,3+2 | 769 sar rcx,3+2 |
| 768 » mov» rdi,QWORD PTR[((56+8))+rsp] | 770 » mov» rdi,QWORD[((56+8))+rsp] |
| 769 » jmp» $L$sqr4x_sub | 771 » jmp» NEAR $L$sqr4x_sub |
| 770 mul4x_internal» ENDP | 772 |
| 771 PUBLIC» bn_power5 | 773 global» bn_power5 |
| 772 | 774 |
| 773 ALIGN 32 | 775 ALIGN 32 |
| 774 bn_power5» PROC PUBLIC | 776 bn_power5: |
| 775 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue | 777 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue |
| 776 » mov» QWORD PTR[16+rsp],rsi | 778 » mov» QWORD[16+rsp],rsi |
| 777 mov rax,rsp | 779 mov rax,rsp |
| 778 $L$SEH_begin_bn_power5:: | 780 $L$SEH_begin_bn_power5: |
| 779 mov rdi,rcx | 781 mov rdi,rcx |
| 780 mov rsi,rdx | 782 mov rsi,rdx |
| 781 mov rdx,r8 | 783 mov rdx,r8 |
| 782 mov rcx,r9 | 784 mov rcx,r9 |
| 783 » mov» r8,QWORD PTR[40+rsp] | 785 » mov» r8,QWORD[40+rsp] |
| 784 » mov» r9,QWORD PTR[48+rsp] | 786 » mov» r9,QWORD[48+rsp] |
| 785 | 787 |
| 786 | 788 |
| 787 mov rax,rsp | 789 mov rax,rsp |
| 788 push rbx | 790 push rbx |
| 789 push rbp | 791 push rbp |
| 790 push r12 | 792 push r12 |
| 791 push r13 | 793 push r13 |
| 792 push r14 | 794 push r14 |
| 793 push r15 | 795 push r15 |
| 794 » lea» rsp,QWORD PTR[((-40))+rsp] | 796 » lea» rsp,[((-40))+rsp] |
| 795 » movaps» XMMWORD PTR[rsp],xmm6 | 797 » movaps» XMMWORD[rsp],xmm6 |
| 796 » movaps» XMMWORD PTR[16+rsp],xmm7 | 798 » movaps» XMMWORD[16+rsp],xmm7 |
| 797 mov r10d,r9d | 799 mov r10d,r9d |
| 798 shl r9d,3 | 800 shl r9d,3 |
| 799 shl r10d,3+2 | 801 shl r10d,3+2 |
| 800 neg r9 | 802 neg r9 |
| 801 » mov» r8,QWORD PTR[r8] | 803 » mov» r8,QWORD[r8] |
| 802 | 804 |
| 803 | 805 |
| 804 | 806 |
| 805 | 807 |
| 806 | 808 |
| 807 | 809 |
| 808 | 810 |
| 809 » lea» r11,QWORD PTR[((-64))+r9*2+rsp] | 811 » lea» r11,[((-64))+r9*2+rsp] |
| 810 sub r11,rsi | 812 sub r11,rsi |
| 811 and r11,4095 | 813 and r11,4095 |
| 812 cmp r10,r11 | 814 cmp r10,r11 |
| 813 » jb» $L$pwr_sp_alt | 815 » jb» NEAR $L$pwr_sp_alt |
| 814 sub rsp,r11 | 816 sub rsp,r11 |
| 815 » lea» rsp,QWORD PTR[((-64))+r9*2+rsp] | 817 » lea» rsp,[((-64))+r9*2+rsp] |
| 816 » jmp» $L$pwr_sp_done | 818 » jmp» NEAR $L$pwr_sp_done |
| 817 | 819 |
| 818 ALIGN 32 | 820 ALIGN 32 |
| 819 $L$pwr_sp_alt:: | 821 $L$pwr_sp_alt: |
| 820 » lea» r10,QWORD PTR[((4096-64))+r9*2] | 822 » lea» r10,[((4096-64))+r9*2] |
| 821 » lea» rsp,QWORD PTR[((-64))+r9*2+rsp] | 823 » lea» rsp,[((-64))+r9*2+rsp] |
| 822 sub r11,r10 | 824 sub r11,r10 |
| 823 mov r10,0 | 825 mov r10,0 |
| 824 cmovc r11,r10 | 826 cmovc r11,r10 |
| 825 sub rsp,r11 | 827 sub rsp,r11 |
| 826 $L$pwr_sp_done:: | 828 $L$pwr_sp_done: |
| 827 and rsp,-64 | 829 and rsp,-64 |
| 828 mov r10,r9 | 830 mov r10,r9 |
| 829 neg r9 | 831 neg r9 |
| 830 | 832 |
| 831 | 833 |
| 832 | 834 |
| 833 | 835 |
| 834 | 836 |
| 835 | 837 |
| 836 | 838 |
| 837 | 839 |
| 838 | 840 |
| 839 | 841 |
| 840 » mov» QWORD PTR[32+rsp],r8 | 842 » mov» QWORD[32+rsp],r8 |
| 841 » mov» QWORD PTR[40+rsp],rax | 843 » mov» QWORD[40+rsp],rax |
| 842 $L$power5_body:: | 844 $L$power5_body: |
| 843 DB 102,72,15,110,207 | 845 DB 102,72,15,110,207 |
| 844 DB 102,72,15,110,209 | 846 DB 102,72,15,110,209 |
| 845 DB 102,73,15,110,218 | 847 DB 102,73,15,110,218 |
| 846 DB 102,72,15,110,226 | 848 DB 102,72,15,110,226 |
| 847 | 849 |
| 848 call __bn_sqr8x_internal | 850 call __bn_sqr8x_internal |
| 849 call __bn_sqr8x_internal | 851 call __bn_sqr8x_internal |
| 850 call __bn_sqr8x_internal | 852 call __bn_sqr8x_internal |
| 851 call __bn_sqr8x_internal | 853 call __bn_sqr8x_internal |
| 852 call __bn_sqr8x_internal | 854 call __bn_sqr8x_internal |
| 853 | 855 |
| 854 DB 102,72,15,126,209 | 856 DB 102,72,15,126,209 |
| 855 DB 102,72,15,126,226 | 857 DB 102,72,15,126,226 |
| 856 mov rdi,rsi | 858 mov rdi,rsi |
| 857 » mov» rax,QWORD PTR[40+rsp] | 859 » mov» rax,QWORD[40+rsp] |
| 858 » lea» r8,QWORD PTR[32+rsp] | 860 » lea» r8,[32+rsp] |
| 859 | 861 |
| 860 call mul4x_internal | 862 call mul4x_internal |
| 861 | 863 |
| 862 » mov» rsi,QWORD PTR[40+rsp] | 864 » mov» rsi,QWORD[40+rsp] |
| 863 mov rax,1 | 865 mov rax,1 |
| 864 » mov» r15,QWORD PTR[((-48))+rsi] | 866 » mov» r15,QWORD[((-48))+rsi] |
| 865 » mov» r14,QWORD PTR[((-40))+rsi] | 867 » mov» r14,QWORD[((-40))+rsi] |
| 866 » mov» r13,QWORD PTR[((-32))+rsi] | 868 » mov» r13,QWORD[((-32))+rsi] |
| 867 » mov» r12,QWORD PTR[((-24))+rsi] | 869 » mov» r12,QWORD[((-24))+rsi] |
| 868 » mov» rbp,QWORD PTR[((-16))+rsi] | 870 » mov» rbp,QWORD[((-16))+rsi] |
| 869 » mov» rbx,QWORD PTR[((-8))+rsi] | 871 » mov» rbx,QWORD[((-8))+rsi] |
| 870 » lea» rsp,QWORD PTR[rsi] | 872 » lea» rsp,[rsi] |
| 871 $L$power5_epilogue:: | 873 $L$power5_epilogue: |
| 872 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue | 874 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue |
| 873 » mov» rsi,QWORD PTR[16+rsp] | 875 » mov» rsi,QWORD[16+rsp] |
| 874 DB 0F3h,0C3h ;repret | 876 DB 0F3h,0C3h ;repret |
| 875 $L$SEH_end_bn_power5:: | 877 $L$SEH_end_bn_power5: |
| 876 bn_power5» ENDP | |
| 877 | 878 |
| 878 PUBLIC» bn_sqr8x_internal | 879 global» bn_sqr8x_internal |
| 879 | 880 |
| 880 | 881 |
| 881 ALIGN 32 | 882 ALIGN 32 |
| 882 bn_sqr8x_internal» PROC PUBLIC | 883 bn_sqr8x_internal: |
| 883 __bn_sqr8x_internal:: | 884 __bn_sqr8x_internal: |
| 884 | 885 |
| 885 | 886 |
| 886 | 887 |
| 887 | 888 |
| 888 | 889 |
| 889 | 890 |
| 890 | 891 |
| 891 | 892 |
| 892 | 893 |
| 893 | 894 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 947 | 948 |
| 948 | 949 |
| 949 | 950 |
| 950 | 951 |
| 951 | 952 |
| 952 | 953 |
| 953 | 954 |
| 954 | 955 |
| 955 | 956 |
| 956 | 957 |
| 957 » lea» rbp,QWORD PTR[32+r10] | 958 » lea» rbp,[32+r10] |
| 958 » lea» rsi,QWORD PTR[r9*1+rsi] | 959 » lea» rsi,[r9*1+rsi] |
| 959 | 960 |
| 960 mov rcx,r9 | 961 mov rcx,r9 |
| 961 | 962 |
| 962 | 963 |
| 963 » mov» r14,QWORD PTR[((-32))+rbp*1+rsi] | 964 » mov» r14,QWORD[((-32))+rbp*1+rsi] |
| 964 » lea» rdi,QWORD PTR[((48+8))+r9*2+rsp] | 965 » lea» rdi,[((48+8))+r9*2+rsp] |
| 965 » mov» rax,QWORD PTR[((-24))+rbp*1+rsi] | 966 » mov» rax,QWORD[((-24))+rbp*1+rsi] |
| 966 » lea» rdi,QWORD PTR[((-32))+rbp*1+rdi] | 967 » lea» rdi,[((-32))+rbp*1+rdi] |
| 967 » mov» rbx,QWORD PTR[((-16))+rbp*1+rsi] | 968 » mov» rbx,QWORD[((-16))+rbp*1+rsi] |
| 968 mov r15,rax | 969 mov r15,rax |
| 969 | 970 |
| 970 mul r14 | 971 mul r14 |
| 971 mov r10,rax | 972 mov r10,rax |
| 972 mov rax,rbx | 973 mov rax,rbx |
| 973 mov r11,rdx | 974 mov r11,rdx |
| 974 » mov» QWORD PTR[((-24))+rbp*1+rdi],r10 | 975 » mov» QWORD[((-24))+rbp*1+rdi],r10 |
| 975 | 976 |
| 976 mul r14 | 977 mul r14 |
| 977 add r11,rax | 978 add r11,rax |
| 978 mov rax,rbx | 979 mov rax,rbx |
| 979 adc rdx,0 | 980 adc rdx,0 |
| 980 » mov» QWORD PTR[((-16))+rbp*1+rdi],r11 | 981 » mov» QWORD[((-16))+rbp*1+rdi],r11 |
| 981 mov r10,rdx | 982 mov r10,rdx |
| 982 | 983 |
| 983 | 984 |
| 984 » mov» rbx,QWORD PTR[((-8))+rbp*1+rsi] | 985 » mov» rbx,QWORD[((-8))+rbp*1+rsi] |
| 985 mul r15 | 986 mul r15 |
| 986 mov r12,rax | 987 mov r12,rax |
| 987 mov rax,rbx | 988 mov rax,rbx |
| 988 mov r13,rdx | 989 mov r13,rdx |
| 989 | 990 |
| 990 » lea» rcx,QWORD PTR[rbp] | 991 » lea» rcx,[rbp] |
| 991 mul r14 | 992 mul r14 |
| 992 add r10,rax | 993 add r10,rax |
| 993 mov rax,rbx | 994 mov rax,rbx |
| 994 mov r11,rdx | 995 mov r11,rdx |
| 995 adc r11,0 | 996 adc r11,0 |
| 996 add r10,r12 | 997 add r10,r12 |
| 997 adc r11,0 | 998 adc r11,0 |
| 998 » mov» QWORD PTR[((-8))+rcx*1+rdi],r10 | 999 » mov» QWORD[((-8))+rcx*1+rdi],r10 |
| 999 » jmp» $L$sqr4x_1st | 1000 » jmp» NEAR $L$sqr4x_1st |
| 1000 | 1001 |
| 1001 ALIGN 32 | 1002 ALIGN 32 |
| 1002 $L$sqr4x_1st:: | 1003 $L$sqr4x_1st: |
| 1003 » mov» rbx,QWORD PTR[rcx*1+rsi] | 1004 » mov» rbx,QWORD[rcx*1+rsi] |
| 1004 mul r15 | 1005 mul r15 |
| 1005 add r13,rax | 1006 add r13,rax |
| 1006 mov rax,rbx | 1007 mov rax,rbx |
| 1007 mov r12,rdx | 1008 mov r12,rdx |
| 1008 adc r12,0 | 1009 adc r12,0 |
| 1009 | 1010 |
| 1010 mul r14 | 1011 mul r14 |
| 1011 add r11,rax | 1012 add r11,rax |
| 1012 mov rax,rbx | 1013 mov rax,rbx |
| 1013 » mov» rbx,QWORD PTR[8+rcx*1+rsi] | 1014 » mov» rbx,QWORD[8+rcx*1+rsi] |
| 1014 mov r10,rdx | 1015 mov r10,rdx |
| 1015 adc r10,0 | 1016 adc r10,0 |
| 1016 add r11,r13 | 1017 add r11,r13 |
| 1017 adc r10,0 | 1018 adc r10,0 |
| 1018 | 1019 |
| 1019 | 1020 |
| 1020 mul r15 | 1021 mul r15 |
| 1021 add r12,rax | 1022 add r12,rax |
| 1022 mov rax,rbx | 1023 mov rax,rbx |
| 1023 » mov» QWORD PTR[rcx*1+rdi],r11 | 1024 » mov» QWORD[rcx*1+rdi],r11 |
| 1024 mov r13,rdx | 1025 mov r13,rdx |
| 1025 adc r13,0 | 1026 adc r13,0 |
| 1026 | 1027 |
| 1027 mul r14 | 1028 mul r14 |
| 1028 add r10,rax | 1029 add r10,rax |
| 1029 mov rax,rbx | 1030 mov rax,rbx |
| 1030 » mov» rbx,QWORD PTR[16+rcx*1+rsi] | 1031 » mov» rbx,QWORD[16+rcx*1+rsi] |
| 1031 mov r11,rdx | 1032 mov r11,rdx |
| 1032 adc r11,0 | 1033 adc r11,0 |
| 1033 add r10,r12 | 1034 add r10,r12 |
| 1034 adc r11,0 | 1035 adc r11,0 |
| 1035 | 1036 |
| 1036 mul r15 | 1037 mul r15 |
| 1037 add r13,rax | 1038 add r13,rax |
| 1038 mov rax,rbx | 1039 mov rax,rbx |
| 1039 » mov» QWORD PTR[8+rcx*1+rdi],r10 | 1040 » mov» QWORD[8+rcx*1+rdi],r10 |
| 1040 mov r12,rdx | 1041 mov r12,rdx |
| 1041 adc r12,0 | 1042 adc r12,0 |
| 1042 | 1043 |
| 1043 mul r14 | 1044 mul r14 |
| 1044 add r11,rax | 1045 add r11,rax |
| 1045 mov rax,rbx | 1046 mov rax,rbx |
| 1046 » mov» rbx,QWORD PTR[24+rcx*1+rsi] | 1047 » mov» rbx,QWORD[24+rcx*1+rsi] |
| 1047 mov r10,rdx | 1048 mov r10,rdx |
| 1048 adc r10,0 | 1049 adc r10,0 |
| 1049 add r11,r13 | 1050 add r11,r13 |
| 1050 adc r10,0 | 1051 adc r10,0 |
| 1051 | 1052 |
| 1052 | 1053 |
| 1053 mul r15 | 1054 mul r15 |
| 1054 add r12,rax | 1055 add r12,rax |
| 1055 mov rax,rbx | 1056 mov rax,rbx |
| 1056 » mov» QWORD PTR[16+rcx*1+rdi],r11 | 1057 » mov» QWORD[16+rcx*1+rdi],r11 |
| 1057 mov r13,rdx | 1058 mov r13,rdx |
| 1058 adc r13,0 | 1059 adc r13,0 |
| 1059 » lea» rcx,QWORD PTR[32+rcx] | 1060 » lea» rcx,[32+rcx] |
| 1060 | 1061 |
| 1061 mul r14 | 1062 mul r14 |
| 1062 add r10,rax | 1063 add r10,rax |
| 1063 mov rax,rbx | 1064 mov rax,rbx |
| 1064 mov r11,rdx | 1065 mov r11,rdx |
| 1065 adc r11,0 | 1066 adc r11,0 |
| 1066 add r10,r12 | 1067 add r10,r12 |
| 1067 adc r11,0 | 1068 adc r11,0 |
| 1068 » mov» QWORD PTR[((-8))+rcx*1+rdi],r10 | 1069 » mov» QWORD[((-8))+rcx*1+rdi],r10 |
| 1069 | 1070 |
| 1070 cmp rcx,0 | 1071 cmp rcx,0 |
| 1071 » jne» $L$sqr4x_1st | 1072 » jne» NEAR $L$sqr4x_1st |
| 1072 | 1073 |
| 1073 mul r15 | 1074 mul r15 |
| 1074 add r13,rax | 1075 add r13,rax |
| 1075 » lea» rbp,QWORD PTR[16+rbp] | 1076 » lea» rbp,[16+rbp] |
| 1076 adc rdx,0 | 1077 adc rdx,0 |
| 1077 add r13,r11 | 1078 add r13,r11 |
| 1078 adc rdx,0 | 1079 adc rdx,0 |
| 1079 | 1080 |
| 1080 » mov» QWORD PTR[rdi],r13 | 1081 » mov» QWORD[rdi],r13 |
| 1081 mov r12,rdx | 1082 mov r12,rdx |
| 1082 » mov» QWORD PTR[8+rdi],rdx | 1083 » mov» QWORD[8+rdi],rdx |
| 1083 » jmp» $L$sqr4x_outer | 1084 » jmp» NEAR $L$sqr4x_outer |
| 1084 | 1085 |
| 1085 ALIGN 32 | 1086 ALIGN 32 |
| 1086 $L$sqr4x_outer:: | 1087 $L$sqr4x_outer: |
| 1087 » mov» r14,QWORD PTR[((-32))+rbp*1+rsi] | 1088 » mov» r14,QWORD[((-32))+rbp*1+rsi] |
| 1088 » lea» rdi,QWORD PTR[((48+8))+r9*2+rsp] | 1089 » lea» rdi,[((48+8))+r9*2+rsp] |
| 1089 » mov» rax,QWORD PTR[((-24))+rbp*1+rsi] | 1090 » mov» rax,QWORD[((-24))+rbp*1+rsi] |
| 1090 » lea» rdi,QWORD PTR[((-32))+rbp*1+rdi] | 1091 » lea» rdi,[((-32))+rbp*1+rdi] |
| 1091 » mov» rbx,QWORD PTR[((-16))+rbp*1+rsi] | 1092 » mov» rbx,QWORD[((-16))+rbp*1+rsi] |
| 1092 mov r15,rax | 1093 mov r15,rax |
| 1093 | 1094 |
| 1094 mul r14 | 1095 mul r14 |
| 1095 » mov» r10,QWORD PTR[((-24))+rbp*1+rdi] | 1096 » mov» r10,QWORD[((-24))+rbp*1+rdi] |
| 1096 add r10,rax | 1097 add r10,rax |
| 1097 mov rax,rbx | 1098 mov rax,rbx |
| 1098 adc rdx,0 | 1099 adc rdx,0 |
| 1099 » mov» QWORD PTR[((-24))+rbp*1+rdi],r10 | 1100 » mov» QWORD[((-24))+rbp*1+rdi],r10 |
| 1100 mov r11,rdx | 1101 mov r11,rdx |
| 1101 | 1102 |
| 1102 mul r14 | 1103 mul r14 |
| 1103 add r11,rax | 1104 add r11,rax |
| 1104 mov rax,rbx | 1105 mov rax,rbx |
| 1105 adc rdx,0 | 1106 adc rdx,0 |
| 1106 » add» r11,QWORD PTR[((-16))+rbp*1+rdi] | 1107 » add» r11,QWORD[((-16))+rbp*1+rdi] |
| 1107 mov r10,rdx | 1108 mov r10,rdx |
| 1108 adc r10,0 | 1109 adc r10,0 |
| 1109 » mov» QWORD PTR[((-16))+rbp*1+rdi],r11 | 1110 » mov» QWORD[((-16))+rbp*1+rdi],r11 |
| 1110 | 1111 |
| 1111 xor r12,r12 | 1112 xor r12,r12 |
| 1112 | 1113 |
| 1113 » mov» rbx,QWORD PTR[((-8))+rbp*1+rsi] | 1114 » mov» rbx,QWORD[((-8))+rbp*1+rsi] |
| 1114 mul r15 | 1115 mul r15 |
| 1115 add r12,rax | 1116 add r12,rax |
| 1116 mov rax,rbx | 1117 mov rax,rbx |
| 1117 adc rdx,0 | 1118 adc rdx,0 |
| 1118 » add» r12,QWORD PTR[((-8))+rbp*1+rdi] | 1119 » add» r12,QWORD[((-8))+rbp*1+rdi] |
| 1119 mov r13,rdx | 1120 mov r13,rdx |
| 1120 adc r13,0 | 1121 adc r13,0 |
| 1121 | 1122 |
| 1122 mul r14 | 1123 mul r14 |
| 1123 add r10,rax | 1124 add r10,rax |
| 1124 mov rax,rbx | 1125 mov rax,rbx |
| 1125 adc rdx,0 | 1126 adc rdx,0 |
| 1126 add r10,r12 | 1127 add r10,r12 |
| 1127 mov r11,rdx | 1128 mov r11,rdx |
| 1128 adc r11,0 | 1129 adc r11,0 |
| 1129 » mov» QWORD PTR[((-8))+rbp*1+rdi],r10 | 1130 » mov» QWORD[((-8))+rbp*1+rdi],r10 |
| 1130 | 1131 |
| 1131 » lea» rcx,QWORD PTR[rbp] | 1132 » lea» rcx,[rbp] |
| 1132 » jmp» $L$sqr4x_inner | 1133 » jmp» NEAR $L$sqr4x_inner |
| 1133 | 1134 |
| 1134 ALIGN 32 | 1135 ALIGN 32 |
| 1135 $L$sqr4x_inner:: | 1136 $L$sqr4x_inner: |
| 1136 » mov» rbx,QWORD PTR[rcx*1+rsi] | 1137 » mov» rbx,QWORD[rcx*1+rsi] |
| 1137 mul r15 | 1138 mul r15 |
| 1138 add r13,rax | 1139 add r13,rax |
| 1139 mov rax,rbx | 1140 mov rax,rbx |
| 1140 mov r12,rdx | 1141 mov r12,rdx |
| 1141 adc r12,0 | 1142 adc r12,0 |
| 1142 » add» r13,QWORD PTR[rcx*1+rdi] | 1143 » add» r13,QWORD[rcx*1+rdi] |
| 1143 adc r12,0 | 1144 adc r12,0 |
| 1144 | 1145 |
| 1145 DB» 067h | 1146 DB» 0x67 |
| 1146 mul r14 | 1147 mul r14 |
| 1147 add r11,rax | 1148 add r11,rax |
| 1148 mov rax,rbx | 1149 mov rax,rbx |
| 1149 » mov» rbx,QWORD PTR[8+rcx*1+rsi] | 1150 » mov» rbx,QWORD[8+rcx*1+rsi] |
| 1150 mov r10,rdx | 1151 mov r10,rdx |
| 1151 adc r10,0 | 1152 adc r10,0 |
| 1152 add r11,r13 | 1153 add r11,r13 |
| 1153 adc r10,0 | 1154 adc r10,0 |
| 1154 | 1155 |
| 1155 mul r15 | 1156 mul r15 |
| 1156 add r12,rax | 1157 add r12,rax |
| 1157 » mov» QWORD PTR[rcx*1+rdi],r11 | 1158 » mov» QWORD[rcx*1+rdi],r11 |
| 1158 mov rax,rbx | 1159 mov rax,rbx |
| 1159 mov r13,rdx | 1160 mov r13,rdx |
| 1160 adc r13,0 | 1161 adc r13,0 |
| 1161 » add» r12,QWORD PTR[8+rcx*1+rdi] | 1162 » add» r12,QWORD[8+rcx*1+rdi] |
| 1162 » lea» rcx,QWORD PTR[16+rcx] | 1163 » lea» rcx,[16+rcx] |
| 1163 adc r13,0 | 1164 adc r13,0 |
| 1164 | 1165 |
| 1165 mul r14 | 1166 mul r14 |
| 1166 add r10,rax | 1167 add r10,rax |
| 1167 mov rax,rbx | 1168 mov rax,rbx |
| 1168 adc rdx,0 | 1169 adc rdx,0 |
| 1169 add r10,r12 | 1170 add r10,r12 |
| 1170 mov r11,rdx | 1171 mov r11,rdx |
| 1171 adc r11,0 | 1172 adc r11,0 |
| 1172 » mov» QWORD PTR[((-8))+rcx*1+rdi],r10 | 1173 » mov» QWORD[((-8))+rcx*1+rdi],r10 |
| 1173 | 1174 |
| 1174 cmp rcx,0 | 1175 cmp rcx,0 |
| 1175 » jne» $L$sqr4x_inner | 1176 » jne» NEAR $L$sqr4x_inner |
| 1176 | 1177 |
| 1177 DB» 067h | 1178 DB» 0x67 |
| 1178 mul r15 | 1179 mul r15 |
| 1179 add r13,rax | 1180 add r13,rax |
| 1180 adc rdx,0 | 1181 adc rdx,0 |
| 1181 add r13,r11 | 1182 add r13,r11 |
| 1182 adc rdx,0 | 1183 adc rdx,0 |
| 1183 | 1184 |
| 1184 » mov» QWORD PTR[rdi],r13 | 1185 » mov» QWORD[rdi],r13 |
| 1185 mov r12,rdx | 1186 mov r12,rdx |
| 1186 » mov» QWORD PTR[8+rdi],rdx | 1187 » mov» QWORD[8+rdi],rdx |
| 1187 | 1188 |
| 1188 add rbp,16 | 1189 add rbp,16 |
| 1189 » jnz» $L$sqr4x_outer | 1190 » jnz» NEAR $L$sqr4x_outer |
| 1190 | 1191 |
| 1191 | 1192 |
| 1192 » mov» r14,QWORD PTR[((-32))+rsi] | 1193 » mov» r14,QWORD[((-32))+rsi] |
| 1193 » lea» rdi,QWORD PTR[((48+8))+r9*2+rsp] | 1194 » lea» rdi,[((48+8))+r9*2+rsp] |
| 1194 » mov» rax,QWORD PTR[((-24))+rsi] | 1195 » mov» rax,QWORD[((-24))+rsi] |
| 1195 » lea» rdi,QWORD PTR[((-32))+rbp*1+rdi] | 1196 » lea» rdi,[((-32))+rbp*1+rdi] |
| 1196 » mov» rbx,QWORD PTR[((-16))+rsi] | 1197 » mov» rbx,QWORD[((-16))+rsi] |
| 1197 mov r15,rax | 1198 mov r15,rax |
| 1198 | 1199 |
| 1199 mul r14 | 1200 mul r14 |
| 1200 add r10,rax | 1201 add r10,rax |
| 1201 mov rax,rbx | 1202 mov rax,rbx |
| 1202 mov r11,rdx | 1203 mov r11,rdx |
| 1203 adc r11,0 | 1204 adc r11,0 |
| 1204 | 1205 |
| 1205 mul r14 | 1206 mul r14 |
| 1206 add r11,rax | 1207 add r11,rax |
| 1207 mov rax,rbx | 1208 mov rax,rbx |
| 1208 » mov» QWORD PTR[((-24))+rdi],r10 | 1209 » mov» QWORD[((-24))+rdi],r10 |
| 1209 mov r10,rdx | 1210 mov r10,rdx |
| 1210 adc r10,0 | 1211 adc r10,0 |
| 1211 add r11,r13 | 1212 add r11,r13 |
| 1212 » mov» rbx,QWORD PTR[((-8))+rsi] | 1213 » mov» rbx,QWORD[((-8))+rsi] |
| 1213 adc r10,0 | 1214 adc r10,0 |
| 1214 | 1215 |
| 1215 mul r15 | 1216 mul r15 |
| 1216 add r12,rax | 1217 add r12,rax |
| 1217 mov rax,rbx | 1218 mov rax,rbx |
| 1218 » mov» QWORD PTR[((-16))+rdi],r11 | 1219 » mov» QWORD[((-16))+rdi],r11 |
| 1219 mov r13,rdx | 1220 mov r13,rdx |
| 1220 adc r13,0 | 1221 adc r13,0 |
| 1221 | 1222 |
| 1222 mul r14 | 1223 mul r14 |
| 1223 add r10,rax | 1224 add r10,rax |
| 1224 mov rax,rbx | 1225 mov rax,rbx |
| 1225 mov r11,rdx | 1226 mov r11,rdx |
| 1226 adc r11,0 | 1227 adc r11,0 |
| 1227 add r10,r12 | 1228 add r10,r12 |
| 1228 adc r11,0 | 1229 adc r11,0 |
| 1229 » mov» QWORD PTR[((-8))+rdi],r10 | 1230 » mov» QWORD[((-8))+rdi],r10 |
| 1230 | 1231 |
| 1231 mul r15 | 1232 mul r15 |
| 1232 add r13,rax | 1233 add r13,rax |
| 1233 » mov» rax,QWORD PTR[((-16))+rsi] | 1234 » mov» rax,QWORD[((-16))+rsi] |
| 1234 adc rdx,0 | 1235 adc rdx,0 |
| 1235 add r13,r11 | 1236 add r13,r11 |
| 1236 adc rdx,0 | 1237 adc rdx,0 |
| 1237 | 1238 |
| 1238 » mov» QWORD PTR[rdi],r13 | 1239 » mov» QWORD[rdi],r13 |
| 1239 mov r12,rdx | 1240 mov r12,rdx |
| 1240 » mov» QWORD PTR[8+rdi],rdx | 1241 » mov» QWORD[8+rdi],rdx |
| 1241 | 1242 |
| 1242 mul rbx | 1243 mul rbx |
| 1243 add rbp,16 | 1244 add rbp,16 |
| 1244 xor r14,r14 | 1245 xor r14,r14 |
| 1245 sub rbp,r9 | 1246 sub rbp,r9 |
| 1246 xor r15,r15 | 1247 xor r15,r15 |
| 1247 | 1248 |
| 1248 add rax,r12 | 1249 add rax,r12 |
| 1249 adc rdx,0 | 1250 adc rdx,0 |
| 1250 » mov» QWORD PTR[8+rdi],rax | 1251 » mov» QWORD[8+rdi],rax |
| 1251 » mov» QWORD PTR[16+rdi],rdx | 1252 » mov» QWORD[16+rdi],rdx |
| 1252 » mov» QWORD PTR[24+rdi],r15 | 1253 » mov» QWORD[24+rdi],r15 |
| 1253 | 1254 |
| 1254 » mov» rax,QWORD PTR[((-16))+rbp*1+rsi] | 1255 » mov» rax,QWORD[((-16))+rbp*1+rsi] |
| 1255 » lea» rdi,QWORD PTR[((48+8))+rsp] | 1256 » lea» rdi,[((48+8))+rsp] |
| 1256 xor r10,r10 | 1257 xor r10,r10 |
| 1257 » mov» r11,QWORD PTR[8+rdi] | 1258 » mov» r11,QWORD[8+rdi] |
| 1258 | 1259 |
| 1259 » lea» r12,QWORD PTR[r10*2+r14] | 1260 » lea» r12,[r10*2+r14] |
| 1260 » shr» r10,63 | 1261 » shr» r10,63 |
| 1261 » lea» r13,QWORD PTR[r11*2+rcx] | 1262 » lea» r13,[r11*2+rcx] |
| 1262 » shr» r11,63 | 1263 » shr» r11,63 |
| 1263 » or» r13,r10 | 1264 » or» r13,r10 |
| 1264 » mov» r10,QWORD PTR[16+rdi] | 1265 » mov» r10,QWORD[16+rdi] |
| 1265 » mov» r14,r11 | 1266 » mov» r14,r11 |
| 1266 » mul» rax | 1267 » mul» rax |
| 1267 » neg» r15 | 1268 » neg» r15 |
| 1268 » mov» r11,QWORD PTR[24+rdi] | 1269 » mov» r11,QWORD[24+rdi] |
| 1269 » adc» r12,rax | 1270 » adc» r12,rax |
| 1270 » mov» rax,QWORD PTR[((-8))+rbp*1+rsi] | 1271 » mov» rax,QWORD[((-8))+rbp*1+rsi] |
| 1271 » mov» QWORD PTR[rdi],r12 | 1272 » mov» QWORD[rdi],r12 |
| 1272 » adc» r13,rdx | 1273 » adc» r13,rdx |
| 1273 | 1274 |
| 1274 » lea» rbx,QWORD PTR[r10*2+r14] | 1275 » lea» rbx,[r10*2+r14] |
| 1275 » mov» QWORD PTR[8+rdi],r13 | 1276 » mov» QWORD[8+rdi],r13 |
| 1276 » sbb» r15,r15 | 1277 » sbb» r15,r15 |
| 1277 » shr» r10,63 | 1278 » shr» r10,63 |
| 1278 » lea» r8,QWORD PTR[r11*2+rcx] | 1279 » lea» r8,[r11*2+rcx] |
| 1279 » shr» r11,63 | 1280 » shr» r11,63 |
| 1280 » or» r8,r10 | 1281 » or» r8,r10 |
| 1281 » mov» r10,QWORD PTR[32+rdi] | 1282 » mov» r10,QWORD[32+rdi] |
| 1282 » mov» r14,r11 | 1283 » mov» r14,r11 |
| 1283 » mul» rax | 1284 » mul» rax |
| 1284 » neg» r15 | 1285 » neg» r15 |
| 1285 » mov» r11,QWORD PTR[40+rdi] | 1286 » mov» r11,QWORD[40+rdi] |
| 1286 » adc» rbx,rax | 1287 » adc» rbx,rax |
| 1287 » mov» rax,QWORD PTR[rbp*1+rsi] | 1288 » mov» rax,QWORD[rbp*1+rsi] |
| 1288 » mov» QWORD PTR[16+rdi],rbx | 1289 » mov» QWORD[16+rdi],rbx |
| 1289 » adc» r8,rdx | 1290 » adc» r8,rdx |
| 1290 » lea» rbp,QWORD PTR[16+rbp] | 1291 » lea» rbp,[16+rbp] |
| 1291 » mov» QWORD PTR[24+rdi],r8 | 1292 » mov» QWORD[24+rdi],r8 |
| 1292 » sbb» r15,r15 | 1293 » sbb» r15,r15 |
| 1293 » lea» rdi,QWORD PTR[64+rdi] | 1294 » lea» rdi,[64+rdi] |
| 1294 » jmp» $L$sqr4x_shift_n_add | 1295 » jmp» NEAR $L$sqr4x_shift_n_add |
| 1295 | 1296 |
| 1296 ALIGN 32 | 1297 ALIGN 32 |
| 1297 $L$sqr4x_shift_n_add:: | 1298 $L$sqr4x_shift_n_add: |
| 1298 » lea» r12,QWORD PTR[r10*2+r14] | 1299 » lea» r12,[r10*2+r14] |
| 1299 » shr» r10,63 | 1300 » shr» r10,63 |
| 1300 » lea» r13,QWORD PTR[r11*2+rcx] | 1301 » lea» r13,[r11*2+rcx] |
| 1301 » shr» r11,63 | 1302 » shr» r11,63 |
| 1302 » or» r13,r10 | 1303 » or» r13,r10 |
| 1303 » mov» r10,QWORD PTR[((-16))+rdi] | 1304 » mov» r10,QWORD[((-16))+rdi] |
| 1304 » mov» r14,r11 | 1305 » mov» r14,r11 |
| 1305 » mul» rax | 1306 » mul» rax |
| 1306 » neg» r15 | 1307 » neg» r15 |
| 1307 » mov» r11,QWORD PTR[((-8))+rdi] | 1308 » mov» r11,QWORD[((-8))+rdi] |
| 1308 » adc» r12,rax | 1309 » adc» r12,rax |
| 1309 » mov» rax,QWORD PTR[((-8))+rbp*1+rsi] | 1310 » mov» rax,QWORD[((-8))+rbp*1+rsi] |
| 1310 » mov» QWORD PTR[((-32))+rdi],r12 | 1311 » mov» QWORD[((-32))+rdi],r12 |
| 1311 » adc» r13,rdx | 1312 » adc» r13,rdx |
| 1312 | 1313 |
| 1313 » lea» rbx,QWORD PTR[r10*2+r14] | 1314 » lea» rbx,[r10*2+r14] |
| 1314 » mov» QWORD PTR[((-24))+rdi],r13 | 1315 » mov» QWORD[((-24))+rdi],r13 |
| 1315 » sbb» r15,r15 | 1316 » sbb» r15,r15 |
| 1316 » shr» r10,63 | 1317 » shr» r10,63 |
| 1317 » lea» r8,QWORD PTR[r11*2+rcx] | 1318 » lea» r8,[r11*2+rcx] |
| 1318 » shr» r11,63 | 1319 » shr» r11,63 |
| 1319 » or» r8,r10 | 1320 » or» r8,r10 |
| 1320 » mov» r10,QWORD PTR[rdi] | 1321 » mov» r10,QWORD[rdi] |
| 1321 » mov» r14,r11 | 1322 » mov» r14,r11 |
| 1322 » mul» rax | 1323 » mul» rax |
| 1323 » neg» r15 | 1324 » neg» r15 |
| 1324 » mov» r11,QWORD PTR[8+rdi] | 1325 » mov» r11,QWORD[8+rdi] |
| 1325 » adc» rbx,rax | 1326 » adc» rbx,rax |
| 1326 » mov» rax,QWORD PTR[rbp*1+rsi] | 1327 » mov» rax,QWORD[rbp*1+rsi] |
| 1327 » mov» QWORD PTR[((-16))+rdi],rbx | 1328 » mov» QWORD[((-16))+rdi],rbx |
| 1328 » adc» r8,rdx | 1329 » adc» r8,rdx |
| 1329 | 1330 |
| 1330 » lea» r12,QWORD PTR[r10*2+r14] | 1331 » lea» r12,[r10*2+r14] |
| 1331 » mov» QWORD PTR[((-8))+rdi],r8 | 1332 » mov» QWORD[((-8))+rdi],r8 |
| 1332 » sbb» r15,r15 | 1333 » sbb» r15,r15 |
| 1333 » shr» r10,63 | 1334 » shr» r10,63 |
| 1334 » lea» r13,QWORD PTR[r11*2+rcx] | 1335 » lea» r13,[r11*2+rcx] |
| 1335 » shr» r11,63 | 1336 » shr» r11,63 |
| 1336 » or» r13,r10 | 1337 » or» r13,r10 |
| 1337 » mov» r10,QWORD PTR[16+rdi] | 1338 » mov» r10,QWORD[16+rdi] |
| 1338 » mov» r14,r11 | 1339 » mov» r14,r11 |
| 1339 » mul» rax | 1340 » mul» rax |
| 1340 » neg» r15 | 1341 » neg» r15 |
| 1341 » mov» r11,QWORD PTR[24+rdi] | 1342 » mov» r11,QWORD[24+rdi] |
| 1342 » adc» r12,rax | 1343 » adc» r12,rax |
| 1343 » mov» rax,QWORD PTR[8+rbp*1+rsi] | 1344 » mov» rax,QWORD[8+rbp*1+rsi] |
| 1344 » mov» QWORD PTR[rdi],r12 | 1345 » mov» QWORD[rdi],r12 |
| 1345 » adc» r13,rdx | 1346 » adc» r13,rdx |
| 1346 | 1347 |
| 1347 » lea» rbx,QWORD PTR[r10*2+r14] | 1348 » lea» rbx,[r10*2+r14] |
| 1348 » mov» QWORD PTR[8+rdi],r13 | 1349 » mov» QWORD[8+rdi],r13 |
| 1349 » sbb» r15,r15 | 1350 » sbb» r15,r15 |
| 1350 » shr» r10,63 | 1351 » shr» r10,63 |
| 1351 » lea» r8,QWORD PTR[r11*2+rcx] | 1352 » lea» r8,[r11*2+rcx] |
| 1352 » shr» r11,63 | 1353 » shr» r11,63 |
| 1353 » or» r8,r10 | 1354 » or» r8,r10 |
| 1354 » mov» r10,QWORD PTR[32+rdi] | 1355 » mov» r10,QWORD[32+rdi] |
| 1355 » mov» r14,r11 | 1356 » mov» r14,r11 |
| 1356 » mul» rax | 1357 » mul» rax |
| 1357 » neg» r15 | 1358 » neg» r15 |
| 1358 » mov» r11,QWORD PTR[40+rdi] | 1359 » mov» r11,QWORD[40+rdi] |
| 1359 » adc» rbx,rax | 1360 » adc» rbx,rax |
| 1360 » mov» rax,QWORD PTR[16+rbp*1+rsi] | 1361 » mov» rax,QWORD[16+rbp*1+rsi] |
| 1361 » mov» QWORD PTR[16+rdi],rbx | 1362 » mov» QWORD[16+rdi],rbx |
| 1362 » adc» r8,rdx | 1363 » adc» r8,rdx |
| 1363 » mov» QWORD PTR[24+rdi],r8 | 1364 » mov» QWORD[24+rdi],r8 |
| 1364 » sbb» r15,r15 | 1365 » sbb» r15,r15 |
| 1365 » lea» rdi,QWORD PTR[64+rdi] | 1366 » lea» rdi,[64+rdi] |
| 1366 add rbp,32 | 1367 add rbp,32 |
| 1367 » jnz» $L$sqr4x_shift_n_add | 1368 » jnz» NEAR $L$sqr4x_shift_n_add |
| 1368 | 1369 |
| 1369 » lea» r12,QWORD PTR[r10*2+r14] | 1370 » lea» r12,[r10*2+r14] |
| 1370 DB» 067h | 1371 DB» 0x67 |
| 1371 » shr» r10,63 | 1372 » shr» r10,63 |
| 1372 » lea» r13,QWORD PTR[r11*2+rcx] | 1373 » lea» r13,[r11*2+rcx] |
| 1373 » shr» r11,63 | 1374 » shr» r11,63 |
| 1374 » or» r13,r10 | 1375 » or» r13,r10 |
| 1375 » mov» r10,QWORD PTR[((-16))+rdi] | 1376 » mov» r10,QWORD[((-16))+rdi] |
| 1376 » mov» r14,r11 | 1377 » mov» r14,r11 |
| 1377 » mul» rax | 1378 » mul» rax |
| 1378 » neg» r15 | 1379 » neg» r15 |
| 1379 » mov» r11,QWORD PTR[((-8))+rdi] | 1380 » mov» r11,QWORD[((-8))+rdi] |
| 1380 » adc» r12,rax | 1381 » adc» r12,rax |
| 1381 » mov» rax,QWORD PTR[((-8))+rsi] | 1382 » mov» rax,QWORD[((-8))+rsi] |
| 1382 » mov» QWORD PTR[((-32))+rdi],r12 | 1383 » mov» QWORD[((-32))+rdi],r12 |
| 1383 » adc» r13,rdx | 1384 » adc» r13,rdx |
| 1384 | 1385 |
| 1385 » lea» rbx,QWORD PTR[r10*2+r14] | 1386 » lea» rbx,[r10*2+r14] |
| 1386 » mov» QWORD PTR[((-24))+rdi],r13 | 1387 » mov» QWORD[((-24))+rdi],r13 |
| 1387 » sbb» r15,r15 | 1388 » sbb» r15,r15 |
| 1388 » shr» r10,63 | 1389 » shr» r10,63 |
| 1389 » lea» r8,QWORD PTR[r11*2+rcx] | 1390 » lea» r8,[r11*2+rcx] |
| 1390 » shr» r11,63 | 1391 » shr» r11,63 |
| 1391 » or» r8,r10 | 1392 » or» r8,r10 |
| 1392 » mul» rax | 1393 » mul» rax |
| 1393 » neg» r15 | 1394 » neg» r15 |
| 1394 » adc» rbx,rax | 1395 » adc» rbx,rax |
| 1395 » adc» r8,rdx | 1396 » adc» r8,rdx |
| 1396 » mov» QWORD PTR[((-16))+rdi],rbx | 1397 » mov» QWORD[((-16))+rdi],rbx |
| 1397 » mov» QWORD PTR[((-8))+rdi],r8 | 1398 » mov» QWORD[((-8))+rdi],r8 |
| 1398 DB 102,72,15,126,213 | 1399 DB 102,72,15,126,213 |
| 1399 sqr8x_reduction:: | 1400 sqr8x_reduction: |
| 1400 xor rax,rax | 1401 xor rax,rax |
| 1401 » lea» rcx,QWORD PTR[r9*2+rbp] | 1402 » lea» rcx,[r9*2+rbp] |
| 1402 » lea» rdx,QWORD PTR[((48+8))+r9*2+rsp] | 1403 » lea» rdx,[((48+8))+r9*2+rsp] |
| 1403 » mov» QWORD PTR[((0+8))+rsp],rcx | 1404 » mov» QWORD[((0+8))+rsp],rcx |
| 1404 » lea» rdi,QWORD PTR[((48+8))+r9*1+rsp] | 1405 » lea» rdi,[((48+8))+r9*1+rsp] |
| 1405 » mov» QWORD PTR[((8+8))+rsp],rdx | 1406 » mov» QWORD[((8+8))+rsp],rdx |
| 1406 neg r9 | 1407 neg r9 |
| 1407 » jmp» $L$8x_reduction_loop | 1408 » jmp» NEAR $L$8x_reduction_loop |
| 1408 | 1409 |
| 1409 ALIGN 32 | 1410 ALIGN 32 |
| 1410 $L$8x_reduction_loop:: | 1411 $L$8x_reduction_loop: |
| 1411 » lea» rdi,QWORD PTR[r9*1+rdi] | 1412 » lea» rdi,[r9*1+rdi] |
| 1412 DB» 066h | 1413 DB» 0x66 |
| 1413 » mov» rbx,QWORD PTR[rdi] | 1414 » mov» rbx,QWORD[rdi] |
| 1414 » mov» r9,QWORD PTR[8+rdi] | 1415 » mov» r9,QWORD[8+rdi] |
| 1415 » mov» r10,QWORD PTR[16+rdi] | 1416 » mov» r10,QWORD[16+rdi] |
| 1416 » mov» r11,QWORD PTR[24+rdi] | 1417 » mov» r11,QWORD[24+rdi] |
| 1417 » mov» r12,QWORD PTR[32+rdi] | 1418 » mov» r12,QWORD[32+rdi] |
| 1418 » mov» r13,QWORD PTR[40+rdi] | 1419 » mov» r13,QWORD[40+rdi] |
| 1419 » mov» r14,QWORD PTR[48+rdi] | 1420 » mov» r14,QWORD[48+rdi] |
| 1420 » mov» r15,QWORD PTR[56+rdi] | 1421 » mov» r15,QWORD[56+rdi] |
| 1421 » mov» QWORD PTR[rdx],rax | 1422 » mov» QWORD[rdx],rax |
| 1422 » lea» rdi,QWORD PTR[64+rdi] | 1423 » lea» rdi,[64+rdi] |
| 1423 | 1424 |
| 1424 DB» 067h | 1425 DB» 0x67 |
| 1425 mov r8,rbx | 1426 mov r8,rbx |
| 1426 » imul» rbx,QWORD PTR[((32+8))+rsp] | 1427 » imul» rbx,QWORD[((32+8))+rsp] |
| 1427 » mov» rax,QWORD PTR[rbp] | 1428 » mov» rax,QWORD[rbp] |
| 1428 mov ecx,8 | 1429 mov ecx,8 |
| 1429 » jmp» $L$8x_reduce | 1430 » jmp» NEAR $L$8x_reduce |
| 1430 | 1431 |
| 1431 ALIGN 32 | 1432 ALIGN 32 |
| 1432 $L$8x_reduce:: | 1433 $L$8x_reduce: |
| 1433 » mul» rbx | 1434 » mul» rbx |
| 1434 » mov» rax,QWORD PTR[16+rbp] | 1435 » mov» rax,QWORD[16+rbp] |
| 1435 neg r8 | 1436 neg r8 |
| 1436 mov r8,rdx | 1437 mov r8,rdx |
| 1437 adc r8,0 | 1438 adc r8,0 |
| 1438 | 1439 |
| 1439 mul rbx | 1440 mul rbx |
| 1440 add r9,rax | 1441 add r9,rax |
| 1441 » mov» rax,QWORD PTR[32+rbp] | 1442 » mov» rax,QWORD[32+rbp] |
| 1442 adc rdx,0 | 1443 adc rdx,0 |
| 1443 add r8,r9 | 1444 add r8,r9 |
| 1444 » mov» QWORD PTR[((48-8+8))+rcx*8+rsp],rbx | 1445 » mov» QWORD[((48-8+8))+rcx*8+rsp],rbx |
| 1445 mov r9,rdx | 1446 mov r9,rdx |
| 1446 adc r9,0 | 1447 adc r9,0 |
| 1447 | 1448 |
| 1448 mul rbx | 1449 mul rbx |
| 1449 add r10,rax | 1450 add r10,rax |
| 1450 » mov» rax,QWORD PTR[48+rbp] | 1451 » mov» rax,QWORD[48+rbp] |
| 1451 adc rdx,0 | 1452 adc rdx,0 |
| 1452 add r9,r10 | 1453 add r9,r10 |
| 1453 » mov» rsi,QWORD PTR[((32+8))+rsp] | 1454 » mov» rsi,QWORD[((32+8))+rsp] |
| 1454 mov r10,rdx | 1455 mov r10,rdx |
| 1455 adc r10,0 | 1456 adc r10,0 |
| 1456 | 1457 |
| 1457 mul rbx | 1458 mul rbx |
| 1458 add r11,rax | 1459 add r11,rax |
| 1459 » mov» rax,QWORD PTR[64+rbp] | 1460 » mov» rax,QWORD[64+rbp] |
| 1460 adc rdx,0 | 1461 adc rdx,0 |
| 1461 imul rsi,r8 | 1462 imul rsi,r8 |
| 1462 add r10,r11 | 1463 add r10,r11 |
| 1463 mov r11,rdx | 1464 mov r11,rdx |
| 1464 adc r11,0 | 1465 adc r11,0 |
| 1465 | 1466 |
| 1466 mul rbx | 1467 mul rbx |
| 1467 add r12,rax | 1468 add r12,rax |
| 1468 » mov» rax,QWORD PTR[80+rbp] | 1469 » mov» rax,QWORD[80+rbp] |
| 1469 adc rdx,0 | 1470 adc rdx,0 |
| 1470 add r11,r12 | 1471 add r11,r12 |
| 1471 mov r12,rdx | 1472 mov r12,rdx |
| 1472 adc r12,0 | 1473 adc r12,0 |
| 1473 | 1474 |
| 1474 mul rbx | 1475 mul rbx |
| 1475 add r13,rax | 1476 add r13,rax |
| 1476 » mov» rax,QWORD PTR[96+rbp] | 1477 » mov» rax,QWORD[96+rbp] |
| 1477 adc rdx,0 | 1478 adc rdx,0 |
| 1478 add r12,r13 | 1479 add r12,r13 |
| 1479 mov r13,rdx | 1480 mov r13,rdx |
| 1480 adc r13,0 | 1481 adc r13,0 |
| 1481 | 1482 |
| 1482 mul rbx | 1483 mul rbx |
| 1483 add r14,rax | 1484 add r14,rax |
| 1484 » mov» rax,QWORD PTR[112+rbp] | 1485 » mov» rax,QWORD[112+rbp] |
| 1485 adc rdx,0 | 1486 adc rdx,0 |
| 1486 add r13,r14 | 1487 add r13,r14 |
| 1487 mov r14,rdx | 1488 mov r14,rdx |
| 1488 adc r14,0 | 1489 adc r14,0 |
| 1489 | 1490 |
| 1490 mul rbx | 1491 mul rbx |
| 1491 mov rbx,rsi | 1492 mov rbx,rsi |
| 1492 add r15,rax | 1493 add r15,rax |
| 1493 » mov» rax,QWORD PTR[rbp] | 1494 » mov» rax,QWORD[rbp] |
| 1494 adc rdx,0 | 1495 adc rdx,0 |
| 1495 add r14,r15 | 1496 add r14,r15 |
| 1496 mov r15,rdx | 1497 mov r15,rdx |
| 1497 adc r15,0 | 1498 adc r15,0 |
| 1498 | 1499 |
| 1499 dec ecx | 1500 dec ecx |
| 1500 » jnz» $L$8x_reduce | 1501 » jnz» NEAR $L$8x_reduce |
| 1501 | 1502 |
| 1502 » lea» rbp,QWORD PTR[128+rbp] | 1503 » lea» rbp,[128+rbp] |
| 1503 xor rax,rax | 1504 xor rax,rax |
| 1504 » mov» rdx,QWORD PTR[((8+8))+rsp] | 1505 » mov» rdx,QWORD[((8+8))+rsp] |
| 1505 » cmp» rbp,QWORD PTR[((0+8))+rsp] | 1506 » cmp» rbp,QWORD[((0+8))+rsp] |
| 1506 » jae» $L$8x_no_tail | 1507 » jae» NEAR $L$8x_no_tail |
| 1507 | 1508 |
| 1508 DB» 066h | 1509 DB» 0x66 |
| 1509 » add» r8,QWORD PTR[rdi] | 1510 » add» r8,QWORD[rdi] |
| 1510 » adc» r9,QWORD PTR[8+rdi] | 1511 » adc» r9,QWORD[8+rdi] |
| 1511 » adc» r10,QWORD PTR[16+rdi] | 1512 » adc» r10,QWORD[16+rdi] |
| 1512 » adc» r11,QWORD PTR[24+rdi] | 1513 » adc» r11,QWORD[24+rdi] |
| 1513 » adc» r12,QWORD PTR[32+rdi] | 1514 » adc» r12,QWORD[32+rdi] |
| 1514 » adc» r13,QWORD PTR[40+rdi] | 1515 » adc» r13,QWORD[40+rdi] |
| 1515 » adc» r14,QWORD PTR[48+rdi] | 1516 » adc» r14,QWORD[48+rdi] |
| 1516 » adc» r15,QWORD PTR[56+rdi] | 1517 » adc» r15,QWORD[56+rdi] |
| 1517 sbb rsi,rsi | 1518 sbb rsi,rsi |
| 1518 | 1519 |
| 1519 » mov» rbx,QWORD PTR[((48+56+8))+rsp] | 1520 » mov» rbx,QWORD[((48+56+8))+rsp] |
| 1520 mov ecx,8 | 1521 mov ecx,8 |
| 1521 » mov» rax,QWORD PTR[rbp] | 1522 » mov» rax,QWORD[rbp] |
| 1522 » jmp» $L$8x_tail | 1523 » jmp» NEAR $L$8x_tail |
| 1523 | 1524 |
| 1524 ALIGN 32 | 1525 ALIGN 32 |
| 1525 $L$8x_tail:: | 1526 $L$8x_tail: |
| 1526 mul rbx | 1527 mul rbx |
| 1527 add r8,rax | 1528 add r8,rax |
| 1528 » mov» rax,QWORD PTR[16+rbp] | 1529 » mov» rax,QWORD[16+rbp] |
| 1529 » mov» QWORD PTR[rdi],r8 | 1530 » mov» QWORD[rdi],r8 |
| 1530 mov r8,rdx | 1531 mov r8,rdx |
| 1531 adc r8,0 | 1532 adc r8,0 |
| 1532 | 1533 |
| 1533 mul rbx | 1534 mul rbx |
| 1534 add r9,rax | 1535 add r9,rax |
| 1535 » mov» rax,QWORD PTR[32+rbp] | 1536 » mov» rax,QWORD[32+rbp] |
| 1536 adc rdx,0 | 1537 adc rdx,0 |
| 1537 add r8,r9 | 1538 add r8,r9 |
| 1538 » lea» rdi,QWORD PTR[8+rdi] | 1539 » lea» rdi,[8+rdi] |
| 1539 mov r9,rdx | 1540 mov r9,rdx |
| 1540 adc r9,0 | 1541 adc r9,0 |
| 1541 | 1542 |
| 1542 mul rbx | 1543 mul rbx |
| 1543 add r10,rax | 1544 add r10,rax |
| 1544 » mov» rax,QWORD PTR[48+rbp] | 1545 » mov» rax,QWORD[48+rbp] |
| 1545 adc rdx,0 | 1546 adc rdx,0 |
| 1546 add r9,r10 | 1547 add r9,r10 |
| 1547 mov r10,rdx | 1548 mov r10,rdx |
| 1548 adc r10,0 | 1549 adc r10,0 |
| 1549 | 1550 |
| 1550 mul rbx | 1551 mul rbx |
| 1551 add r11,rax | 1552 add r11,rax |
| 1552 » mov» rax,QWORD PTR[64+rbp] | 1553 » mov» rax,QWORD[64+rbp] |
| 1553 adc rdx,0 | 1554 adc rdx,0 |
| 1554 add r10,r11 | 1555 add r10,r11 |
| 1555 mov r11,rdx | 1556 mov r11,rdx |
| 1556 adc r11,0 | 1557 adc r11,0 |
| 1557 | 1558 |
| 1558 mul rbx | 1559 mul rbx |
| 1559 add r12,rax | 1560 add r12,rax |
| 1560 » mov» rax,QWORD PTR[80+rbp] | 1561 » mov» rax,QWORD[80+rbp] |
| 1561 adc rdx,0 | 1562 adc rdx,0 |
| 1562 add r11,r12 | 1563 add r11,r12 |
| 1563 mov r12,rdx | 1564 mov r12,rdx |
| 1564 adc r12,0 | 1565 adc r12,0 |
| 1565 | 1566 |
| 1566 mul rbx | 1567 mul rbx |
| 1567 add r13,rax | 1568 add r13,rax |
| 1568 » mov» rax,QWORD PTR[96+rbp] | 1569 » mov» rax,QWORD[96+rbp] |
| 1569 adc rdx,0 | 1570 adc rdx,0 |
| 1570 add r12,r13 | 1571 add r12,r13 |
| 1571 mov r13,rdx | 1572 mov r13,rdx |
| 1572 adc r13,0 | 1573 adc r13,0 |
| 1573 | 1574 |
| 1574 mul rbx | 1575 mul rbx |
| 1575 add r14,rax | 1576 add r14,rax |
| 1576 » mov» rax,QWORD PTR[112+rbp] | 1577 » mov» rax,QWORD[112+rbp] |
| 1577 adc rdx,0 | 1578 adc rdx,0 |
| 1578 add r13,r14 | 1579 add r13,r14 |
| 1579 mov r14,rdx | 1580 mov r14,rdx |
| 1580 adc r14,0 | 1581 adc r14,0 |
| 1581 | 1582 |
| 1582 mul rbx | 1583 mul rbx |
| 1583 » mov» rbx,QWORD PTR[((48-16+8))+rcx*8+rsp] | 1584 » mov» rbx,QWORD[((48-16+8))+rcx*8+rsp] |
| 1584 add r15,rax | 1585 add r15,rax |
| 1585 adc rdx,0 | 1586 adc rdx,0 |
| 1586 add r14,r15 | 1587 add r14,r15 |
| 1587 » mov» rax,QWORD PTR[rbp] | 1588 » mov» rax,QWORD[rbp] |
| 1588 mov r15,rdx | 1589 mov r15,rdx |
| 1589 adc r15,0 | 1590 adc r15,0 |
| 1590 | 1591 |
| 1591 dec ecx | 1592 dec ecx |
| 1592 » jnz» $L$8x_tail | 1593 » jnz» NEAR $L$8x_tail |
| 1593 | 1594 |
| 1594 » lea» rbp,QWORD PTR[128+rbp] | 1595 » lea» rbp,[128+rbp] |
| 1595 » mov» rdx,QWORD PTR[((8+8))+rsp] | 1596 » mov» rdx,QWORD[((8+8))+rsp] |
| 1596 » cmp» rbp,QWORD PTR[((0+8))+rsp] | 1597 » cmp» rbp,QWORD[((0+8))+rsp] |
| 1597 » jae» $L$8x_tail_done | 1598 » jae» NEAR $L$8x_tail_done |
| 1598 | 1599 |
| 1599 » mov» rbx,QWORD PTR[((48+56+8))+rsp] | 1600 » mov» rbx,QWORD[((48+56+8))+rsp] |
| 1600 neg rsi | 1601 neg rsi |
| 1601 » mov» rax,QWORD PTR[rbp] | 1602 » mov» rax,QWORD[rbp] |
| 1602 » adc» r8,QWORD PTR[rdi] | 1603 » adc» r8,QWORD[rdi] |
| 1603 » adc» r9,QWORD PTR[8+rdi] | 1604 » adc» r9,QWORD[8+rdi] |
| 1604 » adc» r10,QWORD PTR[16+rdi] | 1605 » adc» r10,QWORD[16+rdi] |
| 1605 » adc» r11,QWORD PTR[24+rdi] | 1606 » adc» r11,QWORD[24+rdi] |
| 1606 » adc» r12,QWORD PTR[32+rdi] | 1607 » adc» r12,QWORD[32+rdi] |
| 1607 » adc» r13,QWORD PTR[40+rdi] | 1608 » adc» r13,QWORD[40+rdi] |
| 1608 » adc» r14,QWORD PTR[48+rdi] | 1609 » adc» r14,QWORD[48+rdi] |
| 1609 » adc» r15,QWORD PTR[56+rdi] | 1610 » adc» r15,QWORD[56+rdi] |
| 1610 sbb rsi,rsi | 1611 sbb rsi,rsi |
| 1611 | 1612 |
| 1612 mov ecx,8 | 1613 mov ecx,8 |
| 1613 » jmp» $L$8x_tail | 1614 » jmp» NEAR $L$8x_tail |
| 1614 | 1615 |
| 1615 ALIGN 32 | 1616 ALIGN 32 |
| 1616 $L$8x_tail_done:: | 1617 $L$8x_tail_done: |
| 1617 » add» r8,QWORD PTR[rdx] | 1618 » add» r8,QWORD[rdx] |
| 1618 xor rax,rax | 1619 xor rax,rax |
| 1619 | 1620 |
| 1620 neg rsi | 1621 neg rsi |
| 1621 $L$8x_no_tail:: | 1622 $L$8x_no_tail: |
| 1622 » adc» r8,QWORD PTR[rdi] | 1623 » adc» r8,QWORD[rdi] |
| 1623 » adc» r9,QWORD PTR[8+rdi] | 1624 » adc» r9,QWORD[8+rdi] |
| 1624 » adc» r10,QWORD PTR[16+rdi] | 1625 » adc» r10,QWORD[16+rdi] |
| 1625 » adc» r11,QWORD PTR[24+rdi] | 1626 » adc» r11,QWORD[24+rdi] |
| 1626 » adc» r12,QWORD PTR[32+rdi] | 1627 » adc» r12,QWORD[32+rdi] |
| 1627 » adc» r13,QWORD PTR[40+rdi] | 1628 » adc» r13,QWORD[40+rdi] |
| 1628 » adc» r14,QWORD PTR[48+rdi] | 1629 » adc» r14,QWORD[48+rdi] |
| 1629 » adc» r15,QWORD PTR[56+rdi] | 1630 » adc» r15,QWORD[56+rdi] |
| 1630 adc rax,0 | 1631 adc rax,0 |
| 1631 » mov» rcx,QWORD PTR[((-16))+rbp] | 1632 » mov» rcx,QWORD[((-16))+rbp] |
| 1632 xor rsi,rsi | 1633 xor rsi,rsi |
| 1633 | 1634 |
| 1634 DB 102,72,15,126,213 | 1635 DB 102,72,15,126,213 |
| 1635 | 1636 |
| 1636 » mov» QWORD PTR[rdi],r8 | 1637 » mov» QWORD[rdi],r8 |
| 1637 » mov» QWORD PTR[8+rdi],r9 | 1638 » mov» QWORD[8+rdi],r9 |
| 1638 DB 102,73,15,126,217 | 1639 DB 102,73,15,126,217 |
| 1639 » mov» QWORD PTR[16+rdi],r10 | 1640 » mov» QWORD[16+rdi],r10 |
| 1640 » mov» QWORD PTR[24+rdi],r11 | 1641 » mov» QWORD[24+rdi],r11 |
| 1641 » mov» QWORD PTR[32+rdi],r12 | 1642 » mov» QWORD[32+rdi],r12 |
| 1642 » mov» QWORD PTR[40+rdi],r13 | 1643 » mov» QWORD[40+rdi],r13 |
| 1643 » mov» QWORD PTR[48+rdi],r14 | 1644 » mov» QWORD[48+rdi],r14 |
| 1644 » mov» QWORD PTR[56+rdi],r15 | 1645 » mov» QWORD[56+rdi],r15 |
| 1645 » lea» rdi,QWORD PTR[64+rdi] | 1646 » lea» rdi,[64+rdi] |
| 1646 | 1647 |
| 1647 cmp rdi,rdx | 1648 cmp rdi,rdx |
| 1648 » jb» $L$8x_reduction_loop | 1649 » jb» NEAR $L$8x_reduction_loop |
| 1649 | 1650 |
| 1650 sub rcx,r15 | 1651 sub rcx,r15 |
| 1651 » lea» rbx,QWORD PTR[r9*1+rdi] | 1652 » lea» rbx,[r9*1+rdi] |
| 1652 adc rsi,rsi | 1653 adc rsi,rsi |
| 1653 mov rcx,r9 | 1654 mov rcx,r9 |
| 1654 or rax,rsi | 1655 or rax,rsi |
| 1655 DB 102,72,15,126,207 | 1656 DB 102,72,15,126,207 |
| 1656 xor rax,1 | 1657 xor rax,1 |
| 1657 DB 102,72,15,126,206 | 1658 DB 102,72,15,126,206 |
| 1658 » lea» rbp,QWORD PTR[rax*8+rbp] | 1659 » lea» rbp,[rax*8+rbp] |
| 1659 sar rcx,3+2 | 1660 sar rcx,3+2 |
| 1660 » jmp» $L$sqr4x_sub | 1661 » jmp» NEAR $L$sqr4x_sub |
| 1661 | 1662 |
| 1662 ALIGN 32 | 1663 ALIGN 32 |
| 1663 $L$sqr4x_sub:: | 1664 $L$sqr4x_sub: |
| 1664 DB» 066h | 1665 DB» 0x66 |
| 1665 » mov» r12,QWORD PTR[rbx] | 1666 » mov» r12,QWORD[rbx] |
| 1666 » mov» r13,QWORD PTR[8+rbx] | 1667 » mov» r13,QWORD[8+rbx] |
| 1667 » sbb» r12,QWORD PTR[rbp] | 1668 » sbb» r12,QWORD[rbp] |
| 1668 » mov» r14,QWORD PTR[16+rbx] | 1669 » mov» r14,QWORD[16+rbx] |
| 1669 » sbb» r13,QWORD PTR[16+rbp] | 1670 » sbb» r13,QWORD[16+rbp] |
| 1670 » mov» r15,QWORD PTR[24+rbx] | 1671 » mov» r15,QWORD[24+rbx] |
| 1671 » lea» rbx,QWORD PTR[32+rbx] | 1672 » lea» rbx,[32+rbx] |
| 1672 » sbb» r14,QWORD PTR[32+rbp] | 1673 » sbb» r14,QWORD[32+rbp] |
| 1673 » mov» QWORD PTR[rdi],r12 | 1674 » mov» QWORD[rdi],r12 |
| 1674 » sbb» r15,QWORD PTR[48+rbp] | 1675 » sbb» r15,QWORD[48+rbp] |
| 1675 » lea» rbp,QWORD PTR[64+rbp] | 1676 » lea» rbp,[64+rbp] |
| 1676 » mov» QWORD PTR[8+rdi],r13 | 1677 » mov» QWORD[8+rdi],r13 |
| 1677 » mov» QWORD PTR[16+rdi],r14 | 1678 » mov» QWORD[16+rdi],r14 |
| 1678 » mov» QWORD PTR[24+rdi],r15 | 1679 » mov» QWORD[24+rdi],r15 |
| 1679 » lea» rdi,QWORD PTR[32+rdi] | 1680 » lea» rdi,[32+rdi] |
| 1680 | 1681 |
| 1681 inc rcx | 1682 inc rcx |
| 1682 » jnz» $L$sqr4x_sub | 1683 » jnz» NEAR $L$sqr4x_sub |
| 1683 mov r10,r9 | 1684 mov r10,r9 |
| 1684 neg r9 | 1685 neg r9 |
| 1685 DB 0F3h,0C3h ;repret | 1686 DB 0F3h,0C3h ;repret |
| 1686 bn_sqr8x_internal» ENDP | 1687 |
| 1687 PUBLIC» bn_from_montgomery | 1688 global» bn_from_montgomery |
| 1688 | 1689 |
| 1689 ALIGN 32 | 1690 ALIGN 32 |
| 1690 bn_from_montgomery» PROC PUBLIC | 1691 bn_from_montgomery: |
| 1691 » test» DWORD PTR[48+rsp],7 | 1692 » test» DWORD[48+rsp],7 |
| 1692 » jz» bn_from_mont8x | 1693 » jz» NEAR bn_from_mont8x |
| 1693 xor eax,eax | 1694 xor eax,eax |
| 1694 DB 0F3h,0C3h ;repret | 1695 DB 0F3h,0C3h ;repret |
| 1695 bn_from_montgomery» ENDP | 1696 |
| 1696 | 1697 |
| 1697 | 1698 |
| 1698 ALIGN 32 | 1699 ALIGN 32 |
| 1699 bn_from_mont8x» PROC PRIVATE | 1700 bn_from_mont8x: |
| 1700 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue | 1701 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue |
| 1701 » mov» QWORD PTR[16+rsp],rsi | 1702 » mov» QWORD[16+rsp],rsi |
| 1702 mov rax,rsp | 1703 mov rax,rsp |
| 1703 $L$SEH_begin_bn_from_mont8x:: | 1704 $L$SEH_begin_bn_from_mont8x: |
| 1704 mov rdi,rcx | 1705 mov rdi,rcx |
| 1705 mov rsi,rdx | 1706 mov rsi,rdx |
| 1706 mov rdx,r8 | 1707 mov rdx,r8 |
| 1707 mov rcx,r9 | 1708 mov rcx,r9 |
| 1708 » mov» r8,QWORD PTR[40+rsp] | 1709 » mov» r8,QWORD[40+rsp] |
| 1709 » mov» r9,QWORD PTR[48+rsp] | 1710 » mov» r9,QWORD[48+rsp] |
| 1710 | 1711 |
| 1711 | 1712 |
| 1712 DB» 067h | 1713 DB» 0x67 |
| 1713 mov rax,rsp | 1714 mov rax,rsp |
| 1714 push rbx | 1715 push rbx |
| 1715 push rbp | 1716 push rbp |
| 1716 push r12 | 1717 push r12 |
| 1717 push r13 | 1718 push r13 |
| 1718 push r14 | 1719 push r14 |
| 1719 push r15 | 1720 push r15 |
| 1720 » lea» rsp,QWORD PTR[((-40))+rsp] | 1721 » lea» rsp,[((-40))+rsp] |
| 1721 » movaps» XMMWORD PTR[rsp],xmm6 | 1722 » movaps» XMMWORD[rsp],xmm6 |
| 1722 » movaps» XMMWORD PTR[16+rsp],xmm7 | 1723 » movaps» XMMWORD[16+rsp],xmm7 |
| 1723 DB» 067h | 1724 DB» 0x67 |
| 1724 mov r10d,r9d | 1725 mov r10d,r9d |
| 1725 shl r9d,3 | 1726 shl r9d,3 |
| 1726 shl r10d,3+2 | 1727 shl r10d,3+2 |
| 1727 neg r9 | 1728 neg r9 |
| 1728 » mov» r8,QWORD PTR[r8] | 1729 » mov» r8,QWORD[r8] |
| 1729 | 1730 |
| 1730 | 1731 |
| 1731 | 1732 |
| 1732 | 1733 |
| 1733 | 1734 |
| 1734 | 1735 |
| 1735 | 1736 |
| 1736 » lea» r11,QWORD PTR[((-64))+r9*2+rsp] | 1737 » lea» r11,[((-64))+r9*2+rsp] |
| 1737 sub r11,rsi | 1738 sub r11,rsi |
| 1738 and r11,4095 | 1739 and r11,4095 |
| 1739 cmp r10,r11 | 1740 cmp r10,r11 |
| 1740 » jb» $L$from_sp_alt | 1741 » jb» NEAR $L$from_sp_alt |
| 1741 sub rsp,r11 | 1742 sub rsp,r11 |
| 1742 » lea» rsp,QWORD PTR[((-64))+r9*2+rsp] | 1743 » lea» rsp,[((-64))+r9*2+rsp] |
| 1743 » jmp» $L$from_sp_done | 1744 » jmp» NEAR $L$from_sp_done |
| 1744 | 1745 |
| 1745 ALIGN 32 | 1746 ALIGN 32 |
| 1746 $L$from_sp_alt:: | 1747 $L$from_sp_alt: |
| 1747 » lea» r10,QWORD PTR[((4096-64))+r9*2] | 1748 » lea» r10,[((4096-64))+r9*2] |
| 1748 » lea» rsp,QWORD PTR[((-64))+r9*2+rsp] | 1749 » lea» rsp,[((-64))+r9*2+rsp] |
| 1749 sub r11,r10 | 1750 sub r11,r10 |
| 1750 mov r10,0 | 1751 mov r10,0 |
| 1751 cmovc r11,r10 | 1752 cmovc r11,r10 |
| 1752 sub rsp,r11 | 1753 sub rsp,r11 |
| 1753 $L$from_sp_done:: | 1754 $L$from_sp_done: |
| 1754 and rsp,-64 | 1755 and rsp,-64 |
| 1755 mov r10,r9 | 1756 mov r10,r9 |
| 1756 neg r9 | 1757 neg r9 |
| 1757 | 1758 |
| 1758 | 1759 |
| 1759 | 1760 |
| 1760 | 1761 |
| 1761 | 1762 |
| 1762 | 1763 |
| 1763 | 1764 |
| 1764 | 1765 |
| 1765 | 1766 |
| 1766 | 1767 |
| 1767 » mov» QWORD PTR[32+rsp],r8 | 1768 » mov» QWORD[32+rsp],r8 |
| 1768 » mov» QWORD PTR[40+rsp],rax | 1769 » mov» QWORD[40+rsp],rax |
| 1769 $L$from_body:: | 1770 $L$from_body: |
| 1770 mov r11,r9 | 1771 mov r11,r9 |
| 1771 » lea» rax,QWORD PTR[48+rsp] | 1772 » lea» rax,[48+rsp] |
| 1772 pxor xmm0,xmm0 | 1773 pxor xmm0,xmm0 |
| 1773 » jmp» $L$mul_by_1 | 1774 » jmp» NEAR $L$mul_by_1 |
| 1774 | 1775 |
| 1775 ALIGN 32 | 1776 ALIGN 32 |
| 1776 $L$mul_by_1:: | 1777 $L$mul_by_1: |
| 1777 » movdqu» xmm1,XMMWORD PTR[rsi] | 1778 » movdqu» xmm1,XMMWORD[rsi] |
| 1778 » movdqu» xmm2,XMMWORD PTR[16+rsi] | 1779 » movdqu» xmm2,XMMWORD[16+rsi] |
| 1779 » movdqu» xmm3,XMMWORD PTR[32+rsi] | 1780 » movdqu» xmm3,XMMWORD[32+rsi] |
| 1780 » movdqa» XMMWORD PTR[r9*1+rax],xmm0 | 1781 » movdqa» XMMWORD[r9*1+rax],xmm0 |
| 1781 » movdqu» xmm4,XMMWORD PTR[48+rsi] | 1782 » movdqu» xmm4,XMMWORD[48+rsi] |
| 1782 » movdqa» XMMWORD PTR[16+r9*1+rax],xmm0 | 1783 » movdqa» XMMWORD[16+r9*1+rax],xmm0 |
| 1783 DB» 048h,08dh,0b6h,040h,000h,000h,000h | 1784 DB» 0x48,0x8d,0xb6,0x40,0x00,0x00,0x00 |
| 1784 » movdqa» XMMWORD PTR[rax],xmm1 | 1785 » movdqa» XMMWORD[rax],xmm1 |
| 1785 » movdqa» XMMWORD PTR[32+r9*1+rax],xmm0 | 1786 » movdqa» XMMWORD[32+r9*1+rax],xmm0 |
| 1786 » movdqa» XMMWORD PTR[16+rax],xmm2 | 1787 » movdqa» XMMWORD[16+rax],xmm2 |
| 1787 » movdqa» XMMWORD PTR[48+r9*1+rax],xmm0 | 1788 » movdqa» XMMWORD[48+r9*1+rax],xmm0 |
| 1788 » movdqa» XMMWORD PTR[32+rax],xmm3 | 1789 » movdqa» XMMWORD[32+rax],xmm3 |
| 1789 » movdqa» XMMWORD PTR[48+rax],xmm4 | 1790 » movdqa» XMMWORD[48+rax],xmm4 |
| 1790 » lea» rax,QWORD PTR[64+rax] | 1791 » lea» rax,[64+rax] |
| 1791 sub r11,64 | 1792 sub r11,64 |
| 1792 » jnz» $L$mul_by_1 | 1793 » jnz» NEAR $L$mul_by_1 |
| 1793 | 1794 |
| 1794 DB 102,72,15,110,207 | 1795 DB 102,72,15,110,207 |
| 1795 DB 102,72,15,110,209 | 1796 DB 102,72,15,110,209 |
| 1796 DB» 067h | 1797 DB» 0x67 |
| 1797 mov rbp,rcx | 1798 mov rbp,rcx |
| 1798 DB 102,73,15,110,218 | 1799 DB 102,73,15,110,218 |
| 1799 call sqr8x_reduction | 1800 call sqr8x_reduction |
| 1800 | 1801 |
| 1801 pxor xmm0,xmm0 | 1802 pxor xmm0,xmm0 |
| 1802 » lea» rax,QWORD PTR[48+rsp] | 1803 » lea» rax,[48+rsp] |
| 1803 » mov» rsi,QWORD PTR[40+rsp] | 1804 » mov» rsi,QWORD[40+rsp] |
| 1804 » jmp» $L$from_mont_zero | 1805 » jmp» NEAR $L$from_mont_zero |
| 1805 | 1806 |
| 1806 ALIGN 32 | 1807 ALIGN 32 |
| 1807 $L$from_mont_zero:: | 1808 $L$from_mont_zero: |
| 1808 » movdqa» XMMWORD PTR[rax],xmm0 | 1809 » movdqa» XMMWORD[rax],xmm0 |
| 1809 » movdqa» XMMWORD PTR[16+rax],xmm0 | 1810 » movdqa» XMMWORD[16+rax],xmm0 |
| 1810 » movdqa» XMMWORD PTR[32+rax],xmm0 | 1811 » movdqa» XMMWORD[32+rax],xmm0 |
| 1811 » movdqa» XMMWORD PTR[48+rax],xmm0 | 1812 » movdqa» XMMWORD[48+rax],xmm0 |
| 1812 » lea» rax,QWORD PTR[64+rax] | 1813 » lea» rax,[64+rax] |
| 1813 sub r9,32 | 1814 sub r9,32 |
| 1814 » jnz» $L$from_mont_zero | 1815 » jnz» NEAR $L$from_mont_zero |
| 1815 | 1816 |
| 1816 mov rax,1 | 1817 mov rax,1 |
| 1817 » mov» r15,QWORD PTR[((-48))+rsi] | 1818 » mov» r15,QWORD[((-48))+rsi] |
| 1818 » mov» r14,QWORD PTR[((-40))+rsi] | 1819 » mov» r14,QWORD[((-40))+rsi] |
| 1819 » mov» r13,QWORD PTR[((-32))+rsi] | 1820 » mov» r13,QWORD[((-32))+rsi] |
| 1820 » mov» r12,QWORD PTR[((-24))+rsi] | 1821 » mov» r12,QWORD[((-24))+rsi] |
| 1821 » mov» rbp,QWORD PTR[((-16))+rsi] | 1822 » mov» rbp,QWORD[((-16))+rsi] |
| 1822 » mov» rbx,QWORD PTR[((-8))+rsi] | 1823 » mov» rbx,QWORD[((-8))+rsi] |
| 1823 » lea» rsp,QWORD PTR[rsi] | 1824 » lea» rsp,[rsi] |
| 1824 $L$from_epilogue:: | 1825 $L$from_epilogue: |
| 1825 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue | 1826 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue |
| 1826 » mov» rsi,QWORD PTR[16+rsp] | 1827 » mov» rsi,QWORD[16+rsp] |
| 1827 DB 0F3h,0C3h ;repret | 1828 DB 0F3h,0C3h ;repret |
| 1828 $L$SEH_end_bn_from_mont8x:: | 1829 $L$SEH_end_bn_from_mont8x: |
| 1829 bn_from_mont8x» ENDP | 1830 global» bn_scatter5 |
| 1830 PUBLIC» bn_scatter5 | |
| 1831 | 1831 |
| 1832 ALIGN 16 | 1832 ALIGN 16 |
| 1833 bn_scatter5» PROC PUBLIC | 1833 bn_scatter5: |
| 1834 cmp edx,0 | 1834 cmp edx,0 |
| 1835 » jz» $L$scatter_epilogue | 1835 » jz» NEAR $L$scatter_epilogue |
| 1836 » lea» r8,QWORD PTR[r9*8+r8] | 1836 » lea» r8,[r9*8+r8] |
| 1837 $L$scatter:: | 1837 $L$scatter: |
| 1838 » mov» rax,QWORD PTR[rcx] | 1838 » mov» rax,QWORD[rcx] |
| 1839 » lea» rcx,QWORD PTR[8+rcx] | 1839 » lea» rcx,[8+rcx] |
| 1840 » mov» QWORD PTR[r8],rax | 1840 » mov» QWORD[r8],rax |
| 1841 » lea» r8,QWORD PTR[256+r8] | 1841 » lea» r8,[256+r8] |
| 1842 sub edx,1 | 1842 sub edx,1 |
| 1843 » jnz» $L$scatter | 1843 » jnz» NEAR $L$scatter |
| 1844 $L$scatter_epilogue:: | 1844 $L$scatter_epilogue: |
| 1845 DB 0F3h,0C3h ;repret | 1845 DB 0F3h,0C3h ;repret |
| 1846 bn_scatter5 ENDP | |
| 1847 | 1846 |
| 1848 PUBLIC» bn_gather5 | 1847 |
| 1848 global» bn_gather5 |
| 1849 | 1849 |
| 1850 ALIGN 16 | 1850 ALIGN 16 |
| 1851 bn_gather5» PROC PUBLIC | 1851 bn_gather5: |
| 1852 $L$SEH_begin_bn_gather5:: | 1852 $L$SEH_begin_bn_gather5: |
| 1853 | 1853 |
| 1854 DB» 048h,083h,0ech,028h | 1854 DB» 0x48,0x83,0xec,0x28 |
| 1855 DB» 00fh,029h,034h,024h | 1855 DB» 0x0f,0x29,0x34,0x24 |
| 1856 DB» 00fh,029h,07ch,024h,010h | 1856 DB» 0x0f,0x29,0x7c,0x24,0x10 |
| 1857 mov r11d,r9d | 1857 mov r11d,r9d |
| 1858 shr r9d,3 | 1858 shr r9d,3 |
| 1859 and r11,7 | 1859 and r11,7 |
| 1860 not r9d | 1860 not r9d |
| 1861 » lea» rax,QWORD PTR[$L$magic_masks] | 1861 » lea» rax,[$L$magic_masks] |
| 1862 and r9d,3 | 1862 and r9d,3 |
| 1863 » lea» r8,QWORD PTR[128+r11*8+r8] | 1863 » lea» r8,[128+r11*8+r8] |
| 1864 » movq» xmm4,QWORD PTR[r9*8+rax] | 1864 » movq» xmm4,QWORD[r9*8+rax] |
| 1865 » movq» xmm5,QWORD PTR[8+r9*8+rax] | 1865 » movq» xmm5,QWORD[8+r9*8+rax] |
| 1866 » movq» xmm6,QWORD PTR[16+r9*8+rax] | 1866 » movq» xmm6,QWORD[16+r9*8+rax] |
| 1867 » movq» xmm7,QWORD PTR[24+r9*8+rax] | 1867 » movq» xmm7,QWORD[24+r9*8+rax] |
| 1868 » jmp» $L$gather | 1868 » jmp» NEAR $L$gather |
| 1869 ALIGN 16 | 1869 ALIGN 16 |
| 1870 $L$gather:: | 1870 $L$gather: |
| 1871 » movq» xmm0,QWORD PTR[(((-128)))+r8] | 1871 » movq» xmm0,QWORD[(((-128)))+r8] |
| 1872 » movq» xmm1,QWORD PTR[((-64))+r8] | 1872 » movq» xmm1,QWORD[((-64))+r8] |
| 1873 pand xmm0,xmm4 | 1873 pand xmm0,xmm4 |
| 1874 » movq» xmm2,QWORD PTR[r8] | 1874 » movq» xmm2,QWORD[r8] |
| 1875 pand xmm1,xmm5 | 1875 pand xmm1,xmm5 |
| 1876 » movq» xmm3,QWORD PTR[64+r8] | 1876 » movq» xmm3,QWORD[64+r8] |
| 1877 pand xmm2,xmm6 | 1877 pand xmm2,xmm6 |
| 1878 por xmm0,xmm1 | 1878 por xmm0,xmm1 |
| 1879 pand xmm3,xmm7 | 1879 pand xmm3,xmm7 |
| 1880 DB» 067h,067h | 1880 DB» 0x67,0x67 |
| 1881 por xmm0,xmm2 | 1881 por xmm0,xmm2 |
| 1882 » lea» r8,QWORD PTR[256+r8] | 1882 » lea» r8,[256+r8] |
| 1883 por xmm0,xmm3 | 1883 por xmm0,xmm3 |
| 1884 | 1884 |
| 1885 » movq» QWORD PTR[rcx],xmm0 | 1885 » movq» QWORD[rcx],xmm0 |
| 1886 » lea» rcx,QWORD PTR[8+rcx] | 1886 » lea» rcx,[8+rcx] |
| 1887 sub edx,1 | 1887 sub edx,1 |
| 1888 » jnz» $L$gather | 1888 » jnz» NEAR $L$gather |
| 1889 » movaps» xmm6,XMMWORD PTR[rsp] | 1889 » movaps» xmm6,XMMWORD[rsp] |
| 1890 » movaps» xmm7,XMMWORD PTR[16+rsp] | 1890 » movaps» xmm7,XMMWORD[16+rsp] |
| 1891 » lea» rsp,QWORD PTR[40+rsp] | 1891 » lea» rsp,[40+rsp] |
| 1892 DB 0F3h,0C3h ;repret | 1892 DB 0F3h,0C3h ;repret |
| 1893 $L$SEH_end_bn_gather5:: | 1893 $L$SEH_end_bn_gather5: |
| 1894 bn_gather5» ENDP | 1894 |
| 1895 ALIGN 64 | 1895 ALIGN 64 |
| 1896 $L$magic_masks:: | 1896 $L$magic_masks: |
| 1897 DD 0,0,0,0,0,0,-1,-1 | 1897 DD 0,0,0,0,0,0,-1,-1 |
| 1898 DD 0,0,0,0,0,0,0,0 | 1898 DD 0,0,0,0,0,0,0,0 |
| 1899 DB 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 | 1899 DB 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 |
| 1900 DB 112,108,105,99,97,116,105,111,110,32,119,105,116,104,32,115 | 1900 DB 112,108,105,99,97,116,105,111,110,32,119,105,116,104,32,115 |
| 1901 DB 99,97,116,116,101,114,47,103,97,116,104,101,114,32,102,111 | 1901 DB 99,97,116,116,101,114,47,103,97,116,104,101,114,32,102,111 |
| 1902 DB 114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79 | 1902 DB 114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79 |
| 1903 DB 71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111 | 1903 DB 71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111 |
| 1904 DB 112,101,110,115,115,108,46,111,114,103,62,0 | 1904 DB 112,101,110,115,115,108,46,111,114,103,62,0 |
| 1905 EXTERN» __imp_RtlVirtualUnwind:NEAR | 1905 EXTERN» __imp_RtlVirtualUnwind |
| 1906 | 1906 |
| 1907 ALIGN 16 | 1907 ALIGN 16 |
| 1908 mul_handler» PROC PRIVATE | 1908 mul_handler: |
| 1909 push rsi | 1909 push rsi |
| 1910 push rdi | 1910 push rdi |
| 1911 push rbx | 1911 push rbx |
| 1912 push rbp | 1912 push rbp |
| 1913 push r12 | 1913 push r12 |
| 1914 push r13 | 1914 push r13 |
| 1915 push r14 | 1915 push r14 |
| 1916 push r15 | 1916 push r15 |
| 1917 pushfq | 1917 pushfq |
| 1918 sub rsp,64 | 1918 sub rsp,64 |
| 1919 | 1919 |
| 1920 » mov» rax,QWORD PTR[120+r8] | 1920 » mov» rax,QWORD[120+r8] |
| 1921 » mov» rbx,QWORD PTR[248+r8] | 1921 » mov» rbx,QWORD[248+r8] |
| 1922 | 1922 |
| 1923 » mov» rsi,QWORD PTR[8+r9] | 1923 » mov» rsi,QWORD[8+r9] |
| 1924 » mov» r11,QWORD PTR[56+r9] | 1924 » mov» r11,QWORD[56+r9] |
| 1925 | 1925 |
| 1926 » mov» r10d,DWORD PTR[r11] | 1926 » mov» r10d,DWORD[r11] |
| 1927 » lea» r10,QWORD PTR[r10*1+rsi] | 1927 » lea» r10,[r10*1+rsi] |
| 1928 cmp rbx,r10 | 1928 cmp rbx,r10 |
| 1929 » jb» $L$common_seh_tail | 1929 » jb» NEAR $L$common_seh_tail |
| 1930 | 1930 |
| 1931 » mov» rax,QWORD PTR[152+r8] | 1931 » mov» rax,QWORD[152+r8] |
| 1932 | 1932 |
| 1933 » mov» r10d,DWORD PTR[4+r11] | 1933 » mov» r10d,DWORD[4+r11] |
| 1934 » lea» r10,QWORD PTR[r10*1+rsi] | 1934 » lea» r10,[r10*1+rsi] |
| 1935 cmp rbx,r10 | 1935 cmp rbx,r10 |
| 1936 » jae» $L$common_seh_tail | 1936 » jae» NEAR $L$common_seh_tail |
| 1937 | 1937 |
| 1938 » lea» r10,QWORD PTR[$L$mul_epilogue] | 1938 » lea» r10,[$L$mul_epilogue] |
| 1939 cmp rbx,r10 | 1939 cmp rbx,r10 |
| 1940 » jb» $L$body_40 | 1940 » jb» NEAR $L$body_40 |
| 1941 | 1941 |
| 1942 » mov» r10,QWORD PTR[192+r8] | 1942 » mov» r10,QWORD[192+r8] |
| 1943 » mov» rax,QWORD PTR[8+r10*8+rax] | 1943 » mov» rax,QWORD[8+r10*8+rax] |
| 1944 » jmp» $L$body_proceed | 1944 » jmp» NEAR $L$body_proceed |
| 1945 | 1945 |
| 1946 $L$body_40:: | 1946 $L$body_40: |
| 1947 » mov» rax,QWORD PTR[40+rax] | 1947 » mov» rax,QWORD[40+rax] |
| 1948 $L$body_proceed:: | 1948 $L$body_proceed: |
| 1949 | 1949 |
| 1950 » movaps» xmm0,XMMWORD PTR[((-88))+rax] | 1950 » movaps» xmm0,XMMWORD[((-88))+rax] |
| 1951 » movaps» xmm1,XMMWORD PTR[((-72))+rax] | 1951 » movaps» xmm1,XMMWORD[((-72))+rax] |
| 1952 | 1952 |
| 1953 » mov» rbx,QWORD PTR[((-8))+rax] | 1953 » mov» rbx,QWORD[((-8))+rax] |
| 1954 » mov» rbp,QWORD PTR[((-16))+rax] | 1954 » mov» rbp,QWORD[((-16))+rax] |
| 1955 » mov» r12,QWORD PTR[((-24))+rax] | 1955 » mov» r12,QWORD[((-24))+rax] |
| 1956 » mov» r13,QWORD PTR[((-32))+rax] | 1956 » mov» r13,QWORD[((-32))+rax] |
| 1957 » mov» r14,QWORD PTR[((-40))+rax] | 1957 » mov» r14,QWORD[((-40))+rax] |
| 1958 » mov» r15,QWORD PTR[((-48))+rax] | 1958 » mov» r15,QWORD[((-48))+rax] |
| 1959 » mov» QWORD PTR[144+r8],rbx | 1959 » mov» QWORD[144+r8],rbx |
| 1960 » mov» QWORD PTR[160+r8],rbp | 1960 » mov» QWORD[160+r8],rbp |
| 1961 » mov» QWORD PTR[216+r8],r12 | 1961 » mov» QWORD[216+r8],r12 |
| 1962 » mov» QWORD PTR[224+r8],r13 | 1962 » mov» QWORD[224+r8],r13 |
| 1963 » mov» QWORD PTR[232+r8],r14 | 1963 » mov» QWORD[232+r8],r14 |
| 1964 » mov» QWORD PTR[240+r8],r15 | 1964 » mov» QWORD[240+r8],r15 |
| 1965 » movups» XMMWORD PTR[512+r8],xmm0 | 1965 » movups» XMMWORD[512+r8],xmm0 |
| 1966 » movups» XMMWORD PTR[528+r8],xmm1 | 1966 » movups» XMMWORD[528+r8],xmm1 |
| 1967 | 1967 |
| 1968 $L$common_seh_tail:: | 1968 $L$common_seh_tail: |
| 1969 » mov» rdi,QWORD PTR[8+rax] | 1969 » mov» rdi,QWORD[8+rax] |
| 1970 » mov» rsi,QWORD PTR[16+rax] | 1970 » mov» rsi,QWORD[16+rax] |
| 1971 » mov» QWORD PTR[152+r8],rax | 1971 » mov» QWORD[152+r8],rax |
| 1972 » mov» QWORD PTR[168+r8],rsi | 1972 » mov» QWORD[168+r8],rsi |
| 1973 » mov» QWORD PTR[176+r8],rdi | 1973 » mov» QWORD[176+r8],rdi |
| 1974 | 1974 |
| 1975 » mov» rdi,QWORD PTR[40+r9] | 1975 » mov» rdi,QWORD[40+r9] |
| 1976 mov rsi,r8 | 1976 mov rsi,r8 |
| 1977 mov ecx,154 | 1977 mov ecx,154 |
| 1978 » DD» 0a548f3fch | 1978 » DD» 0xa548f3fc |
| 1979 | 1979 |
| 1980 mov rsi,r9 | 1980 mov rsi,r9 |
| 1981 xor rcx,rcx | 1981 xor rcx,rcx |
| 1982 » mov» rdx,QWORD PTR[8+rsi] | 1982 » mov» rdx,QWORD[8+rsi] |
| 1983 » mov» r8,QWORD PTR[rsi] | 1983 » mov» r8,QWORD[rsi] |
| 1984 » mov» r9,QWORD PTR[16+rsi] | 1984 » mov» r9,QWORD[16+rsi] |
| 1985 » mov» r10,QWORD PTR[40+rsi] | 1985 » mov» r10,QWORD[40+rsi] |
| 1986 » lea» r11,QWORD PTR[56+rsi] | 1986 » lea» r11,[56+rsi] |
| 1987 » lea» r12,QWORD PTR[24+rsi] | 1987 » lea» r12,[24+rsi] |
| 1988 » mov» QWORD PTR[32+rsp],r10 | 1988 » mov» QWORD[32+rsp],r10 |
| 1989 » mov» QWORD PTR[40+rsp],r11 | 1989 » mov» QWORD[40+rsp],r11 |
| 1990 » mov» QWORD PTR[48+rsp],r12 | 1990 » mov» QWORD[48+rsp],r12 |
| 1991 » mov» QWORD PTR[56+rsp],rcx | 1991 » mov» QWORD[56+rsp],rcx |
| 1992 » call» QWORD PTR[__imp_RtlVirtualUnwind] | 1992 » call» QWORD[__imp_RtlVirtualUnwind] |
| 1993 | 1993 |
| 1994 mov eax,1 | 1994 mov eax,1 |
| 1995 add rsp,64 | 1995 add rsp,64 |
| 1996 popfq | 1996 popfq |
| 1997 pop r15 | 1997 pop r15 |
| 1998 pop r14 | 1998 pop r14 |
| 1999 pop r13 | 1999 pop r13 |
| 2000 pop r12 | 2000 pop r12 |
| 2001 pop rbp | 2001 pop rbp |
| 2002 pop rbx | 2002 pop rbx |
| 2003 pop rdi | 2003 pop rdi |
| 2004 pop rsi | 2004 pop rsi |
| 2005 DB 0F3h,0C3h ;repret | 2005 DB 0F3h,0C3h ;repret |
| 2006 mul_handler ENDP | |
| 2007 | 2006 |
| 2008 .text$» ENDS | 2007 |
| 2009 .pdata» SEGMENT READONLY ALIGN(4) | 2008 section».pdata rdata align=4 |
| 2010 ALIGN 4 | 2009 ALIGN 4 |
| 2011 » DD» imagerel $L$SEH_begin_bn_mul_mont_gather5 | 2010 » DD» $L$SEH_begin_bn_mul_mont_gather5 wrt ..imagebase |
| 2012 » DD» imagerel $L$SEH_end_bn_mul_mont_gather5 | 2011 » DD» $L$SEH_end_bn_mul_mont_gather5 wrt ..imagebase |
| 2013 » DD» imagerel $L$SEH_info_bn_mul_mont_gather5 | 2012 » DD» $L$SEH_info_bn_mul_mont_gather5 wrt ..imagebase |
| 2014 | 2013 |
| 2015 » DD» imagerel $L$SEH_begin_bn_mul4x_mont_gather5 | 2014 » DD» $L$SEH_begin_bn_mul4x_mont_gather5 wrt ..imagebase |
| 2016 » DD» imagerel $L$SEH_end_bn_mul4x_mont_gather5 | 2015 » DD» $L$SEH_end_bn_mul4x_mont_gather5 wrt ..imagebase |
| 2017 » DD» imagerel $L$SEH_info_bn_mul4x_mont_gather5 | 2016 » DD» $L$SEH_info_bn_mul4x_mont_gather5 wrt ..imagebase |
| 2018 | 2017 |
| 2019 » DD» imagerel $L$SEH_begin_bn_power5 | 2018 » DD» $L$SEH_begin_bn_power5 wrt ..imagebase |
| 2020 » DD» imagerel $L$SEH_end_bn_power5 | 2019 » DD» $L$SEH_end_bn_power5 wrt ..imagebase |
| 2021 » DD» imagerel $L$SEH_info_bn_power5 | 2020 » DD» $L$SEH_info_bn_power5 wrt ..imagebase |
| 2022 | 2021 |
| 2023 » DD» imagerel $L$SEH_begin_bn_from_mont8x | 2022 » DD» $L$SEH_begin_bn_from_mont8x wrt ..imagebase |
| 2024 » DD» imagerel $L$SEH_end_bn_from_mont8x | 2023 » DD» $L$SEH_end_bn_from_mont8x wrt ..imagebase |
| 2025 » DD» imagerel $L$SEH_info_bn_from_mont8x | 2024 » DD» $L$SEH_info_bn_from_mont8x wrt ..imagebase |
| 2026 » DD» imagerel $L$SEH_begin_bn_gather5 | 2025 » DD» $L$SEH_begin_bn_gather5 wrt ..imagebase |
| 2027 » DD» imagerel $L$SEH_end_bn_gather5 | 2026 » DD» $L$SEH_end_bn_gather5 wrt ..imagebase |
| 2028 » DD» imagerel $L$SEH_info_bn_gather5 | 2027 » DD» $L$SEH_info_bn_gather5 wrt ..imagebase |
| 2029 | 2028 |
| 2030 .pdata» ENDS | 2029 section».xdata rdata align=8 |
| 2031 .xdata» SEGMENT READONLY ALIGN(8) | |
| 2032 ALIGN 8 | 2030 ALIGN 8 |
| 2033 $L$SEH_info_bn_mul_mont_gather5:: | 2031 $L$SEH_info_bn_mul_mont_gather5: |
| 2034 DB 9,0,0,0 | 2032 DB 9,0,0,0 |
| 2035 » DD» imagerel mul_handler | 2033 » DD» mul_handler wrt ..imagebase |
| 2036 » DD» imagerel $L$mul_body,imagerel $L$mul_epilogue | 2034 » DD» $L$mul_body wrt ..imagebase,$L$mul_epilogue wrt ..imagebase |
| 2037 ALIGN 8 | 2035 ALIGN 8 |
| 2038 $L$SEH_info_bn_mul4x_mont_gather5:: | 2036 $L$SEH_info_bn_mul4x_mont_gather5: |
| 2039 DB 9,0,0,0 | 2037 DB 9,0,0,0 |
| 2040 » DD» imagerel mul_handler | 2038 » DD» mul_handler wrt ..imagebase |
| 2041 » DD» imagerel $L$mul4x_body,imagerel $L$mul4x_epilogue | 2039 » DD» $L$mul4x_body wrt ..imagebase,$L$mul4x_epilogue wrt ..imagebase |
| 2042 ALIGN 8 | 2040 ALIGN 8 |
| 2043 $L$SEH_info_bn_power5:: | 2041 $L$SEH_info_bn_power5: |
| 2044 DB 9,0,0,0 | 2042 DB 9,0,0,0 |
| 2045 » DD» imagerel mul_handler | 2043 » DD» mul_handler wrt ..imagebase |
| 2046 » DD» imagerel $L$power5_body,imagerel $L$power5_epilogue | 2044 » DD» $L$power5_body wrt ..imagebase,$L$power5_epilogue wrt ..imagebas
e |
| 2047 ALIGN 8 | 2045 ALIGN 8 |
| 2048 $L$SEH_info_bn_from_mont8x:: | 2046 $L$SEH_info_bn_from_mont8x: |
| 2049 DB 9,0,0,0 | 2047 DB 9,0,0,0 |
| 2050 » DD» imagerel mul_handler | 2048 » DD» mul_handler wrt ..imagebase |
| 2051 » DD» imagerel $L$from_body,imagerel $L$from_epilogue | 2049 » DD» $L$from_body wrt ..imagebase,$L$from_epilogue wrt ..imagebase |
| 2052 ALIGN 8 | 2050 ALIGN 8 |
| 2053 $L$SEH_info_bn_gather5:: | 2051 $L$SEH_info_bn_gather5: |
| 2054 DB» 001h,00dh,005h,000h | 2052 DB» 0x01,0x0d,0x05,0x00 |
| 2055 DB» 00dh,078h,001h,000h | 2053 DB» 0x0d,0x78,0x01,0x00 |
| 2056 DB» 008h,068h,000h,000h | 2054 DB» 0x08,0x68,0x00,0x00 |
| 2057 DB» 004h,042h,000h,000h | 2055 DB» 0x04,0x42,0x00,0x00 |
| 2058 ALIGN 8 | 2056 ALIGN 8 |
| 2059 | |
| 2060 .xdata ENDS | |
| 2061 END | |
| OLD | NEW |