Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1 | default rel |
| 2 | %define XMMWORD |
| 3 | %define YMMWORD |
| 4 | %define ZMMWORD |
| 5 | section .text code align=64 |
| 6 | |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 7 | |
| 8 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 9 | _x86_64_AES_encrypt: |
| 10 | xor eax,DWORD[r15] |
| 11 | xor ebx,DWORD[4+r15] |
| 12 | xor ecx,DWORD[8+r15] |
| 13 | xor edx,DWORD[12+r15] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 14 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 15 | mov r13d,DWORD[240+r15] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 16 | sub r13d,1 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 17 | jmp NEAR $L$enc_loop |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 18 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 19 | $L$enc_loop: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 20 | |
| 21 | movzx esi,al |
| 22 | movzx edi,bl |
| 23 | movzx ebp,cl |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 24 | mov r10d,DWORD[rsi*8+r14] |
| 25 | mov r11d,DWORD[rdi*8+r14] |
| 26 | mov r12d,DWORD[rbp*8+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 27 | |
| 28 | movzx esi,bh |
| 29 | movzx edi,ch |
| 30 | movzx ebp,dl |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 31 | xor r10d,DWORD[3+rsi*8+r14] |
| 32 | xor r11d,DWORD[3+rdi*8+r14] |
| 33 | mov r8d,DWORD[rbp*8+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 34 | |
| 35 | movzx esi,dh |
| 36 | shr ecx,16 |
| 37 | movzx ebp,ah |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 38 | xor r12d,DWORD[3+rsi*8+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 39 | shr edx,16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 40 | xor r8d,DWORD[3+rbp*8+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 41 | |
| 42 | shr ebx,16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 43 | lea r15,[16+r15] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 44 | shr eax,16 |
| 45 | |
| 46 | movzx esi,cl |
| 47 | movzx edi,dl |
| 48 | movzx ebp,al |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 49 | xor r10d,DWORD[2+rsi*8+r14] |
| 50 | xor r11d,DWORD[2+rdi*8+r14] |
| 51 | xor r12d,DWORD[2+rbp*8+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 52 | |
| 53 | movzx esi,dh |
| 54 | movzx edi,ah |
| 55 | movzx ebp,bl |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 56 | xor r10d,DWORD[1+rsi*8+r14] |
| 57 | xor r11d,DWORD[1+rdi*8+r14] |
| 58 | xor r8d,DWORD[2+rbp*8+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 59 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 60 | mov edx,DWORD[12+r15] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 61 | movzx edi,bh |
| 62 | movzx ebp,ch |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 63 | mov eax,DWORD[r15] |
| 64 | xor r12d,DWORD[1+rdi*8+r14] |
| 65 | xor r8d,DWORD[1+rbp*8+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 66 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 67 | mov ebx,DWORD[4+r15] |
| 68 | mov ecx,DWORD[8+r15] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 69 | xor eax,r10d |
| 70 | xor ebx,r11d |
| 71 | xor ecx,r12d |
| 72 | xor edx,r8d |
| 73 | sub r13d,1 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 74 | jnz NEAR $L$enc_loop |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 75 | movzx esi,al |
| 76 | movzx edi,bl |
| 77 | movzx ebp,cl |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 78 | movzx r10d,BYTE[2+rsi*8+r14] |
| 79 | movzx r11d,BYTE[2+rdi*8+r14] |
| 80 | movzx r12d,BYTE[2+rbp*8+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 81 | |
| 82 | movzx esi,dl |
| 83 | movzx edi,bh |
| 84 | movzx ebp,ch |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 85 | movzx r8d,BYTE[2+rsi*8+r14] |
| 86 | mov edi,DWORD[rdi*8+r14] |
| 87 | mov ebp,DWORD[rbp*8+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 88 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 89 | and edi,0x0000ff00 |
| 90 | and ebp,0x0000ff00 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 91 | |
| 92 | xor r10d,edi |
| 93 | xor r11d,ebp |
| 94 | shr ecx,16 |
| 95 | |
| 96 | movzx esi,dh |
| 97 | movzx edi,ah |
| 98 | shr edx,16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 99 | mov esi,DWORD[rsi*8+r14] |
| 100 | mov edi,DWORD[rdi*8+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 101 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 102 | and esi,0x0000ff00 |
| 103 | and edi,0x0000ff00 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 104 | shr ebx,16 |
| 105 | xor r12d,esi |
| 106 | xor r8d,edi |
| 107 | shr eax,16 |
| 108 | |
| 109 | movzx esi,cl |
| 110 | movzx edi,dl |
| 111 | movzx ebp,al |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 112 | mov esi,DWORD[rsi*8+r14] |
| 113 | mov edi,DWORD[rdi*8+r14] |
| 114 | mov ebp,DWORD[rbp*8+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 115 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 116 | and esi,0x00ff0000 |
| 117 | and edi,0x00ff0000 |
| 118 | and ebp,0x00ff0000 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 119 | |
| 120 | xor r10d,esi |
| 121 | xor r11d,edi |
| 122 | xor r12d,ebp |
| 123 | |
| 124 | movzx esi,bl |
| 125 | movzx edi,dh |
| 126 | movzx ebp,ah |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 127 | mov esi,DWORD[rsi*8+r14] |
| 128 | mov edi,DWORD[2+rdi*8+r14] |
| 129 | mov ebp,DWORD[2+rbp*8+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 130 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 131 | and esi,0x00ff0000 |
| 132 | and edi,0xff000000 |
| 133 | and ebp,0xff000000 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 134 | |
| 135 | xor r8d,esi |
| 136 | xor r10d,edi |
| 137 | xor r11d,ebp |
| 138 | |
| 139 | movzx esi,bh |
| 140 | movzx edi,ch |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 141 | mov edx,DWORD[((16+12))+r15] |
| 142 | mov esi,DWORD[2+rsi*8+r14] |
| 143 | mov edi,DWORD[2+rdi*8+r14] |
| 144 | mov eax,DWORD[((16+0))+r15] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 145 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 146 | and esi,0xff000000 |
| 147 | and edi,0xff000000 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 148 | |
| 149 | xor r12d,esi |
| 150 | xor r8d,edi |
| 151 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 152 | mov ebx,DWORD[((16+4))+r15] |
| 153 | mov ecx,DWORD[((16+8))+r15] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 154 | xor eax,r10d |
| 155 | xor ebx,r11d |
| 156 | xor ecx,r12d |
| 157 | xor edx,r8d |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 158 | DB 0xf3,0xc3 |
| 159 | |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 160 | |
| 161 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 162 | _x86_64_AES_encrypt_compact: |
| 163 | lea r8,[128+r14] |
| 164 | mov edi,DWORD[((0-128))+r8] |
| 165 | mov ebp,DWORD[((32-128))+r8] |
| 166 | mov r10d,DWORD[((64-128))+r8] |
| 167 | mov r11d,DWORD[((96-128))+r8] |
| 168 | mov edi,DWORD[((128-128))+r8] |
| 169 | mov ebp,DWORD[((160-128))+r8] |
| 170 | mov r10d,DWORD[((192-128))+r8] |
| 171 | mov r11d,DWORD[((224-128))+r8] |
| 172 | jmp NEAR $L$enc_loop_compact |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 173 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 174 | $L$enc_loop_compact: |
| 175 | xor eax,DWORD[r15] |
| 176 | xor ebx,DWORD[4+r15] |
| 177 | xor ecx,DWORD[8+r15] |
| 178 | xor edx,DWORD[12+r15] |
| 179 | lea r15,[16+r15] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 180 | movzx r10d,al |
| 181 | movzx r11d,bl |
| 182 | movzx r12d,cl |
| 183 | movzx r8d,dl |
| 184 | movzx esi,bh |
| 185 | movzx edi,ch |
| 186 | shr ecx,16 |
| 187 | movzx ebp,dh |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 188 | movzx r10d,BYTE[r10*1+r14] |
| 189 | movzx r11d,BYTE[r11*1+r14] |
| 190 | movzx r12d,BYTE[r12*1+r14] |
| 191 | movzx r8d,BYTE[r8*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 192 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 193 | movzx r9d,BYTE[rsi*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 194 | movzx esi,ah |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 195 | movzx r13d,BYTE[rdi*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 196 | movzx edi,cl |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 197 | movzx ebp,BYTE[rbp*1+r14] |
| 198 | movzx esi,BYTE[rsi*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 199 | |
| 200 | shl r9d,8 |
| 201 | shr edx,16 |
| 202 | shl r13d,8 |
| 203 | xor r10d,r9d |
| 204 | shr eax,16 |
| 205 | movzx r9d,dl |
| 206 | shr ebx,16 |
| 207 | xor r11d,r13d |
| 208 | shl ebp,8 |
| 209 | movzx r13d,al |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 210 | movzx edi,BYTE[rdi*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 211 | xor r12d,ebp |
| 212 | |
| 213 | shl esi,8 |
| 214 | movzx ebp,bl |
| 215 | shl edi,16 |
| 216 | xor r8d,esi |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 217 | movzx r9d,BYTE[r9*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 218 | movzx esi,dh |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 219 | movzx r13d,BYTE[r13*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 220 | xor r10d,edi |
| 221 | |
| 222 | shr ecx,8 |
| 223 | movzx edi,ah |
| 224 | shl r9d,16 |
| 225 | shr ebx,8 |
| 226 | shl r13d,16 |
| 227 | xor r11d,r9d |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 228 | movzx ebp,BYTE[rbp*1+r14] |
| 229 | movzx esi,BYTE[rsi*1+r14] |
| 230 | movzx edi,BYTE[rdi*1+r14] |
| 231 | movzx edx,BYTE[rcx*1+r14] |
| 232 | movzx ecx,BYTE[rbx*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 233 | |
| 234 | shl ebp,16 |
| 235 | xor r12d,r13d |
| 236 | shl esi,24 |
| 237 | xor r8d,ebp |
| 238 | shl edi,24 |
| 239 | xor r10d,esi |
| 240 | shl edx,24 |
| 241 | xor r11d,edi |
| 242 | shl ecx,24 |
| 243 | mov eax,r10d |
| 244 | mov ebx,r11d |
| 245 | xor ecx,r12d |
| 246 | xor edx,r8d |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 247 | cmp r15,QWORD[16+rsp] |
| 248 | je NEAR $L$enc_compact_done |
| 249 | mov r10d,0x80808080 |
| 250 | mov r11d,0x80808080 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 251 | and r10d,eax |
| 252 | and r11d,ebx |
| 253 | mov esi,r10d |
| 254 | mov edi,r11d |
| 255 | shr r10d,7 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 256 | lea r8d,[rax*1+rax] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 257 | shr r11d,7 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 258 | lea r9d,[rbx*1+rbx] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 259 | sub esi,r10d |
| 260 | sub edi,r11d |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 261 | and r8d,0xfefefefe |
| 262 | and r9d,0xfefefefe |
| 263 | and esi,0x1b1b1b1b |
| 264 | and edi,0x1b1b1b1b |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 265 | mov r10d,eax |
| 266 | mov r11d,ebx |
| 267 | xor r8d,esi |
| 268 | xor r9d,edi |
| 269 | |
| 270 | xor eax,r8d |
| 271 | xor ebx,r9d |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 272 | mov r12d,0x80808080 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 273 | rol eax,24 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 274 | mov ebp,0x80808080 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 275 | rol ebx,24 |
| 276 | and r12d,ecx |
| 277 | and ebp,edx |
| 278 | xor eax,r8d |
| 279 | xor ebx,r9d |
| 280 | mov esi,r12d |
| 281 | ror r10d,16 |
| 282 | mov edi,ebp |
| 283 | ror r11d,16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 284 | lea r8d,[rcx*1+rcx] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 285 | shr r12d,7 |
| 286 | xor eax,r10d |
| 287 | shr ebp,7 |
| 288 | xor ebx,r11d |
| 289 | ror r10d,8 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 290 | lea r9d,[rdx*1+rdx] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 291 | ror r11d,8 |
| 292 | sub esi,r12d |
| 293 | sub edi,ebp |
| 294 | xor eax,r10d |
| 295 | xor ebx,r11d |
| 296 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 297 | and r8d,0xfefefefe |
| 298 | and r9d,0xfefefefe |
| 299 | and esi,0x1b1b1b1b |
| 300 | and edi,0x1b1b1b1b |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 301 | mov r12d,ecx |
| 302 | mov ebp,edx |
| 303 | xor r8d,esi |
| 304 | xor r9d,edi |
| 305 | |
| 306 | ror r12d,16 |
| 307 | xor ecx,r8d |
| 308 | ror ebp,16 |
| 309 | xor edx,r9d |
| 310 | rol ecx,24 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 311 | mov esi,DWORD[r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 312 | rol edx,24 |
| 313 | xor ecx,r8d |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 314 | mov edi,DWORD[64+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 315 | xor edx,r9d |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 316 | mov r8d,DWORD[128+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 317 | xor ecx,r12d |
| 318 | ror r12d,8 |
| 319 | xor edx,ebp |
| 320 | ror ebp,8 |
| 321 | xor ecx,r12d |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 322 | mov r9d,DWORD[192+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 323 | xor edx,ebp |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 324 | jmp NEAR $L$enc_loop_compact |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 325 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 326 | $L$enc_compact_done: |
| 327 | xor eax,DWORD[r15] |
| 328 | xor ebx,DWORD[4+r15] |
| 329 | xor ecx,DWORD[8+r15] |
| 330 | xor edx,DWORD[12+r15] |
| 331 | DB 0xf3,0xc3 |
| 332 | |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 333 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 334 | global asm_AES_encrypt |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 335 | |
| 336 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 337 | asm_AES_encrypt: |
| 338 | mov QWORD[8+rsp],rdi ;WIN64 prologue |
| 339 | mov QWORD[16+rsp],rsi |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 340 | mov rax,rsp |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 341 | $L$SEH_begin_asm_AES_encrypt: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 342 | mov rdi,rcx |
| 343 | mov rsi,rdx |
| 344 | mov rdx,r8 |
| 345 | |
| 346 | |
Robert Sloan | a94fe05 | 2017-02-21 08:49:28 -0800 | [diff] [blame] | 347 | mov rax,rsp |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 348 | push rbx |
| 349 | push rbp |
| 350 | push r12 |
| 351 | push r13 |
| 352 | push r14 |
| 353 | push r15 |
| 354 | |
| 355 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 356 | lea rcx,[((-63))+rdx] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 357 | and rsp,-64 |
| 358 | sub rcx,rsp |
| 359 | neg rcx |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 360 | and rcx,0x3c0 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 361 | sub rsp,rcx |
| 362 | sub rsp,32 |
| 363 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 364 | mov QWORD[16+rsp],rsi |
Robert Sloan | a94fe05 | 2017-02-21 08:49:28 -0800 | [diff] [blame] | 365 | mov QWORD[24+rsp],rax |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 366 | $L$enc_prologue: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 367 | |
| 368 | mov r15,rdx |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 369 | mov r13d,DWORD[240+r15] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 370 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 371 | mov eax,DWORD[rdi] |
| 372 | mov ebx,DWORD[4+rdi] |
| 373 | mov ecx,DWORD[8+rdi] |
| 374 | mov edx,DWORD[12+rdi] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 375 | |
| 376 | shl r13d,4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 377 | lea rbp,[r13*1+r15] |
| 378 | mov QWORD[rsp],r15 |
| 379 | mov QWORD[8+rsp],rbp |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 380 | |
| 381 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 382 | lea r14,[(($L$AES_Te+2048))] |
| 383 | lea rbp,[768+rsp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 384 | sub rbp,r14 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 385 | and rbp,0x300 |
| 386 | lea r14,[rbp*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 387 | |
| 388 | call _x86_64_AES_encrypt_compact |
| 389 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 390 | mov r9,QWORD[16+rsp] |
| 391 | mov rsi,QWORD[24+rsp] |
| 392 | mov DWORD[r9],eax |
| 393 | mov DWORD[4+r9],ebx |
| 394 | mov DWORD[8+r9],ecx |
| 395 | mov DWORD[12+r9],edx |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 396 | |
Robert Sloan | a94fe05 | 2017-02-21 08:49:28 -0800 | [diff] [blame] | 397 | mov r15,QWORD[((-48))+rsi] |
| 398 | mov r14,QWORD[((-40))+rsi] |
| 399 | mov r13,QWORD[((-32))+rsi] |
| 400 | mov r12,QWORD[((-24))+rsi] |
| 401 | mov rbp,QWORD[((-16))+rsi] |
| 402 | mov rbx,QWORD[((-8))+rsi] |
| 403 | lea rsp,[rsi] |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 404 | $L$enc_epilogue: |
| 405 | mov rdi,QWORD[8+rsp] ;WIN64 epilogue |
| 406 | mov rsi,QWORD[16+rsp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 407 | DB 0F3h,0C3h ;repret |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 408 | $L$SEH_end_asm_AES_encrypt: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 409 | |
| 410 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 411 | _x86_64_AES_decrypt: |
| 412 | xor eax,DWORD[r15] |
| 413 | xor ebx,DWORD[4+r15] |
| 414 | xor ecx,DWORD[8+r15] |
| 415 | xor edx,DWORD[12+r15] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 416 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 417 | mov r13d,DWORD[240+r15] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 418 | sub r13d,1 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 419 | jmp NEAR $L$dec_loop |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 420 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 421 | $L$dec_loop: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 422 | |
| 423 | movzx esi,al |
| 424 | movzx edi,bl |
| 425 | movzx ebp,cl |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 426 | mov r10d,DWORD[rsi*8+r14] |
| 427 | mov r11d,DWORD[rdi*8+r14] |
| 428 | mov r12d,DWORD[rbp*8+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 429 | |
| 430 | movzx esi,dh |
| 431 | movzx edi,ah |
| 432 | movzx ebp,dl |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 433 | xor r10d,DWORD[3+rsi*8+r14] |
| 434 | xor r11d,DWORD[3+rdi*8+r14] |
| 435 | mov r8d,DWORD[rbp*8+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 436 | |
| 437 | movzx esi,bh |
| 438 | shr eax,16 |
| 439 | movzx ebp,ch |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 440 | xor r12d,DWORD[3+rsi*8+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 441 | shr edx,16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 442 | xor r8d,DWORD[3+rbp*8+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 443 | |
| 444 | shr ebx,16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 445 | lea r15,[16+r15] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 446 | shr ecx,16 |
| 447 | |
| 448 | movzx esi,cl |
| 449 | movzx edi,dl |
| 450 | movzx ebp,al |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 451 | xor r10d,DWORD[2+rsi*8+r14] |
| 452 | xor r11d,DWORD[2+rdi*8+r14] |
| 453 | xor r12d,DWORD[2+rbp*8+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 454 | |
| 455 | movzx esi,bh |
| 456 | movzx edi,ch |
| 457 | movzx ebp,bl |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 458 | xor r10d,DWORD[1+rsi*8+r14] |
| 459 | xor r11d,DWORD[1+rdi*8+r14] |
| 460 | xor r8d,DWORD[2+rbp*8+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 461 | |
| 462 | movzx esi,dh |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 463 | mov edx,DWORD[12+r15] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 464 | movzx ebp,ah |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 465 | xor r12d,DWORD[1+rsi*8+r14] |
| 466 | mov eax,DWORD[r15] |
| 467 | xor r8d,DWORD[1+rbp*8+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 468 | |
| 469 | xor eax,r10d |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 470 | mov ebx,DWORD[4+r15] |
| 471 | mov ecx,DWORD[8+r15] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 472 | xor ecx,r12d |
| 473 | xor ebx,r11d |
| 474 | xor edx,r8d |
| 475 | sub r13d,1 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 476 | jnz NEAR $L$dec_loop |
| 477 | lea r14,[2048+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 478 | movzx esi,al |
| 479 | movzx edi,bl |
| 480 | movzx ebp,cl |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 481 | movzx r10d,BYTE[rsi*1+r14] |
| 482 | movzx r11d,BYTE[rdi*1+r14] |
| 483 | movzx r12d,BYTE[rbp*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 484 | |
| 485 | movzx esi,dl |
| 486 | movzx edi,dh |
| 487 | movzx ebp,ah |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 488 | movzx r8d,BYTE[rsi*1+r14] |
| 489 | movzx edi,BYTE[rdi*1+r14] |
| 490 | movzx ebp,BYTE[rbp*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 491 | |
| 492 | shl edi,8 |
| 493 | shl ebp,8 |
| 494 | |
| 495 | xor r10d,edi |
| 496 | xor r11d,ebp |
| 497 | shr edx,16 |
| 498 | |
| 499 | movzx esi,bh |
| 500 | movzx edi,ch |
| 501 | shr eax,16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 502 | movzx esi,BYTE[rsi*1+r14] |
| 503 | movzx edi,BYTE[rdi*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 504 | |
| 505 | shl esi,8 |
| 506 | shl edi,8 |
| 507 | shr ebx,16 |
| 508 | xor r12d,esi |
| 509 | xor r8d,edi |
| 510 | shr ecx,16 |
| 511 | |
| 512 | movzx esi,cl |
| 513 | movzx edi,dl |
| 514 | movzx ebp,al |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 515 | movzx esi,BYTE[rsi*1+r14] |
| 516 | movzx edi,BYTE[rdi*1+r14] |
| 517 | movzx ebp,BYTE[rbp*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 518 | |
| 519 | shl esi,16 |
| 520 | shl edi,16 |
| 521 | shl ebp,16 |
| 522 | |
| 523 | xor r10d,esi |
| 524 | xor r11d,edi |
| 525 | xor r12d,ebp |
| 526 | |
| 527 | movzx esi,bl |
| 528 | movzx edi,bh |
| 529 | movzx ebp,ch |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 530 | movzx esi,BYTE[rsi*1+r14] |
| 531 | movzx edi,BYTE[rdi*1+r14] |
| 532 | movzx ebp,BYTE[rbp*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 533 | |
| 534 | shl esi,16 |
| 535 | shl edi,24 |
| 536 | shl ebp,24 |
| 537 | |
| 538 | xor r8d,esi |
| 539 | xor r10d,edi |
| 540 | xor r11d,ebp |
| 541 | |
| 542 | movzx esi,dh |
| 543 | movzx edi,ah |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 544 | mov edx,DWORD[((16+12))+r15] |
| 545 | movzx esi,BYTE[rsi*1+r14] |
| 546 | movzx edi,BYTE[rdi*1+r14] |
| 547 | mov eax,DWORD[((16+0))+r15] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 548 | |
| 549 | shl esi,24 |
| 550 | shl edi,24 |
| 551 | |
| 552 | xor r12d,esi |
| 553 | xor r8d,edi |
| 554 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 555 | mov ebx,DWORD[((16+4))+r15] |
| 556 | mov ecx,DWORD[((16+8))+r15] |
| 557 | lea r14,[((-2048))+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 558 | xor eax,r10d |
| 559 | xor ebx,r11d |
| 560 | xor ecx,r12d |
| 561 | xor edx,r8d |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 562 | DB 0xf3,0xc3 |
| 563 | |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 564 | |
| 565 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 566 | _x86_64_AES_decrypt_compact: |
| 567 | lea r8,[128+r14] |
| 568 | mov edi,DWORD[((0-128))+r8] |
| 569 | mov ebp,DWORD[((32-128))+r8] |
| 570 | mov r10d,DWORD[((64-128))+r8] |
| 571 | mov r11d,DWORD[((96-128))+r8] |
| 572 | mov edi,DWORD[((128-128))+r8] |
| 573 | mov ebp,DWORD[((160-128))+r8] |
| 574 | mov r10d,DWORD[((192-128))+r8] |
| 575 | mov r11d,DWORD[((224-128))+r8] |
| 576 | jmp NEAR $L$dec_loop_compact |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 577 | |
| 578 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 579 | $L$dec_loop_compact: |
| 580 | xor eax,DWORD[r15] |
| 581 | xor ebx,DWORD[4+r15] |
| 582 | xor ecx,DWORD[8+r15] |
| 583 | xor edx,DWORD[12+r15] |
| 584 | lea r15,[16+r15] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 585 | movzx r10d,al |
| 586 | movzx r11d,bl |
| 587 | movzx r12d,cl |
| 588 | movzx r8d,dl |
| 589 | movzx esi,dh |
| 590 | movzx edi,ah |
| 591 | shr edx,16 |
| 592 | movzx ebp,bh |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 593 | movzx r10d,BYTE[r10*1+r14] |
| 594 | movzx r11d,BYTE[r11*1+r14] |
| 595 | movzx r12d,BYTE[r12*1+r14] |
| 596 | movzx r8d,BYTE[r8*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 597 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 598 | movzx r9d,BYTE[rsi*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 599 | movzx esi,ch |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 600 | movzx r13d,BYTE[rdi*1+r14] |
| 601 | movzx ebp,BYTE[rbp*1+r14] |
| 602 | movzx esi,BYTE[rsi*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 603 | |
| 604 | shr ecx,16 |
| 605 | shl r13d,8 |
| 606 | shl r9d,8 |
| 607 | movzx edi,cl |
| 608 | shr eax,16 |
| 609 | xor r10d,r9d |
| 610 | shr ebx,16 |
| 611 | movzx r9d,dl |
| 612 | |
| 613 | shl ebp,8 |
| 614 | xor r11d,r13d |
| 615 | shl esi,8 |
| 616 | movzx r13d,al |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 617 | movzx edi,BYTE[rdi*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 618 | xor r12d,ebp |
| 619 | movzx ebp,bl |
| 620 | |
| 621 | shl edi,16 |
| 622 | xor r8d,esi |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 623 | movzx r9d,BYTE[r9*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 624 | movzx esi,bh |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 625 | movzx ebp,BYTE[rbp*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 626 | xor r10d,edi |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 627 | movzx r13d,BYTE[r13*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 628 | movzx edi,ch |
| 629 | |
| 630 | shl ebp,16 |
| 631 | shl r9d,16 |
| 632 | shl r13d,16 |
| 633 | xor r8d,ebp |
| 634 | movzx ebp,dh |
| 635 | xor r11d,r9d |
| 636 | shr eax,8 |
| 637 | xor r12d,r13d |
| 638 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 639 | movzx esi,BYTE[rsi*1+r14] |
| 640 | movzx ebx,BYTE[rdi*1+r14] |
| 641 | movzx ecx,BYTE[rbp*1+r14] |
| 642 | movzx edx,BYTE[rax*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 643 | |
| 644 | mov eax,r10d |
| 645 | shl esi,24 |
| 646 | shl ebx,24 |
| 647 | shl ecx,24 |
| 648 | xor eax,esi |
| 649 | shl edx,24 |
| 650 | xor ebx,r11d |
| 651 | xor ecx,r12d |
| 652 | xor edx,r8d |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 653 | cmp r15,QWORD[16+rsp] |
| 654 | je NEAR $L$dec_compact_done |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 655 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 656 | mov rsi,QWORD[((256+0))+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 657 | shl rbx,32 |
| 658 | shl rdx,32 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 659 | mov rdi,QWORD[((256+8))+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 660 | or rax,rbx |
| 661 | or rcx,rdx |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 662 | mov rbp,QWORD[((256+16))+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 663 | mov r9,rsi |
| 664 | mov r12,rsi |
| 665 | and r9,rax |
| 666 | and r12,rcx |
| 667 | mov rbx,r9 |
| 668 | mov rdx,r12 |
| 669 | shr r9,7 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 670 | lea r8,[rax*1+rax] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 671 | shr r12,7 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 672 | lea r11,[rcx*1+rcx] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 673 | sub rbx,r9 |
| 674 | sub rdx,r12 |
| 675 | and r8,rdi |
| 676 | and r11,rdi |
| 677 | and rbx,rbp |
| 678 | and rdx,rbp |
| 679 | xor r8,rbx |
| 680 | xor r11,rdx |
| 681 | mov r10,rsi |
| 682 | mov r13,rsi |
| 683 | |
| 684 | and r10,r8 |
| 685 | and r13,r11 |
| 686 | mov rbx,r10 |
| 687 | mov rdx,r13 |
| 688 | shr r10,7 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 689 | lea r9,[r8*1+r8] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 690 | shr r13,7 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 691 | lea r12,[r11*1+r11] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 692 | sub rbx,r10 |
| 693 | sub rdx,r13 |
| 694 | and r9,rdi |
| 695 | and r12,rdi |
| 696 | and rbx,rbp |
| 697 | and rdx,rbp |
| 698 | xor r9,rbx |
| 699 | xor r12,rdx |
| 700 | mov r10,rsi |
| 701 | mov r13,rsi |
| 702 | |
| 703 | and r10,r9 |
| 704 | and r13,r12 |
| 705 | mov rbx,r10 |
| 706 | mov rdx,r13 |
| 707 | shr r10,7 |
| 708 | xor r8,rax |
| 709 | shr r13,7 |
| 710 | xor r11,rcx |
| 711 | sub rbx,r10 |
| 712 | sub rdx,r13 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 713 | lea r10,[r9*1+r9] |
| 714 | lea r13,[r12*1+r12] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 715 | xor r9,rax |
| 716 | xor r12,rcx |
| 717 | and r10,rdi |
| 718 | and r13,rdi |
| 719 | and rbx,rbp |
| 720 | and rdx,rbp |
| 721 | xor r10,rbx |
| 722 | xor r13,rdx |
| 723 | |
| 724 | xor rax,r10 |
| 725 | xor rcx,r13 |
| 726 | xor r8,r10 |
| 727 | xor r11,r13 |
| 728 | mov rbx,rax |
| 729 | mov rdx,rcx |
| 730 | xor r9,r10 |
| 731 | shr rbx,32 |
| 732 | xor r12,r13 |
| 733 | shr rdx,32 |
| 734 | xor r10,r8 |
| 735 | rol eax,8 |
| 736 | xor r13,r11 |
| 737 | rol ecx,8 |
| 738 | xor r10,r9 |
| 739 | rol ebx,8 |
| 740 | xor r13,r12 |
| 741 | |
| 742 | rol edx,8 |
| 743 | xor eax,r10d |
| 744 | shr r10,32 |
| 745 | xor ecx,r13d |
| 746 | shr r13,32 |
| 747 | xor ebx,r10d |
| 748 | xor edx,r13d |
| 749 | |
| 750 | mov r10,r8 |
| 751 | rol r8d,24 |
| 752 | mov r13,r11 |
| 753 | rol r11d,24 |
| 754 | shr r10,32 |
| 755 | xor eax,r8d |
| 756 | shr r13,32 |
| 757 | xor ecx,r11d |
| 758 | rol r10d,24 |
| 759 | mov r8,r9 |
| 760 | rol r13d,24 |
| 761 | mov r11,r12 |
| 762 | shr r8,32 |
| 763 | xor ebx,r10d |
| 764 | shr r11,32 |
| 765 | xor edx,r13d |
| 766 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 767 | mov rsi,QWORD[r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 768 | rol r9d,16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 769 | mov rdi,QWORD[64+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 770 | rol r12d,16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 771 | mov rbp,QWORD[128+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 772 | rol r8d,16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 773 | mov r10,QWORD[192+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 774 | xor eax,r9d |
| 775 | rol r11d,16 |
| 776 | xor ecx,r12d |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 777 | mov r13,QWORD[256+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 778 | xor ebx,r8d |
| 779 | xor edx,r11d |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 780 | jmp NEAR $L$dec_loop_compact |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 781 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 782 | $L$dec_compact_done: |
| 783 | xor eax,DWORD[r15] |
| 784 | xor ebx,DWORD[4+r15] |
| 785 | xor ecx,DWORD[8+r15] |
| 786 | xor edx,DWORD[12+r15] |
| 787 | DB 0xf3,0xc3 |
| 788 | |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 789 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 790 | global asm_AES_decrypt |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 791 | |
| 792 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 793 | asm_AES_decrypt: |
| 794 | mov QWORD[8+rsp],rdi ;WIN64 prologue |
| 795 | mov QWORD[16+rsp],rsi |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 796 | mov rax,rsp |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 797 | $L$SEH_begin_asm_AES_decrypt: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 798 | mov rdi,rcx |
| 799 | mov rsi,rdx |
| 800 | mov rdx,r8 |
| 801 | |
| 802 | |
Robert Sloan | a94fe05 | 2017-02-21 08:49:28 -0800 | [diff] [blame] | 803 | mov rax,rsp |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 804 | push rbx |
| 805 | push rbp |
| 806 | push r12 |
| 807 | push r13 |
| 808 | push r14 |
| 809 | push r15 |
| 810 | |
| 811 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 812 | lea rcx,[((-63))+rdx] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 813 | and rsp,-64 |
| 814 | sub rcx,rsp |
| 815 | neg rcx |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 816 | and rcx,0x3c0 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 817 | sub rsp,rcx |
| 818 | sub rsp,32 |
| 819 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 820 | mov QWORD[16+rsp],rsi |
Robert Sloan | a94fe05 | 2017-02-21 08:49:28 -0800 | [diff] [blame] | 821 | mov QWORD[24+rsp],rax |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 822 | $L$dec_prologue: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 823 | |
| 824 | mov r15,rdx |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 825 | mov r13d,DWORD[240+r15] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 826 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 827 | mov eax,DWORD[rdi] |
| 828 | mov ebx,DWORD[4+rdi] |
| 829 | mov ecx,DWORD[8+rdi] |
| 830 | mov edx,DWORD[12+rdi] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 831 | |
| 832 | shl r13d,4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 833 | lea rbp,[r13*1+r15] |
| 834 | mov QWORD[rsp],r15 |
| 835 | mov QWORD[8+rsp],rbp |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 836 | |
| 837 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 838 | lea r14,[(($L$AES_Td+2048))] |
| 839 | lea rbp,[768+rsp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 840 | sub rbp,r14 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 841 | and rbp,0x300 |
| 842 | lea r14,[rbp*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 843 | shr rbp,3 |
| 844 | add r14,rbp |
| 845 | |
| 846 | call _x86_64_AES_decrypt_compact |
| 847 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 848 | mov r9,QWORD[16+rsp] |
| 849 | mov rsi,QWORD[24+rsp] |
| 850 | mov DWORD[r9],eax |
| 851 | mov DWORD[4+r9],ebx |
| 852 | mov DWORD[8+r9],ecx |
| 853 | mov DWORD[12+r9],edx |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 854 | |
Robert Sloan | a94fe05 | 2017-02-21 08:49:28 -0800 | [diff] [blame] | 855 | mov r15,QWORD[((-48))+rsi] |
| 856 | mov r14,QWORD[((-40))+rsi] |
| 857 | mov r13,QWORD[((-32))+rsi] |
| 858 | mov r12,QWORD[((-24))+rsi] |
| 859 | mov rbp,QWORD[((-16))+rsi] |
| 860 | mov rbx,QWORD[((-8))+rsi] |
| 861 | lea rsp,[rsi] |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 862 | $L$dec_epilogue: |
| 863 | mov rdi,QWORD[8+rsp] ;WIN64 epilogue |
| 864 | mov rsi,QWORD[16+rsp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 865 | DB 0F3h,0C3h ;repret |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 866 | $L$SEH_end_asm_AES_decrypt: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 867 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 868 | global asm_AES_set_encrypt_key |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 869 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 870 | asm_AES_set_encrypt_key: |
| 871 | mov QWORD[8+rsp],rdi ;WIN64 prologue |
| 872 | mov QWORD[16+rsp],rsi |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 873 | mov rax,rsp |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 874 | $L$SEH_begin_asm_AES_set_encrypt_key: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 875 | mov rdi,rcx |
| 876 | mov rsi,rdx |
| 877 | mov rdx,r8 |
| 878 | |
| 879 | |
| 880 | push rbx |
| 881 | push rbp |
| 882 | push r12 |
| 883 | push r13 |
| 884 | push r14 |
| 885 | push r15 |
| 886 | sub rsp,8 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 887 | $L$enc_key_prologue: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 888 | |
| 889 | call _x86_64_AES_set_encrypt_key |
| 890 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 891 | mov rbp,QWORD[40+rsp] |
| 892 | mov rbx,QWORD[48+rsp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 893 | add rsp,56 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 894 | $L$enc_key_epilogue: |
| 895 | mov rdi,QWORD[8+rsp] ;WIN64 epilogue |
| 896 | mov rsi,QWORD[16+rsp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 897 | DB 0F3h,0C3h ;repret |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 898 | $L$SEH_end_asm_AES_set_encrypt_key: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 899 | |
| 900 | |
| 901 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 902 | _x86_64_AES_set_encrypt_key: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 903 | mov ecx,esi |
| 904 | mov rsi,rdi |
| 905 | mov rdi,rdx |
| 906 | |
| 907 | test rsi,-1 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 908 | jz NEAR $L$badpointer |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 909 | test rdi,-1 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 910 | jz NEAR $L$badpointer |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 911 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 912 | lea rbp,[$L$AES_Te] |
| 913 | lea rbp,[((2048+128))+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 914 | |
| 915 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 916 | mov eax,DWORD[((0-128))+rbp] |
| 917 | mov ebx,DWORD[((32-128))+rbp] |
| 918 | mov r8d,DWORD[((64-128))+rbp] |
| 919 | mov edx,DWORD[((96-128))+rbp] |
| 920 | mov eax,DWORD[((128-128))+rbp] |
| 921 | mov ebx,DWORD[((160-128))+rbp] |
| 922 | mov r8d,DWORD[((192-128))+rbp] |
| 923 | mov edx,DWORD[((224-128))+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 924 | |
| 925 | cmp ecx,128 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 926 | je NEAR $L$10rounds |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 927 | cmp ecx,192 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 928 | je NEAR $L$12rounds |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 929 | cmp ecx,256 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 930 | je NEAR $L$14rounds |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 931 | mov rax,-2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 932 | jmp NEAR $L$exit |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 933 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 934 | $L$10rounds: |
| 935 | mov rax,QWORD[rsi] |
| 936 | mov rdx,QWORD[8+rsi] |
| 937 | mov QWORD[rdi],rax |
| 938 | mov QWORD[8+rdi],rdx |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 939 | |
| 940 | shr rdx,32 |
| 941 | xor ecx,ecx |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 942 | jmp NEAR $L$10shortcut |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 943 | ALIGN 4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 944 | $L$10loop: |
| 945 | mov eax,DWORD[rdi] |
| 946 | mov edx,DWORD[12+rdi] |
| 947 | $L$10shortcut: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 948 | movzx esi,dl |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 949 | movzx ebx,BYTE[((-128))+rsi*1+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 950 | movzx esi,dh |
| 951 | shl ebx,24 |
| 952 | xor eax,ebx |
| 953 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 954 | movzx ebx,BYTE[((-128))+rsi*1+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 955 | shr edx,16 |
| 956 | movzx esi,dl |
| 957 | xor eax,ebx |
| 958 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 959 | movzx ebx,BYTE[((-128))+rsi*1+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 960 | movzx esi,dh |
| 961 | shl ebx,8 |
| 962 | xor eax,ebx |
| 963 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 964 | movzx ebx,BYTE[((-128))+rsi*1+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 965 | shl ebx,16 |
| 966 | xor eax,ebx |
| 967 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 968 | xor eax,DWORD[((1024-128))+rcx*4+rbp] |
| 969 | mov DWORD[16+rdi],eax |
| 970 | xor eax,DWORD[4+rdi] |
| 971 | mov DWORD[20+rdi],eax |
| 972 | xor eax,DWORD[8+rdi] |
| 973 | mov DWORD[24+rdi],eax |
| 974 | xor eax,DWORD[12+rdi] |
| 975 | mov DWORD[28+rdi],eax |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 976 | add ecx,1 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 977 | lea rdi,[16+rdi] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 978 | cmp ecx,10 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 979 | jl NEAR $L$10loop |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 980 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 981 | mov DWORD[80+rdi],10 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 982 | xor rax,rax |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 983 | jmp NEAR $L$exit |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 984 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 985 | $L$12rounds: |
| 986 | mov rax,QWORD[rsi] |
| 987 | mov rbx,QWORD[8+rsi] |
| 988 | mov rdx,QWORD[16+rsi] |
| 989 | mov QWORD[rdi],rax |
| 990 | mov QWORD[8+rdi],rbx |
| 991 | mov QWORD[16+rdi],rdx |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 992 | |
| 993 | shr rdx,32 |
| 994 | xor ecx,ecx |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 995 | jmp NEAR $L$12shortcut |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 996 | ALIGN 4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 997 | $L$12loop: |
| 998 | mov eax,DWORD[rdi] |
| 999 | mov edx,DWORD[20+rdi] |
| 1000 | $L$12shortcut: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1001 | movzx esi,dl |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1002 | movzx ebx,BYTE[((-128))+rsi*1+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1003 | movzx esi,dh |
| 1004 | shl ebx,24 |
| 1005 | xor eax,ebx |
| 1006 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1007 | movzx ebx,BYTE[((-128))+rsi*1+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1008 | shr edx,16 |
| 1009 | movzx esi,dl |
| 1010 | xor eax,ebx |
| 1011 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1012 | movzx ebx,BYTE[((-128))+rsi*1+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1013 | movzx esi,dh |
| 1014 | shl ebx,8 |
| 1015 | xor eax,ebx |
| 1016 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1017 | movzx ebx,BYTE[((-128))+rsi*1+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1018 | shl ebx,16 |
| 1019 | xor eax,ebx |
| 1020 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1021 | xor eax,DWORD[((1024-128))+rcx*4+rbp] |
| 1022 | mov DWORD[24+rdi],eax |
| 1023 | xor eax,DWORD[4+rdi] |
| 1024 | mov DWORD[28+rdi],eax |
| 1025 | xor eax,DWORD[8+rdi] |
| 1026 | mov DWORD[32+rdi],eax |
| 1027 | xor eax,DWORD[12+rdi] |
| 1028 | mov DWORD[36+rdi],eax |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1029 | |
| 1030 | cmp ecx,7 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1031 | je NEAR $L$12break |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1032 | add ecx,1 |
| 1033 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1034 | xor eax,DWORD[16+rdi] |
| 1035 | mov DWORD[40+rdi],eax |
| 1036 | xor eax,DWORD[20+rdi] |
| 1037 | mov DWORD[44+rdi],eax |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1038 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1039 | lea rdi,[24+rdi] |
| 1040 | jmp NEAR $L$12loop |
| 1041 | $L$12break: |
| 1042 | mov DWORD[72+rdi],12 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1043 | xor rax,rax |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1044 | jmp NEAR $L$exit |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1045 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1046 | $L$14rounds: |
| 1047 | mov rax,QWORD[rsi] |
| 1048 | mov rbx,QWORD[8+rsi] |
| 1049 | mov rcx,QWORD[16+rsi] |
| 1050 | mov rdx,QWORD[24+rsi] |
| 1051 | mov QWORD[rdi],rax |
| 1052 | mov QWORD[8+rdi],rbx |
| 1053 | mov QWORD[16+rdi],rcx |
| 1054 | mov QWORD[24+rdi],rdx |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1055 | |
| 1056 | shr rdx,32 |
| 1057 | xor ecx,ecx |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1058 | jmp NEAR $L$14shortcut |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1059 | ALIGN 4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1060 | $L$14loop: |
| 1061 | mov eax,DWORD[rdi] |
| 1062 | mov edx,DWORD[28+rdi] |
| 1063 | $L$14shortcut: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1064 | movzx esi,dl |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1065 | movzx ebx,BYTE[((-128))+rsi*1+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1066 | movzx esi,dh |
| 1067 | shl ebx,24 |
| 1068 | xor eax,ebx |
| 1069 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1070 | movzx ebx,BYTE[((-128))+rsi*1+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1071 | shr edx,16 |
| 1072 | movzx esi,dl |
| 1073 | xor eax,ebx |
| 1074 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1075 | movzx ebx,BYTE[((-128))+rsi*1+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1076 | movzx esi,dh |
| 1077 | shl ebx,8 |
| 1078 | xor eax,ebx |
| 1079 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1080 | movzx ebx,BYTE[((-128))+rsi*1+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1081 | shl ebx,16 |
| 1082 | xor eax,ebx |
| 1083 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1084 | xor eax,DWORD[((1024-128))+rcx*4+rbp] |
| 1085 | mov DWORD[32+rdi],eax |
| 1086 | xor eax,DWORD[4+rdi] |
| 1087 | mov DWORD[36+rdi],eax |
| 1088 | xor eax,DWORD[8+rdi] |
| 1089 | mov DWORD[40+rdi],eax |
| 1090 | xor eax,DWORD[12+rdi] |
| 1091 | mov DWORD[44+rdi],eax |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1092 | |
| 1093 | cmp ecx,6 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1094 | je NEAR $L$14break |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1095 | add ecx,1 |
| 1096 | |
| 1097 | mov edx,eax |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1098 | mov eax,DWORD[16+rdi] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1099 | movzx esi,dl |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1100 | movzx ebx,BYTE[((-128))+rsi*1+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1101 | movzx esi,dh |
| 1102 | xor eax,ebx |
| 1103 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1104 | movzx ebx,BYTE[((-128))+rsi*1+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1105 | shr edx,16 |
| 1106 | shl ebx,8 |
| 1107 | movzx esi,dl |
| 1108 | xor eax,ebx |
| 1109 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1110 | movzx ebx,BYTE[((-128))+rsi*1+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1111 | movzx esi,dh |
| 1112 | shl ebx,16 |
| 1113 | xor eax,ebx |
| 1114 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1115 | movzx ebx,BYTE[((-128))+rsi*1+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1116 | shl ebx,24 |
| 1117 | xor eax,ebx |
| 1118 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1119 | mov DWORD[48+rdi],eax |
| 1120 | xor eax,DWORD[20+rdi] |
| 1121 | mov DWORD[52+rdi],eax |
| 1122 | xor eax,DWORD[24+rdi] |
| 1123 | mov DWORD[56+rdi],eax |
| 1124 | xor eax,DWORD[28+rdi] |
| 1125 | mov DWORD[60+rdi],eax |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1126 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1127 | lea rdi,[32+rdi] |
| 1128 | jmp NEAR $L$14loop |
| 1129 | $L$14break: |
| 1130 | mov DWORD[48+rdi],14 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1131 | xor rax,rax |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1132 | jmp NEAR $L$exit |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1133 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1134 | $L$badpointer: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1135 | mov rax,-1 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1136 | $L$exit: |
| 1137 | DB 0xf3,0xc3 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1138 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1139 | ALIGN 16 |
| 1140 | global asm_AES_set_decrypt_key |
| 1141 | |
| 1142 | asm_AES_set_decrypt_key: |
| 1143 | mov QWORD[8+rsp],rdi ;WIN64 prologue |
| 1144 | mov QWORD[16+rsp],rsi |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1145 | mov rax,rsp |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1146 | $L$SEH_begin_asm_AES_set_decrypt_key: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1147 | mov rdi,rcx |
| 1148 | mov rsi,rdx |
| 1149 | mov rdx,r8 |
| 1150 | |
| 1151 | |
| 1152 | push rbx |
| 1153 | push rbp |
| 1154 | push r12 |
| 1155 | push r13 |
| 1156 | push r14 |
| 1157 | push r15 |
| 1158 | push rdx |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1159 | $L$dec_key_prologue: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1160 | |
| 1161 | call _x86_64_AES_set_encrypt_key |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1162 | mov r8,QWORD[rsp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1163 | cmp eax,0 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1164 | jne NEAR $L$abort |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1165 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1166 | mov r14d,DWORD[240+r8] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1167 | xor rdi,rdi |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1168 | lea rcx,[r14*4+rdi] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1169 | mov rsi,r8 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1170 | lea rdi,[rcx*4+r8] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1171 | ALIGN 4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1172 | $L$invert: |
| 1173 | mov rax,QWORD[rsi] |
| 1174 | mov rbx,QWORD[8+rsi] |
| 1175 | mov rcx,QWORD[rdi] |
| 1176 | mov rdx,QWORD[8+rdi] |
| 1177 | mov QWORD[rdi],rax |
| 1178 | mov QWORD[8+rdi],rbx |
| 1179 | mov QWORD[rsi],rcx |
| 1180 | mov QWORD[8+rsi],rdx |
| 1181 | lea rsi,[16+rsi] |
| 1182 | lea rdi,[((-16))+rdi] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1183 | cmp rdi,rsi |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1184 | jne NEAR $L$invert |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1185 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1186 | lea rax,[(($L$AES_Te+2048+1024))] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1187 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1188 | mov rsi,QWORD[40+rax] |
| 1189 | mov rdi,QWORD[48+rax] |
| 1190 | mov rbp,QWORD[56+rax] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1191 | |
| 1192 | mov r15,r8 |
| 1193 | sub r14d,1 |
| 1194 | ALIGN 4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1195 | $L$permute: |
| 1196 | lea r15,[16+r15] |
| 1197 | mov rax,QWORD[r15] |
| 1198 | mov rcx,QWORD[8+r15] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1199 | mov r9,rsi |
| 1200 | mov r12,rsi |
| 1201 | and r9,rax |
| 1202 | and r12,rcx |
| 1203 | mov rbx,r9 |
| 1204 | mov rdx,r12 |
| 1205 | shr r9,7 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1206 | lea r8,[rax*1+rax] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1207 | shr r12,7 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1208 | lea r11,[rcx*1+rcx] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1209 | sub rbx,r9 |
| 1210 | sub rdx,r12 |
| 1211 | and r8,rdi |
| 1212 | and r11,rdi |
| 1213 | and rbx,rbp |
| 1214 | and rdx,rbp |
| 1215 | xor r8,rbx |
| 1216 | xor r11,rdx |
| 1217 | mov r10,rsi |
| 1218 | mov r13,rsi |
| 1219 | |
| 1220 | and r10,r8 |
| 1221 | and r13,r11 |
| 1222 | mov rbx,r10 |
| 1223 | mov rdx,r13 |
| 1224 | shr r10,7 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1225 | lea r9,[r8*1+r8] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1226 | shr r13,7 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1227 | lea r12,[r11*1+r11] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1228 | sub rbx,r10 |
| 1229 | sub rdx,r13 |
| 1230 | and r9,rdi |
| 1231 | and r12,rdi |
| 1232 | and rbx,rbp |
| 1233 | and rdx,rbp |
| 1234 | xor r9,rbx |
| 1235 | xor r12,rdx |
| 1236 | mov r10,rsi |
| 1237 | mov r13,rsi |
| 1238 | |
| 1239 | and r10,r9 |
| 1240 | and r13,r12 |
| 1241 | mov rbx,r10 |
| 1242 | mov rdx,r13 |
| 1243 | shr r10,7 |
| 1244 | xor r8,rax |
| 1245 | shr r13,7 |
| 1246 | xor r11,rcx |
| 1247 | sub rbx,r10 |
| 1248 | sub rdx,r13 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1249 | lea r10,[r9*1+r9] |
| 1250 | lea r13,[r12*1+r12] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1251 | xor r9,rax |
| 1252 | xor r12,rcx |
| 1253 | and r10,rdi |
| 1254 | and r13,rdi |
| 1255 | and rbx,rbp |
| 1256 | and rdx,rbp |
| 1257 | xor r10,rbx |
| 1258 | xor r13,rdx |
| 1259 | |
| 1260 | xor rax,r10 |
| 1261 | xor rcx,r13 |
| 1262 | xor r8,r10 |
| 1263 | xor r11,r13 |
| 1264 | mov rbx,rax |
| 1265 | mov rdx,rcx |
| 1266 | xor r9,r10 |
| 1267 | shr rbx,32 |
| 1268 | xor r12,r13 |
| 1269 | shr rdx,32 |
| 1270 | xor r10,r8 |
| 1271 | rol eax,8 |
| 1272 | xor r13,r11 |
| 1273 | rol ecx,8 |
| 1274 | xor r10,r9 |
| 1275 | rol ebx,8 |
| 1276 | xor r13,r12 |
| 1277 | |
| 1278 | rol edx,8 |
| 1279 | xor eax,r10d |
| 1280 | shr r10,32 |
| 1281 | xor ecx,r13d |
| 1282 | shr r13,32 |
| 1283 | xor ebx,r10d |
| 1284 | xor edx,r13d |
| 1285 | |
| 1286 | mov r10,r8 |
| 1287 | rol r8d,24 |
| 1288 | mov r13,r11 |
| 1289 | rol r11d,24 |
| 1290 | shr r10,32 |
| 1291 | xor eax,r8d |
| 1292 | shr r13,32 |
| 1293 | xor ecx,r11d |
| 1294 | rol r10d,24 |
| 1295 | mov r8,r9 |
| 1296 | rol r13d,24 |
| 1297 | mov r11,r12 |
| 1298 | shr r8,32 |
| 1299 | xor ebx,r10d |
| 1300 | shr r11,32 |
| 1301 | xor edx,r13d |
| 1302 | |
| 1303 | |
| 1304 | rol r9d,16 |
| 1305 | |
| 1306 | rol r12d,16 |
| 1307 | |
| 1308 | rol r8d,16 |
| 1309 | |
| 1310 | xor eax,r9d |
| 1311 | rol r11d,16 |
| 1312 | xor ecx,r12d |
| 1313 | |
| 1314 | xor ebx,r8d |
| 1315 | xor edx,r11d |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1316 | mov DWORD[r15],eax |
| 1317 | mov DWORD[4+r15],ebx |
| 1318 | mov DWORD[8+r15],ecx |
| 1319 | mov DWORD[12+r15],edx |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1320 | sub r14d,1 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1321 | jnz NEAR $L$permute |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1322 | |
| 1323 | xor rax,rax |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1324 | $L$abort: |
| 1325 | mov r15,QWORD[8+rsp] |
| 1326 | mov r14,QWORD[16+rsp] |
| 1327 | mov r13,QWORD[24+rsp] |
| 1328 | mov r12,QWORD[32+rsp] |
| 1329 | mov rbp,QWORD[40+rsp] |
| 1330 | mov rbx,QWORD[48+rsp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1331 | add rsp,56 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1332 | $L$dec_key_epilogue: |
| 1333 | mov rdi,QWORD[8+rsp] ;WIN64 epilogue |
| 1334 | mov rsi,QWORD[16+rsp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1335 | DB 0F3h,0C3h ;repret |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1336 | $L$SEH_end_asm_AES_set_decrypt_key: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1337 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1338 | global asm_AES_cbc_encrypt |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1339 | |
Robert Sloan | 2424d84 | 2017-05-01 07:46:28 -0700 | [diff] [blame] | 1340 | EXTERN OPENSSL_ia32cap_P |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1341 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1342 | asm_AES_cbc_encrypt: |
| 1343 | mov QWORD[8+rsp],rdi ;WIN64 prologue |
| 1344 | mov QWORD[16+rsp],rsi |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1345 | mov rax,rsp |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1346 | $L$SEH_begin_asm_AES_cbc_encrypt: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1347 | mov rdi,rcx |
| 1348 | mov rsi,rdx |
| 1349 | mov rdx,r8 |
| 1350 | mov rcx,r9 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1351 | mov r8,QWORD[40+rsp] |
| 1352 | mov r9,QWORD[48+rsp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1353 | |
| 1354 | |
| 1355 | cmp rdx,0 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1356 | je NEAR $L$cbc_epilogue |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1357 | pushfq |
| 1358 | push rbx |
| 1359 | push rbp |
| 1360 | push r12 |
| 1361 | push r13 |
| 1362 | push r14 |
| 1363 | push r15 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1364 | $L$cbc_prologue: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1365 | |
| 1366 | cld |
| 1367 | mov r9d,r9d |
| 1368 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1369 | lea r14,[$L$AES_Te] |
Robert Sloan | a94fe05 | 2017-02-21 08:49:28 -0800 | [diff] [blame] | 1370 | lea r10,[$L$AES_Td] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1371 | cmp r9,0 |
Robert Sloan | a94fe05 | 2017-02-21 08:49:28 -0800 | [diff] [blame] | 1372 | cmove r14,r10 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1373 | |
Robert Sloan | 2424d84 | 2017-05-01 07:46:28 -0700 | [diff] [blame] | 1374 | lea r10,[OPENSSL_ia32cap_P] |
Robert Sloan | 572a4e2 | 2017-04-17 10:52:19 -0700 | [diff] [blame] | 1375 | mov r10d,DWORD[r10] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1376 | cmp rdx,512 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1377 | jb NEAR $L$cbc_slow_prologue |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1378 | test rdx,15 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1379 | jnz NEAR $L$cbc_slow_prologue |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1380 | bt r10d,28 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1381 | jc NEAR $L$cbc_slow_prologue |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1382 | |
| 1383 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1384 | lea r15,[((-88-248))+rsp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1385 | and r15,-64 |
| 1386 | |
| 1387 | |
| 1388 | mov r10,r14 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1389 | lea r11,[2304+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1390 | mov r12,r15 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1391 | and r10,0xFFF |
| 1392 | and r11,0xFFF |
| 1393 | and r12,0xFFF |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1394 | |
| 1395 | cmp r12,r11 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1396 | jb NEAR $L$cbc_te_break_out |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1397 | sub r12,r11 |
| 1398 | sub r15,r12 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1399 | jmp NEAR $L$cbc_te_ok |
| 1400 | $L$cbc_te_break_out: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1401 | sub r12,r10 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1402 | and r12,0xFFF |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1403 | add r12,320 |
| 1404 | sub r15,r12 |
| 1405 | ALIGN 4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1406 | $L$cbc_te_ok: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1407 | |
| 1408 | xchg r15,rsp |
| 1409 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1410 | mov QWORD[16+rsp],r15 |
| 1411 | $L$cbc_fast_body: |
| 1412 | mov QWORD[24+rsp],rdi |
| 1413 | mov QWORD[32+rsp],rsi |
| 1414 | mov QWORD[40+rsp],rdx |
| 1415 | mov QWORD[48+rsp],rcx |
| 1416 | mov QWORD[56+rsp],r8 |
| 1417 | mov DWORD[((80+240))+rsp],0 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1418 | mov rbp,r8 |
| 1419 | mov rbx,r9 |
| 1420 | mov r9,rsi |
| 1421 | mov r8,rdi |
| 1422 | mov r15,rcx |
| 1423 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1424 | mov eax,DWORD[240+r15] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1425 | |
| 1426 | mov r10,r15 |
| 1427 | sub r10,r14 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1428 | and r10,0xfff |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1429 | cmp r10,2304 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1430 | jb NEAR $L$cbc_do_ecopy |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1431 | cmp r10,4096-248 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1432 | jb NEAR $L$cbc_skip_ecopy |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1433 | ALIGN 4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1434 | $L$cbc_do_ecopy: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1435 | mov rsi,r15 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1436 | lea rdi,[80+rsp] |
| 1437 | lea r15,[80+rsp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1438 | mov ecx,240/8 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1439 | DD 0x90A548F3 |
| 1440 | mov DWORD[rdi],eax |
| 1441 | $L$cbc_skip_ecopy: |
| 1442 | mov QWORD[rsp],r15 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1443 | |
| 1444 | mov ecx,18 |
| 1445 | ALIGN 4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1446 | $L$cbc_prefetch_te: |
| 1447 | mov r10,QWORD[r14] |
| 1448 | mov r11,QWORD[32+r14] |
| 1449 | mov r12,QWORD[64+r14] |
| 1450 | mov r13,QWORD[96+r14] |
| 1451 | lea r14,[128+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1452 | sub ecx,1 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1453 | jnz NEAR $L$cbc_prefetch_te |
| 1454 | lea r14,[((-2304))+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1455 | |
| 1456 | cmp rbx,0 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1457 | je NEAR $L$FAST_DECRYPT |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1458 | |
| 1459 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1460 | mov eax,DWORD[rbp] |
| 1461 | mov ebx,DWORD[4+rbp] |
| 1462 | mov ecx,DWORD[8+rbp] |
| 1463 | mov edx,DWORD[12+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1464 | |
| 1465 | ALIGN 4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1466 | $L$cbc_fast_enc_loop: |
| 1467 | xor eax,DWORD[r8] |
| 1468 | xor ebx,DWORD[4+r8] |
| 1469 | xor ecx,DWORD[8+r8] |
| 1470 | xor edx,DWORD[12+r8] |
| 1471 | mov r15,QWORD[rsp] |
| 1472 | mov QWORD[24+rsp],r8 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1473 | |
| 1474 | call _x86_64_AES_encrypt |
| 1475 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1476 | mov r8,QWORD[24+rsp] |
| 1477 | mov r10,QWORD[40+rsp] |
| 1478 | mov DWORD[r9],eax |
| 1479 | mov DWORD[4+r9],ebx |
| 1480 | mov DWORD[8+r9],ecx |
| 1481 | mov DWORD[12+r9],edx |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1482 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1483 | lea r8,[16+r8] |
| 1484 | lea r9,[16+r9] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1485 | sub r10,16 |
| 1486 | test r10,-16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1487 | mov QWORD[40+rsp],r10 |
| 1488 | jnz NEAR $L$cbc_fast_enc_loop |
| 1489 | mov rbp,QWORD[56+rsp] |
| 1490 | mov DWORD[rbp],eax |
| 1491 | mov DWORD[4+rbp],ebx |
| 1492 | mov DWORD[8+rbp],ecx |
| 1493 | mov DWORD[12+rbp],edx |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1494 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1495 | jmp NEAR $L$cbc_fast_cleanup |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1496 | |
| 1497 | |
| 1498 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1499 | $L$FAST_DECRYPT: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1500 | cmp r9,r8 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1501 | je NEAR $L$cbc_fast_dec_in_place |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1502 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1503 | mov QWORD[64+rsp],rbp |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1504 | ALIGN 4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1505 | $L$cbc_fast_dec_loop: |
| 1506 | mov eax,DWORD[r8] |
| 1507 | mov ebx,DWORD[4+r8] |
| 1508 | mov ecx,DWORD[8+r8] |
| 1509 | mov edx,DWORD[12+r8] |
| 1510 | mov r15,QWORD[rsp] |
| 1511 | mov QWORD[24+rsp],r8 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1512 | |
| 1513 | call _x86_64_AES_decrypt |
| 1514 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1515 | mov rbp,QWORD[64+rsp] |
| 1516 | mov r8,QWORD[24+rsp] |
| 1517 | mov r10,QWORD[40+rsp] |
| 1518 | xor eax,DWORD[rbp] |
| 1519 | xor ebx,DWORD[4+rbp] |
| 1520 | xor ecx,DWORD[8+rbp] |
| 1521 | xor edx,DWORD[12+rbp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1522 | mov rbp,r8 |
| 1523 | |
| 1524 | sub r10,16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1525 | mov QWORD[40+rsp],r10 |
| 1526 | mov QWORD[64+rsp],rbp |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1527 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1528 | mov DWORD[r9],eax |
| 1529 | mov DWORD[4+r9],ebx |
| 1530 | mov DWORD[8+r9],ecx |
| 1531 | mov DWORD[12+r9],edx |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1532 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1533 | lea r8,[16+r8] |
| 1534 | lea r9,[16+r9] |
| 1535 | jnz NEAR $L$cbc_fast_dec_loop |
| 1536 | mov r12,QWORD[56+rsp] |
| 1537 | mov r10,QWORD[rbp] |
| 1538 | mov r11,QWORD[8+rbp] |
| 1539 | mov QWORD[r12],r10 |
| 1540 | mov QWORD[8+r12],r11 |
| 1541 | jmp NEAR $L$cbc_fast_cleanup |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1542 | |
| 1543 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1544 | $L$cbc_fast_dec_in_place: |
| 1545 | mov r10,QWORD[rbp] |
| 1546 | mov r11,QWORD[8+rbp] |
| 1547 | mov QWORD[((0+64))+rsp],r10 |
| 1548 | mov QWORD[((8+64))+rsp],r11 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1549 | ALIGN 4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1550 | $L$cbc_fast_dec_in_place_loop: |
| 1551 | mov eax,DWORD[r8] |
| 1552 | mov ebx,DWORD[4+r8] |
| 1553 | mov ecx,DWORD[8+r8] |
| 1554 | mov edx,DWORD[12+r8] |
| 1555 | mov r15,QWORD[rsp] |
| 1556 | mov QWORD[24+rsp],r8 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1557 | |
| 1558 | call _x86_64_AES_decrypt |
| 1559 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1560 | mov r8,QWORD[24+rsp] |
| 1561 | mov r10,QWORD[40+rsp] |
| 1562 | xor eax,DWORD[((0+64))+rsp] |
| 1563 | xor ebx,DWORD[((4+64))+rsp] |
| 1564 | xor ecx,DWORD[((8+64))+rsp] |
| 1565 | xor edx,DWORD[((12+64))+rsp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1566 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1567 | mov r11,QWORD[r8] |
| 1568 | mov r12,QWORD[8+r8] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1569 | sub r10,16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1570 | jz NEAR $L$cbc_fast_dec_in_place_done |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1571 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1572 | mov QWORD[((0+64))+rsp],r11 |
| 1573 | mov QWORD[((8+64))+rsp],r12 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1574 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1575 | mov DWORD[r9],eax |
| 1576 | mov DWORD[4+r9],ebx |
| 1577 | mov DWORD[8+r9],ecx |
| 1578 | mov DWORD[12+r9],edx |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1579 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1580 | lea r8,[16+r8] |
| 1581 | lea r9,[16+r9] |
| 1582 | mov QWORD[40+rsp],r10 |
| 1583 | jmp NEAR $L$cbc_fast_dec_in_place_loop |
| 1584 | $L$cbc_fast_dec_in_place_done: |
| 1585 | mov rdi,QWORD[56+rsp] |
| 1586 | mov QWORD[rdi],r11 |
| 1587 | mov QWORD[8+rdi],r12 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1588 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1589 | mov DWORD[r9],eax |
| 1590 | mov DWORD[4+r9],ebx |
| 1591 | mov DWORD[8+r9],ecx |
| 1592 | mov DWORD[12+r9],edx |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1593 | |
| 1594 | ALIGN 4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1595 | $L$cbc_fast_cleanup: |
| 1596 | cmp DWORD[((80+240))+rsp],0 |
| 1597 | lea rdi,[80+rsp] |
| 1598 | je NEAR $L$cbc_exit |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1599 | mov ecx,240/8 |
| 1600 | xor rax,rax |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1601 | DD 0x90AB48F3 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1602 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1603 | jmp NEAR $L$cbc_exit |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1604 | |
| 1605 | |
| 1606 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1607 | $L$cbc_slow_prologue: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1608 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1609 | lea rbp,[((-88))+rsp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1610 | and rbp,-64 |
| 1611 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1612 | lea r10,[((-88-63))+rcx] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1613 | sub r10,rbp |
| 1614 | neg r10 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1615 | and r10,0x3c0 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1616 | sub rbp,r10 |
| 1617 | |
| 1618 | xchg rbp,rsp |
| 1619 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1620 | mov QWORD[16+rsp],rbp |
| 1621 | $L$cbc_slow_body: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1622 | |
| 1623 | |
| 1624 | |
| 1625 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1626 | mov QWORD[56+rsp],r8 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1627 | mov rbp,r8 |
| 1628 | mov rbx,r9 |
| 1629 | mov r9,rsi |
| 1630 | mov r8,rdi |
| 1631 | mov r15,rcx |
| 1632 | mov r10,rdx |
| 1633 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1634 | mov eax,DWORD[240+r15] |
| 1635 | mov QWORD[rsp],r15 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1636 | shl eax,4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1637 | lea rax,[rax*1+r15] |
| 1638 | mov QWORD[8+rsp],rax |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1639 | |
| 1640 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1641 | lea r14,[2048+r14] |
| 1642 | lea rax,[((768-8))+rsp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1643 | sub rax,r14 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1644 | and rax,0x300 |
| 1645 | lea r14,[rax*1+r14] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1646 | |
| 1647 | cmp rbx,0 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1648 | je NEAR $L$SLOW_DECRYPT |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1649 | |
| 1650 | |
| 1651 | test r10,-16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1652 | mov eax,DWORD[rbp] |
| 1653 | mov ebx,DWORD[4+rbp] |
| 1654 | mov ecx,DWORD[8+rbp] |
| 1655 | mov edx,DWORD[12+rbp] |
| 1656 | jz NEAR $L$cbc_slow_enc_tail |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1657 | |
| 1658 | ALIGN 4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1659 | $L$cbc_slow_enc_loop: |
| 1660 | xor eax,DWORD[r8] |
| 1661 | xor ebx,DWORD[4+r8] |
| 1662 | xor ecx,DWORD[8+r8] |
| 1663 | xor edx,DWORD[12+r8] |
| 1664 | mov r15,QWORD[rsp] |
| 1665 | mov QWORD[24+rsp],r8 |
| 1666 | mov QWORD[32+rsp],r9 |
| 1667 | mov QWORD[40+rsp],r10 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1668 | |
| 1669 | call _x86_64_AES_encrypt_compact |
| 1670 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1671 | mov r8,QWORD[24+rsp] |
| 1672 | mov r9,QWORD[32+rsp] |
| 1673 | mov r10,QWORD[40+rsp] |
| 1674 | mov DWORD[r9],eax |
| 1675 | mov DWORD[4+r9],ebx |
| 1676 | mov DWORD[8+r9],ecx |
| 1677 | mov DWORD[12+r9],edx |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1678 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1679 | lea r8,[16+r8] |
| 1680 | lea r9,[16+r9] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1681 | sub r10,16 |
| 1682 | test r10,-16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1683 | jnz NEAR $L$cbc_slow_enc_loop |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1684 | test r10,15 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1685 | jnz NEAR $L$cbc_slow_enc_tail |
| 1686 | mov rbp,QWORD[56+rsp] |
| 1687 | mov DWORD[rbp],eax |
| 1688 | mov DWORD[4+rbp],ebx |
| 1689 | mov DWORD[8+rbp],ecx |
| 1690 | mov DWORD[12+rbp],edx |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1691 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1692 | jmp NEAR $L$cbc_exit |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1693 | |
| 1694 | ALIGN 4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1695 | $L$cbc_slow_enc_tail: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1696 | mov r11,rax |
| 1697 | mov r12,rcx |
| 1698 | mov rcx,r10 |
| 1699 | mov rsi,r8 |
| 1700 | mov rdi,r9 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1701 | DD 0x9066A4F3 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1702 | mov rcx,16 |
| 1703 | sub rcx,r10 |
| 1704 | xor rax,rax |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1705 | DD 0x9066AAF3 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1706 | mov r8,r9 |
| 1707 | mov r10,16 |
| 1708 | mov rax,r11 |
| 1709 | mov rcx,r12 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1710 | jmp NEAR $L$cbc_slow_enc_loop |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1711 | |
| 1712 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1713 | $L$SLOW_DECRYPT: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1714 | shr rax,3 |
| 1715 | add r14,rax |
| 1716 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1717 | mov r11,QWORD[rbp] |
| 1718 | mov r12,QWORD[8+rbp] |
| 1719 | mov QWORD[((0+64))+rsp],r11 |
| 1720 | mov QWORD[((8+64))+rsp],r12 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1721 | |
| 1722 | ALIGN 4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1723 | $L$cbc_slow_dec_loop: |
| 1724 | mov eax,DWORD[r8] |
| 1725 | mov ebx,DWORD[4+r8] |
| 1726 | mov ecx,DWORD[8+r8] |
| 1727 | mov edx,DWORD[12+r8] |
| 1728 | mov r15,QWORD[rsp] |
| 1729 | mov QWORD[24+rsp],r8 |
| 1730 | mov QWORD[32+rsp],r9 |
| 1731 | mov QWORD[40+rsp],r10 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1732 | |
| 1733 | call _x86_64_AES_decrypt_compact |
| 1734 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1735 | mov r8,QWORD[24+rsp] |
| 1736 | mov r9,QWORD[32+rsp] |
| 1737 | mov r10,QWORD[40+rsp] |
| 1738 | xor eax,DWORD[((0+64))+rsp] |
| 1739 | xor ebx,DWORD[((4+64))+rsp] |
| 1740 | xor ecx,DWORD[((8+64))+rsp] |
| 1741 | xor edx,DWORD[((12+64))+rsp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1742 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1743 | mov r11,QWORD[r8] |
| 1744 | mov r12,QWORD[8+r8] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1745 | sub r10,16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1746 | jc NEAR $L$cbc_slow_dec_partial |
| 1747 | jz NEAR $L$cbc_slow_dec_done |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1748 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1749 | mov QWORD[((0+64))+rsp],r11 |
| 1750 | mov QWORD[((8+64))+rsp],r12 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1751 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1752 | mov DWORD[r9],eax |
| 1753 | mov DWORD[4+r9],ebx |
| 1754 | mov DWORD[8+r9],ecx |
| 1755 | mov DWORD[12+r9],edx |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1756 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1757 | lea r8,[16+r8] |
| 1758 | lea r9,[16+r9] |
| 1759 | jmp NEAR $L$cbc_slow_dec_loop |
| 1760 | $L$cbc_slow_dec_done: |
| 1761 | mov rdi,QWORD[56+rsp] |
| 1762 | mov QWORD[rdi],r11 |
| 1763 | mov QWORD[8+rdi],r12 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1764 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1765 | mov DWORD[r9],eax |
| 1766 | mov DWORD[4+r9],ebx |
| 1767 | mov DWORD[8+r9],ecx |
| 1768 | mov DWORD[12+r9],edx |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1769 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1770 | jmp NEAR $L$cbc_exit |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1771 | |
| 1772 | ALIGN 4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1773 | $L$cbc_slow_dec_partial: |
| 1774 | mov rdi,QWORD[56+rsp] |
| 1775 | mov QWORD[rdi],r11 |
| 1776 | mov QWORD[8+rdi],r12 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1777 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1778 | mov DWORD[((0+64))+rsp],eax |
| 1779 | mov DWORD[((4+64))+rsp],ebx |
| 1780 | mov DWORD[((8+64))+rsp],ecx |
| 1781 | mov DWORD[((12+64))+rsp],edx |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1782 | |
| 1783 | mov rdi,r9 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1784 | lea rsi,[64+rsp] |
| 1785 | lea rcx,[16+r10] |
| 1786 | DD 0x9066A4F3 |
| 1787 | jmp NEAR $L$cbc_exit |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1788 | |
| 1789 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1790 | $L$cbc_exit: |
| 1791 | mov rsi,QWORD[16+rsp] |
| 1792 | mov r15,QWORD[rsi] |
| 1793 | mov r14,QWORD[8+rsi] |
| 1794 | mov r13,QWORD[16+rsi] |
| 1795 | mov r12,QWORD[24+rsi] |
| 1796 | mov rbp,QWORD[32+rsi] |
| 1797 | mov rbx,QWORD[40+rsi] |
| 1798 | lea rsp,[48+rsi] |
| 1799 | $L$cbc_popfq: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1800 | popfq |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1801 | $L$cbc_epilogue: |
| 1802 | mov rdi,QWORD[8+rsp] ;WIN64 epilogue |
| 1803 | mov rsi,QWORD[16+rsp] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1804 | DB 0F3h,0C3h ;repret |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1805 | $L$SEH_end_asm_AES_cbc_encrypt: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1806 | ALIGN 64 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1807 | $L$AES_Te: |
| 1808 | DD 0xa56363c6,0xa56363c6 |
| 1809 | DD 0x847c7cf8,0x847c7cf8 |
| 1810 | DD 0x997777ee,0x997777ee |
| 1811 | DD 0x8d7b7bf6,0x8d7b7bf6 |
| 1812 | DD 0x0df2f2ff,0x0df2f2ff |
| 1813 | DD 0xbd6b6bd6,0xbd6b6bd6 |
| 1814 | DD 0xb16f6fde,0xb16f6fde |
| 1815 | DD 0x54c5c591,0x54c5c591 |
| 1816 | DD 0x50303060,0x50303060 |
| 1817 | DD 0x03010102,0x03010102 |
| 1818 | DD 0xa96767ce,0xa96767ce |
| 1819 | DD 0x7d2b2b56,0x7d2b2b56 |
| 1820 | DD 0x19fefee7,0x19fefee7 |
| 1821 | DD 0x62d7d7b5,0x62d7d7b5 |
| 1822 | DD 0xe6abab4d,0xe6abab4d |
| 1823 | DD 0x9a7676ec,0x9a7676ec |
| 1824 | DD 0x45caca8f,0x45caca8f |
| 1825 | DD 0x9d82821f,0x9d82821f |
| 1826 | DD 0x40c9c989,0x40c9c989 |
| 1827 | DD 0x877d7dfa,0x877d7dfa |
| 1828 | DD 0x15fafaef,0x15fafaef |
| 1829 | DD 0xeb5959b2,0xeb5959b2 |
| 1830 | DD 0xc947478e,0xc947478e |
| 1831 | DD 0x0bf0f0fb,0x0bf0f0fb |
| 1832 | DD 0xecadad41,0xecadad41 |
| 1833 | DD 0x67d4d4b3,0x67d4d4b3 |
| 1834 | DD 0xfda2a25f,0xfda2a25f |
| 1835 | DD 0xeaafaf45,0xeaafaf45 |
| 1836 | DD 0xbf9c9c23,0xbf9c9c23 |
| 1837 | DD 0xf7a4a453,0xf7a4a453 |
| 1838 | DD 0x967272e4,0x967272e4 |
| 1839 | DD 0x5bc0c09b,0x5bc0c09b |
| 1840 | DD 0xc2b7b775,0xc2b7b775 |
| 1841 | DD 0x1cfdfde1,0x1cfdfde1 |
| 1842 | DD 0xae93933d,0xae93933d |
| 1843 | DD 0x6a26264c,0x6a26264c |
| 1844 | DD 0x5a36366c,0x5a36366c |
| 1845 | DD 0x413f3f7e,0x413f3f7e |
| 1846 | DD 0x02f7f7f5,0x02f7f7f5 |
| 1847 | DD 0x4fcccc83,0x4fcccc83 |
| 1848 | DD 0x5c343468,0x5c343468 |
| 1849 | DD 0xf4a5a551,0xf4a5a551 |
| 1850 | DD 0x34e5e5d1,0x34e5e5d1 |
| 1851 | DD 0x08f1f1f9,0x08f1f1f9 |
| 1852 | DD 0x937171e2,0x937171e2 |
| 1853 | DD 0x73d8d8ab,0x73d8d8ab |
| 1854 | DD 0x53313162,0x53313162 |
| 1855 | DD 0x3f15152a,0x3f15152a |
| 1856 | DD 0x0c040408,0x0c040408 |
| 1857 | DD 0x52c7c795,0x52c7c795 |
| 1858 | DD 0x65232346,0x65232346 |
| 1859 | DD 0x5ec3c39d,0x5ec3c39d |
| 1860 | DD 0x28181830,0x28181830 |
| 1861 | DD 0xa1969637,0xa1969637 |
| 1862 | DD 0x0f05050a,0x0f05050a |
| 1863 | DD 0xb59a9a2f,0xb59a9a2f |
| 1864 | DD 0x0907070e,0x0907070e |
| 1865 | DD 0x36121224,0x36121224 |
| 1866 | DD 0x9b80801b,0x9b80801b |
| 1867 | DD 0x3de2e2df,0x3de2e2df |
| 1868 | DD 0x26ebebcd,0x26ebebcd |
| 1869 | DD 0x6927274e,0x6927274e |
| 1870 | DD 0xcdb2b27f,0xcdb2b27f |
| 1871 | DD 0x9f7575ea,0x9f7575ea |
| 1872 | DD 0x1b090912,0x1b090912 |
| 1873 | DD 0x9e83831d,0x9e83831d |
| 1874 | DD 0x742c2c58,0x742c2c58 |
| 1875 | DD 0x2e1a1a34,0x2e1a1a34 |
| 1876 | DD 0x2d1b1b36,0x2d1b1b36 |
| 1877 | DD 0xb26e6edc,0xb26e6edc |
| 1878 | DD 0xee5a5ab4,0xee5a5ab4 |
| 1879 | DD 0xfba0a05b,0xfba0a05b |
| 1880 | DD 0xf65252a4,0xf65252a4 |
| 1881 | DD 0x4d3b3b76,0x4d3b3b76 |
| 1882 | DD 0x61d6d6b7,0x61d6d6b7 |
| 1883 | DD 0xceb3b37d,0xceb3b37d |
| 1884 | DD 0x7b292952,0x7b292952 |
| 1885 | DD 0x3ee3e3dd,0x3ee3e3dd |
| 1886 | DD 0x712f2f5e,0x712f2f5e |
| 1887 | DD 0x97848413,0x97848413 |
| 1888 | DD 0xf55353a6,0xf55353a6 |
| 1889 | DD 0x68d1d1b9,0x68d1d1b9 |
| 1890 | DD 0x00000000,0x00000000 |
| 1891 | DD 0x2cededc1,0x2cededc1 |
| 1892 | DD 0x60202040,0x60202040 |
| 1893 | DD 0x1ffcfce3,0x1ffcfce3 |
| 1894 | DD 0xc8b1b179,0xc8b1b179 |
| 1895 | DD 0xed5b5bb6,0xed5b5bb6 |
| 1896 | DD 0xbe6a6ad4,0xbe6a6ad4 |
| 1897 | DD 0x46cbcb8d,0x46cbcb8d |
| 1898 | DD 0xd9bebe67,0xd9bebe67 |
| 1899 | DD 0x4b393972,0x4b393972 |
| 1900 | DD 0xde4a4a94,0xde4a4a94 |
| 1901 | DD 0xd44c4c98,0xd44c4c98 |
| 1902 | DD 0xe85858b0,0xe85858b0 |
| 1903 | DD 0x4acfcf85,0x4acfcf85 |
| 1904 | DD 0x6bd0d0bb,0x6bd0d0bb |
| 1905 | DD 0x2aefefc5,0x2aefefc5 |
| 1906 | DD 0xe5aaaa4f,0xe5aaaa4f |
| 1907 | DD 0x16fbfbed,0x16fbfbed |
| 1908 | DD 0xc5434386,0xc5434386 |
| 1909 | DD 0xd74d4d9a,0xd74d4d9a |
| 1910 | DD 0x55333366,0x55333366 |
| 1911 | DD 0x94858511,0x94858511 |
| 1912 | DD 0xcf45458a,0xcf45458a |
| 1913 | DD 0x10f9f9e9,0x10f9f9e9 |
| 1914 | DD 0x06020204,0x06020204 |
| 1915 | DD 0x817f7ffe,0x817f7ffe |
| 1916 | DD 0xf05050a0,0xf05050a0 |
| 1917 | DD 0x443c3c78,0x443c3c78 |
| 1918 | DD 0xba9f9f25,0xba9f9f25 |
| 1919 | DD 0xe3a8a84b,0xe3a8a84b |
| 1920 | DD 0xf35151a2,0xf35151a2 |
| 1921 | DD 0xfea3a35d,0xfea3a35d |
| 1922 | DD 0xc0404080,0xc0404080 |
| 1923 | DD 0x8a8f8f05,0x8a8f8f05 |
| 1924 | DD 0xad92923f,0xad92923f |
| 1925 | DD 0xbc9d9d21,0xbc9d9d21 |
| 1926 | DD 0x48383870,0x48383870 |
| 1927 | DD 0x04f5f5f1,0x04f5f5f1 |
| 1928 | DD 0xdfbcbc63,0xdfbcbc63 |
| 1929 | DD 0xc1b6b677,0xc1b6b677 |
| 1930 | DD 0x75dadaaf,0x75dadaaf |
| 1931 | DD 0x63212142,0x63212142 |
| 1932 | DD 0x30101020,0x30101020 |
| 1933 | DD 0x1affffe5,0x1affffe5 |
| 1934 | DD 0x0ef3f3fd,0x0ef3f3fd |
| 1935 | DD 0x6dd2d2bf,0x6dd2d2bf |
| 1936 | DD 0x4ccdcd81,0x4ccdcd81 |
| 1937 | DD 0x140c0c18,0x140c0c18 |
| 1938 | DD 0x35131326,0x35131326 |
| 1939 | DD 0x2fececc3,0x2fececc3 |
| 1940 | DD 0xe15f5fbe,0xe15f5fbe |
| 1941 | DD 0xa2979735,0xa2979735 |
| 1942 | DD 0xcc444488,0xcc444488 |
| 1943 | DD 0x3917172e,0x3917172e |
| 1944 | DD 0x57c4c493,0x57c4c493 |
| 1945 | DD 0xf2a7a755,0xf2a7a755 |
| 1946 | DD 0x827e7efc,0x827e7efc |
| 1947 | DD 0x473d3d7a,0x473d3d7a |
| 1948 | DD 0xac6464c8,0xac6464c8 |
| 1949 | DD 0xe75d5dba,0xe75d5dba |
| 1950 | DD 0x2b191932,0x2b191932 |
| 1951 | DD 0x957373e6,0x957373e6 |
| 1952 | DD 0xa06060c0,0xa06060c0 |
| 1953 | DD 0x98818119,0x98818119 |
| 1954 | DD 0xd14f4f9e,0xd14f4f9e |
| 1955 | DD 0x7fdcdca3,0x7fdcdca3 |
| 1956 | DD 0x66222244,0x66222244 |
| 1957 | DD 0x7e2a2a54,0x7e2a2a54 |
| 1958 | DD 0xab90903b,0xab90903b |
| 1959 | DD 0x8388880b,0x8388880b |
| 1960 | DD 0xca46468c,0xca46468c |
| 1961 | DD 0x29eeeec7,0x29eeeec7 |
| 1962 | DD 0xd3b8b86b,0xd3b8b86b |
| 1963 | DD 0x3c141428,0x3c141428 |
| 1964 | DD 0x79dedea7,0x79dedea7 |
| 1965 | DD 0xe25e5ebc,0xe25e5ebc |
| 1966 | DD 0x1d0b0b16,0x1d0b0b16 |
| 1967 | DD 0x76dbdbad,0x76dbdbad |
| 1968 | DD 0x3be0e0db,0x3be0e0db |
| 1969 | DD 0x56323264,0x56323264 |
| 1970 | DD 0x4e3a3a74,0x4e3a3a74 |
| 1971 | DD 0x1e0a0a14,0x1e0a0a14 |
| 1972 | DD 0xdb494992,0xdb494992 |
| 1973 | DD 0x0a06060c,0x0a06060c |
| 1974 | DD 0x6c242448,0x6c242448 |
| 1975 | DD 0xe45c5cb8,0xe45c5cb8 |
| 1976 | DD 0x5dc2c29f,0x5dc2c29f |
| 1977 | DD 0x6ed3d3bd,0x6ed3d3bd |
| 1978 | DD 0xefacac43,0xefacac43 |
| 1979 | DD 0xa66262c4,0xa66262c4 |
| 1980 | DD 0xa8919139,0xa8919139 |
| 1981 | DD 0xa4959531,0xa4959531 |
| 1982 | DD 0x37e4e4d3,0x37e4e4d3 |
| 1983 | DD 0x8b7979f2,0x8b7979f2 |
| 1984 | DD 0x32e7e7d5,0x32e7e7d5 |
| 1985 | DD 0x43c8c88b,0x43c8c88b |
| 1986 | DD 0x5937376e,0x5937376e |
| 1987 | DD 0xb76d6dda,0xb76d6dda |
| 1988 | DD 0x8c8d8d01,0x8c8d8d01 |
| 1989 | DD 0x64d5d5b1,0x64d5d5b1 |
| 1990 | DD 0xd24e4e9c,0xd24e4e9c |
| 1991 | DD 0xe0a9a949,0xe0a9a949 |
| 1992 | DD 0xb46c6cd8,0xb46c6cd8 |
| 1993 | DD 0xfa5656ac,0xfa5656ac |
| 1994 | DD 0x07f4f4f3,0x07f4f4f3 |
| 1995 | DD 0x25eaeacf,0x25eaeacf |
| 1996 | DD 0xaf6565ca,0xaf6565ca |
| 1997 | DD 0x8e7a7af4,0x8e7a7af4 |
| 1998 | DD 0xe9aeae47,0xe9aeae47 |
| 1999 | DD 0x18080810,0x18080810 |
| 2000 | DD 0xd5baba6f,0xd5baba6f |
| 2001 | DD 0x887878f0,0x887878f0 |
| 2002 | DD 0x6f25254a,0x6f25254a |
| 2003 | DD 0x722e2e5c,0x722e2e5c |
| 2004 | DD 0x241c1c38,0x241c1c38 |
| 2005 | DD 0xf1a6a657,0xf1a6a657 |
| 2006 | DD 0xc7b4b473,0xc7b4b473 |
| 2007 | DD 0x51c6c697,0x51c6c697 |
| 2008 | DD 0x23e8e8cb,0x23e8e8cb |
| 2009 | DD 0x7cdddda1,0x7cdddda1 |
| 2010 | DD 0x9c7474e8,0x9c7474e8 |
| 2011 | DD 0x211f1f3e,0x211f1f3e |
| 2012 | DD 0xdd4b4b96,0xdd4b4b96 |
| 2013 | DD 0xdcbdbd61,0xdcbdbd61 |
| 2014 | DD 0x868b8b0d,0x868b8b0d |
| 2015 | DD 0x858a8a0f,0x858a8a0f |
| 2016 | DD 0x907070e0,0x907070e0 |
| 2017 | DD 0x423e3e7c,0x423e3e7c |
| 2018 | DD 0xc4b5b571,0xc4b5b571 |
| 2019 | DD 0xaa6666cc,0xaa6666cc |
| 2020 | DD 0xd8484890,0xd8484890 |
| 2021 | DD 0x05030306,0x05030306 |
| 2022 | DD 0x01f6f6f7,0x01f6f6f7 |
| 2023 | DD 0x120e0e1c,0x120e0e1c |
| 2024 | DD 0xa36161c2,0xa36161c2 |
| 2025 | DD 0x5f35356a,0x5f35356a |
| 2026 | DD 0xf95757ae,0xf95757ae |
| 2027 | DD 0xd0b9b969,0xd0b9b969 |
| 2028 | DD 0x91868617,0x91868617 |
| 2029 | DD 0x58c1c199,0x58c1c199 |
| 2030 | DD 0x271d1d3a,0x271d1d3a |
| 2031 | DD 0xb99e9e27,0xb99e9e27 |
| 2032 | DD 0x38e1e1d9,0x38e1e1d9 |
| 2033 | DD 0x13f8f8eb,0x13f8f8eb |
| 2034 | DD 0xb398982b,0xb398982b |
| 2035 | DD 0x33111122,0x33111122 |
| 2036 | DD 0xbb6969d2,0xbb6969d2 |
| 2037 | DD 0x70d9d9a9,0x70d9d9a9 |
| 2038 | DD 0x898e8e07,0x898e8e07 |
| 2039 | DD 0xa7949433,0xa7949433 |
| 2040 | DD 0xb69b9b2d,0xb69b9b2d |
| 2041 | DD 0x221e1e3c,0x221e1e3c |
| 2042 | DD 0x92878715,0x92878715 |
| 2043 | DD 0x20e9e9c9,0x20e9e9c9 |
| 2044 | DD 0x49cece87,0x49cece87 |
| 2045 | DD 0xff5555aa,0xff5555aa |
| 2046 | DD 0x78282850,0x78282850 |
| 2047 | DD 0x7adfdfa5,0x7adfdfa5 |
| 2048 | DD 0x8f8c8c03,0x8f8c8c03 |
| 2049 | DD 0xf8a1a159,0xf8a1a159 |
| 2050 | DD 0x80898909,0x80898909 |
| 2051 | DD 0x170d0d1a,0x170d0d1a |
| 2052 | DD 0xdabfbf65,0xdabfbf65 |
| 2053 | DD 0x31e6e6d7,0x31e6e6d7 |
| 2054 | DD 0xc6424284,0xc6424284 |
| 2055 | DD 0xb86868d0,0xb86868d0 |
| 2056 | DD 0xc3414182,0xc3414182 |
| 2057 | DD 0xb0999929,0xb0999929 |
| 2058 | DD 0x772d2d5a,0x772d2d5a |
| 2059 | DD 0x110f0f1e,0x110f0f1e |
| 2060 | DD 0xcbb0b07b,0xcbb0b07b |
| 2061 | DD 0xfc5454a8,0xfc5454a8 |
| 2062 | DD 0xd6bbbb6d,0xd6bbbb6d |
| 2063 | DD 0x3a16162c,0x3a16162c |
| 2064 | DB 0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5 |
| 2065 | DB 0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76 |
| 2066 | DB 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0 |
| 2067 | DB 0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0 |
| 2068 | DB 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc |
| 2069 | DB 0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15 |
| 2070 | DB 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a |
| 2071 | DB 0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75 |
| 2072 | DB 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0 |
| 2073 | DB 0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84 |
| 2074 | DB 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b |
| 2075 | DB 0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf |
| 2076 | DB 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85 |
| 2077 | DB 0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8 |
| 2078 | DB 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5 |
| 2079 | DB 0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2 |
| 2080 | DB 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17 |
| 2081 | DB 0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73 |
| 2082 | DB 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88 |
| 2083 | DB 0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb |
| 2084 | DB 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c |
| 2085 | DB 0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79 |
| 2086 | DB 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9 |
| 2087 | DB 0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08 |
| 2088 | DB 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6 |
| 2089 | DB 0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a |
| 2090 | DB 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e |
| 2091 | DB 0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e |
| 2092 | DB 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94 |
| 2093 | DB 0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf |
| 2094 | DB 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68 |
| 2095 | DB 0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16 |
| 2096 | DB 0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5 |
| 2097 | DB 0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76 |
| 2098 | DB 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0 |
| 2099 | DB 0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0 |
| 2100 | DB 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc |
| 2101 | DB 0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15 |
| 2102 | DB 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a |
| 2103 | DB 0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75 |
| 2104 | DB 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0 |
| 2105 | DB 0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84 |
| 2106 | DB 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b |
| 2107 | DB 0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf |
| 2108 | DB 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85 |
| 2109 | DB 0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8 |
| 2110 | DB 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5 |
| 2111 | DB 0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2 |
| 2112 | DB 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17 |
| 2113 | DB 0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73 |
| 2114 | DB 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88 |
| 2115 | DB 0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb |
| 2116 | DB 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c |
| 2117 | DB 0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79 |
| 2118 | DB 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9 |
| 2119 | DB 0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08 |
| 2120 | DB 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6 |
| 2121 | DB 0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a |
| 2122 | DB 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e |
| 2123 | DB 0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e |
| 2124 | DB 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94 |
| 2125 | DB 0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf |
| 2126 | DB 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68 |
| 2127 | DB 0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16 |
| 2128 | DB 0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5 |
| 2129 | DB 0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76 |
| 2130 | DB 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0 |
| 2131 | DB 0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0 |
| 2132 | DB 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc |
| 2133 | DB 0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15 |
| 2134 | DB 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a |
| 2135 | DB 0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75 |
| 2136 | DB 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0 |
| 2137 | DB 0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84 |
| 2138 | DB 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b |
| 2139 | DB 0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf |
| 2140 | DB 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85 |
| 2141 | DB 0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8 |
| 2142 | DB 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5 |
| 2143 | DB 0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2 |
| 2144 | DB 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17 |
| 2145 | DB 0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73 |
| 2146 | DB 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88 |
| 2147 | DB 0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb |
| 2148 | DB 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c |
| 2149 | DB 0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79 |
| 2150 | DB 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9 |
| 2151 | DB 0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08 |
| 2152 | DB 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6 |
| 2153 | DB 0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a |
| 2154 | DB 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e |
| 2155 | DB 0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e |
| 2156 | DB 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94 |
| 2157 | DB 0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf |
| 2158 | DB 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68 |
| 2159 | DB 0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16 |
| 2160 | DB 0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5 |
| 2161 | DB 0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76 |
| 2162 | DB 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0 |
| 2163 | DB 0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0 |
| 2164 | DB 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc |
| 2165 | DB 0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15 |
| 2166 | DB 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a |
| 2167 | DB 0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75 |
| 2168 | DB 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0 |
| 2169 | DB 0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84 |
| 2170 | DB 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b |
| 2171 | DB 0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf |
| 2172 | DB 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85 |
| 2173 | DB 0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8 |
| 2174 | DB 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5 |
| 2175 | DB 0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2 |
| 2176 | DB 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17 |
| 2177 | DB 0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73 |
| 2178 | DB 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88 |
| 2179 | DB 0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb |
| 2180 | DB 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c |
| 2181 | DB 0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79 |
| 2182 | DB 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9 |
| 2183 | DB 0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08 |
| 2184 | DB 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6 |
| 2185 | DB 0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a |
| 2186 | DB 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e |
| 2187 | DB 0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e |
| 2188 | DB 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94 |
| 2189 | DB 0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf |
| 2190 | DB 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68 |
| 2191 | DB 0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16 |
| 2192 | DD 0x00000001,0x00000002,0x00000004,0x00000008 |
| 2193 | DD 0x00000010,0x00000020,0x00000040,0x00000080 |
| 2194 | DD 0x0000001b,0x00000036,0x80808080,0x80808080 |
| 2195 | DD 0xfefefefe,0xfefefefe,0x1b1b1b1b,0x1b1b1b1b |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2196 | ALIGN 64 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2197 | $L$AES_Td: |
| 2198 | DD 0x50a7f451,0x50a7f451 |
| 2199 | DD 0x5365417e,0x5365417e |
| 2200 | DD 0xc3a4171a,0xc3a4171a |
| 2201 | DD 0x965e273a,0x965e273a |
| 2202 | DD 0xcb6bab3b,0xcb6bab3b |
| 2203 | DD 0xf1459d1f,0xf1459d1f |
| 2204 | DD 0xab58faac,0xab58faac |
| 2205 | DD 0x9303e34b,0x9303e34b |
| 2206 | DD 0x55fa3020,0x55fa3020 |
| 2207 | DD 0xf66d76ad,0xf66d76ad |
| 2208 | DD 0x9176cc88,0x9176cc88 |
| 2209 | DD 0x254c02f5,0x254c02f5 |
| 2210 | DD 0xfcd7e54f,0xfcd7e54f |
| 2211 | DD 0xd7cb2ac5,0xd7cb2ac5 |
| 2212 | DD 0x80443526,0x80443526 |
| 2213 | DD 0x8fa362b5,0x8fa362b5 |
| 2214 | DD 0x495ab1de,0x495ab1de |
| 2215 | DD 0x671bba25,0x671bba25 |
| 2216 | DD 0x980eea45,0x980eea45 |
| 2217 | DD 0xe1c0fe5d,0xe1c0fe5d |
| 2218 | DD 0x02752fc3,0x02752fc3 |
| 2219 | DD 0x12f04c81,0x12f04c81 |
| 2220 | DD 0xa397468d,0xa397468d |
| 2221 | DD 0xc6f9d36b,0xc6f9d36b |
| 2222 | DD 0xe75f8f03,0xe75f8f03 |
| 2223 | DD 0x959c9215,0x959c9215 |
| 2224 | DD 0xeb7a6dbf,0xeb7a6dbf |
| 2225 | DD 0xda595295,0xda595295 |
| 2226 | DD 0x2d83bed4,0x2d83bed4 |
| 2227 | DD 0xd3217458,0xd3217458 |
| 2228 | DD 0x2969e049,0x2969e049 |
| 2229 | DD 0x44c8c98e,0x44c8c98e |
| 2230 | DD 0x6a89c275,0x6a89c275 |
| 2231 | DD 0x78798ef4,0x78798ef4 |
| 2232 | DD 0x6b3e5899,0x6b3e5899 |
| 2233 | DD 0xdd71b927,0xdd71b927 |
| 2234 | DD 0xb64fe1be,0xb64fe1be |
| 2235 | DD 0x17ad88f0,0x17ad88f0 |
| 2236 | DD 0x66ac20c9,0x66ac20c9 |
| 2237 | DD 0xb43ace7d,0xb43ace7d |
| 2238 | DD 0x184adf63,0x184adf63 |
| 2239 | DD 0x82311ae5,0x82311ae5 |
| 2240 | DD 0x60335197,0x60335197 |
| 2241 | DD 0x457f5362,0x457f5362 |
| 2242 | DD 0xe07764b1,0xe07764b1 |
| 2243 | DD 0x84ae6bbb,0x84ae6bbb |
| 2244 | DD 0x1ca081fe,0x1ca081fe |
| 2245 | DD 0x942b08f9,0x942b08f9 |
| 2246 | DD 0x58684870,0x58684870 |
| 2247 | DD 0x19fd458f,0x19fd458f |
| 2248 | DD 0x876cde94,0x876cde94 |
| 2249 | DD 0xb7f87b52,0xb7f87b52 |
| 2250 | DD 0x23d373ab,0x23d373ab |
| 2251 | DD 0xe2024b72,0xe2024b72 |
| 2252 | DD 0x578f1fe3,0x578f1fe3 |
| 2253 | DD 0x2aab5566,0x2aab5566 |
| 2254 | DD 0x0728ebb2,0x0728ebb2 |
| 2255 | DD 0x03c2b52f,0x03c2b52f |
| 2256 | DD 0x9a7bc586,0x9a7bc586 |
| 2257 | DD 0xa50837d3,0xa50837d3 |
| 2258 | DD 0xf2872830,0xf2872830 |
| 2259 | DD 0xb2a5bf23,0xb2a5bf23 |
| 2260 | DD 0xba6a0302,0xba6a0302 |
| 2261 | DD 0x5c8216ed,0x5c8216ed |
| 2262 | DD 0x2b1ccf8a,0x2b1ccf8a |
| 2263 | DD 0x92b479a7,0x92b479a7 |
| 2264 | DD 0xf0f207f3,0xf0f207f3 |
| 2265 | DD 0xa1e2694e,0xa1e2694e |
| 2266 | DD 0xcdf4da65,0xcdf4da65 |
| 2267 | DD 0xd5be0506,0xd5be0506 |
| 2268 | DD 0x1f6234d1,0x1f6234d1 |
| 2269 | DD 0x8afea6c4,0x8afea6c4 |
| 2270 | DD 0x9d532e34,0x9d532e34 |
| 2271 | DD 0xa055f3a2,0xa055f3a2 |
| 2272 | DD 0x32e18a05,0x32e18a05 |
| 2273 | DD 0x75ebf6a4,0x75ebf6a4 |
| 2274 | DD 0x39ec830b,0x39ec830b |
| 2275 | DD 0xaaef6040,0xaaef6040 |
| 2276 | DD 0x069f715e,0x069f715e |
| 2277 | DD 0x51106ebd,0x51106ebd |
| 2278 | DD 0xf98a213e,0xf98a213e |
| 2279 | DD 0x3d06dd96,0x3d06dd96 |
| 2280 | DD 0xae053edd,0xae053edd |
| 2281 | DD 0x46bde64d,0x46bde64d |
| 2282 | DD 0xb58d5491,0xb58d5491 |
| 2283 | DD 0x055dc471,0x055dc471 |
| 2284 | DD 0x6fd40604,0x6fd40604 |
| 2285 | DD 0xff155060,0xff155060 |
| 2286 | DD 0x24fb9819,0x24fb9819 |
| 2287 | DD 0x97e9bdd6,0x97e9bdd6 |
| 2288 | DD 0xcc434089,0xcc434089 |
| 2289 | DD 0x779ed967,0x779ed967 |
| 2290 | DD 0xbd42e8b0,0xbd42e8b0 |
| 2291 | DD 0x888b8907,0x888b8907 |
| 2292 | DD 0x385b19e7,0x385b19e7 |
| 2293 | DD 0xdbeec879,0xdbeec879 |
| 2294 | DD 0x470a7ca1,0x470a7ca1 |
| 2295 | DD 0xe90f427c,0xe90f427c |
| 2296 | DD 0xc91e84f8,0xc91e84f8 |
| 2297 | DD 0x00000000,0x00000000 |
| 2298 | DD 0x83868009,0x83868009 |
| 2299 | DD 0x48ed2b32,0x48ed2b32 |
| 2300 | DD 0xac70111e,0xac70111e |
| 2301 | DD 0x4e725a6c,0x4e725a6c |
| 2302 | DD 0xfbff0efd,0xfbff0efd |
| 2303 | DD 0x5638850f,0x5638850f |
| 2304 | DD 0x1ed5ae3d,0x1ed5ae3d |
| 2305 | DD 0x27392d36,0x27392d36 |
| 2306 | DD 0x64d90f0a,0x64d90f0a |
| 2307 | DD 0x21a65c68,0x21a65c68 |
| 2308 | DD 0xd1545b9b,0xd1545b9b |
| 2309 | DD 0x3a2e3624,0x3a2e3624 |
| 2310 | DD 0xb1670a0c,0xb1670a0c |
| 2311 | DD 0x0fe75793,0x0fe75793 |
| 2312 | DD 0xd296eeb4,0xd296eeb4 |
| 2313 | DD 0x9e919b1b,0x9e919b1b |
| 2314 | DD 0x4fc5c080,0x4fc5c080 |
| 2315 | DD 0xa220dc61,0xa220dc61 |
| 2316 | DD 0x694b775a,0x694b775a |
| 2317 | DD 0x161a121c,0x161a121c |
| 2318 | DD 0x0aba93e2,0x0aba93e2 |
| 2319 | DD 0xe52aa0c0,0xe52aa0c0 |
| 2320 | DD 0x43e0223c,0x43e0223c |
| 2321 | DD 0x1d171b12,0x1d171b12 |
| 2322 | DD 0x0b0d090e,0x0b0d090e |
| 2323 | DD 0xadc78bf2,0xadc78bf2 |
| 2324 | DD 0xb9a8b62d,0xb9a8b62d |
| 2325 | DD 0xc8a91e14,0xc8a91e14 |
| 2326 | DD 0x8519f157,0x8519f157 |
| 2327 | DD 0x4c0775af,0x4c0775af |
| 2328 | DD 0xbbdd99ee,0xbbdd99ee |
| 2329 | DD 0xfd607fa3,0xfd607fa3 |
| 2330 | DD 0x9f2601f7,0x9f2601f7 |
| 2331 | DD 0xbcf5725c,0xbcf5725c |
| 2332 | DD 0xc53b6644,0xc53b6644 |
| 2333 | DD 0x347efb5b,0x347efb5b |
| 2334 | DD 0x7629438b,0x7629438b |
| 2335 | DD 0xdcc623cb,0xdcc623cb |
| 2336 | DD 0x68fcedb6,0x68fcedb6 |
| 2337 | DD 0x63f1e4b8,0x63f1e4b8 |
| 2338 | DD 0xcadc31d7,0xcadc31d7 |
| 2339 | DD 0x10856342,0x10856342 |
| 2340 | DD 0x40229713,0x40229713 |
| 2341 | DD 0x2011c684,0x2011c684 |
| 2342 | DD 0x7d244a85,0x7d244a85 |
| 2343 | DD 0xf83dbbd2,0xf83dbbd2 |
| 2344 | DD 0x1132f9ae,0x1132f9ae |
| 2345 | DD 0x6da129c7,0x6da129c7 |
| 2346 | DD 0x4b2f9e1d,0x4b2f9e1d |
| 2347 | DD 0xf330b2dc,0xf330b2dc |
| 2348 | DD 0xec52860d,0xec52860d |
| 2349 | DD 0xd0e3c177,0xd0e3c177 |
| 2350 | DD 0x6c16b32b,0x6c16b32b |
| 2351 | DD 0x99b970a9,0x99b970a9 |
| 2352 | DD 0xfa489411,0xfa489411 |
| 2353 | DD 0x2264e947,0x2264e947 |
| 2354 | DD 0xc48cfca8,0xc48cfca8 |
| 2355 | DD 0x1a3ff0a0,0x1a3ff0a0 |
| 2356 | DD 0xd82c7d56,0xd82c7d56 |
| 2357 | DD 0xef903322,0xef903322 |
| 2358 | DD 0xc74e4987,0xc74e4987 |
| 2359 | DD 0xc1d138d9,0xc1d138d9 |
| 2360 | DD 0xfea2ca8c,0xfea2ca8c |
| 2361 | DD 0x360bd498,0x360bd498 |
| 2362 | DD 0xcf81f5a6,0xcf81f5a6 |
| 2363 | DD 0x28de7aa5,0x28de7aa5 |
| 2364 | DD 0x268eb7da,0x268eb7da |
| 2365 | DD 0xa4bfad3f,0xa4bfad3f |
| 2366 | DD 0xe49d3a2c,0xe49d3a2c |
| 2367 | DD 0x0d927850,0x0d927850 |
| 2368 | DD 0x9bcc5f6a,0x9bcc5f6a |
| 2369 | DD 0x62467e54,0x62467e54 |
| 2370 | DD 0xc2138df6,0xc2138df6 |
| 2371 | DD 0xe8b8d890,0xe8b8d890 |
| 2372 | DD 0x5ef7392e,0x5ef7392e |
| 2373 | DD 0xf5afc382,0xf5afc382 |
| 2374 | DD 0xbe805d9f,0xbe805d9f |
| 2375 | DD 0x7c93d069,0x7c93d069 |
| 2376 | DD 0xa92dd56f,0xa92dd56f |
| 2377 | DD 0xb31225cf,0xb31225cf |
| 2378 | DD 0x3b99acc8,0x3b99acc8 |
| 2379 | DD 0xa77d1810,0xa77d1810 |
| 2380 | DD 0x6e639ce8,0x6e639ce8 |
| 2381 | DD 0x7bbb3bdb,0x7bbb3bdb |
| 2382 | DD 0x097826cd,0x097826cd |
| 2383 | DD 0xf418596e,0xf418596e |
| 2384 | DD 0x01b79aec,0x01b79aec |
| 2385 | DD 0xa89a4f83,0xa89a4f83 |
| 2386 | DD 0x656e95e6,0x656e95e6 |
| 2387 | DD 0x7ee6ffaa,0x7ee6ffaa |
| 2388 | DD 0x08cfbc21,0x08cfbc21 |
| 2389 | DD 0xe6e815ef,0xe6e815ef |
| 2390 | DD 0xd99be7ba,0xd99be7ba |
| 2391 | DD 0xce366f4a,0xce366f4a |
| 2392 | DD 0xd4099fea,0xd4099fea |
| 2393 | DD 0xd67cb029,0xd67cb029 |
| 2394 | DD 0xafb2a431,0xafb2a431 |
| 2395 | DD 0x31233f2a,0x31233f2a |
| 2396 | DD 0x3094a5c6,0x3094a5c6 |
| 2397 | DD 0xc066a235,0xc066a235 |
| 2398 | DD 0x37bc4e74,0x37bc4e74 |
| 2399 | DD 0xa6ca82fc,0xa6ca82fc |
| 2400 | DD 0xb0d090e0,0xb0d090e0 |
| 2401 | DD 0x15d8a733,0x15d8a733 |
| 2402 | DD 0x4a9804f1,0x4a9804f1 |
| 2403 | DD 0xf7daec41,0xf7daec41 |
| 2404 | DD 0x0e50cd7f,0x0e50cd7f |
| 2405 | DD 0x2ff69117,0x2ff69117 |
| 2406 | DD 0x8dd64d76,0x8dd64d76 |
| 2407 | DD 0x4db0ef43,0x4db0ef43 |
| 2408 | DD 0x544daacc,0x544daacc |
| 2409 | DD 0xdf0496e4,0xdf0496e4 |
| 2410 | DD 0xe3b5d19e,0xe3b5d19e |
| 2411 | DD 0x1b886a4c,0x1b886a4c |
| 2412 | DD 0xb81f2cc1,0xb81f2cc1 |
| 2413 | DD 0x7f516546,0x7f516546 |
| 2414 | DD 0x04ea5e9d,0x04ea5e9d |
| 2415 | DD 0x5d358c01,0x5d358c01 |
| 2416 | DD 0x737487fa,0x737487fa |
| 2417 | DD 0x2e410bfb,0x2e410bfb |
| 2418 | DD 0x5a1d67b3,0x5a1d67b3 |
| 2419 | DD 0x52d2db92,0x52d2db92 |
| 2420 | DD 0x335610e9,0x335610e9 |
| 2421 | DD 0x1347d66d,0x1347d66d |
| 2422 | DD 0x8c61d79a,0x8c61d79a |
| 2423 | DD 0x7a0ca137,0x7a0ca137 |
| 2424 | DD 0x8e14f859,0x8e14f859 |
| 2425 | DD 0x893c13eb,0x893c13eb |
| 2426 | DD 0xee27a9ce,0xee27a9ce |
| 2427 | DD 0x35c961b7,0x35c961b7 |
| 2428 | DD 0xede51ce1,0xede51ce1 |
| 2429 | DD 0x3cb1477a,0x3cb1477a |
| 2430 | DD 0x59dfd29c,0x59dfd29c |
| 2431 | DD 0x3f73f255,0x3f73f255 |
| 2432 | DD 0x79ce1418,0x79ce1418 |
| 2433 | DD 0xbf37c773,0xbf37c773 |
| 2434 | DD 0xeacdf753,0xeacdf753 |
| 2435 | DD 0x5baafd5f,0x5baafd5f |
| 2436 | DD 0x146f3ddf,0x146f3ddf |
| 2437 | DD 0x86db4478,0x86db4478 |
| 2438 | DD 0x81f3afca,0x81f3afca |
| 2439 | DD 0x3ec468b9,0x3ec468b9 |
| 2440 | DD 0x2c342438,0x2c342438 |
| 2441 | DD 0x5f40a3c2,0x5f40a3c2 |
| 2442 | DD 0x72c31d16,0x72c31d16 |
| 2443 | DD 0x0c25e2bc,0x0c25e2bc |
| 2444 | DD 0x8b493c28,0x8b493c28 |
| 2445 | DD 0x41950dff,0x41950dff |
| 2446 | DD 0x7101a839,0x7101a839 |
| 2447 | DD 0xdeb30c08,0xdeb30c08 |
| 2448 | DD 0x9ce4b4d8,0x9ce4b4d8 |
| 2449 | DD 0x90c15664,0x90c15664 |
| 2450 | DD 0x6184cb7b,0x6184cb7b |
| 2451 | DD 0x70b632d5,0x70b632d5 |
| 2452 | DD 0x745c6c48,0x745c6c48 |
| 2453 | DD 0x4257b8d0,0x4257b8d0 |
| 2454 | DB 0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38 |
| 2455 | DB 0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb |
| 2456 | DB 0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87 |
| 2457 | DB 0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb |
| 2458 | DB 0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d |
| 2459 | DB 0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e |
| 2460 | DB 0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2 |
| 2461 | DB 0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25 |
| 2462 | DB 0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16 |
| 2463 | DB 0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92 |
| 2464 | DB 0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda |
| 2465 | DB 0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84 |
| 2466 | DB 0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a |
| 2467 | DB 0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06 |
| 2468 | DB 0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02 |
| 2469 | DB 0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b |
| 2470 | DB 0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea |
| 2471 | DB 0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73 |
| 2472 | DB 0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85 |
| 2473 | DB 0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e |
| 2474 | DB 0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89 |
| 2475 | DB 0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b |
| 2476 | DB 0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20 |
| 2477 | DB 0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4 |
| 2478 | DB 0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31 |
| 2479 | DB 0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f |
| 2480 | DB 0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d |
| 2481 | DB 0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef |
| 2482 | DB 0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0 |
| 2483 | DB 0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61 |
| 2484 | DB 0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26 |
| 2485 | DB 0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d |
| 2486 | DD 0x80808080,0x80808080,0xfefefefe,0xfefefefe |
| 2487 | DD 0x1b1b1b1b,0x1b1b1b1b,0,0 |
| 2488 | DB 0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38 |
| 2489 | DB 0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb |
| 2490 | DB 0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87 |
| 2491 | DB 0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb |
| 2492 | DB 0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d |
| 2493 | DB 0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e |
| 2494 | DB 0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2 |
| 2495 | DB 0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25 |
| 2496 | DB 0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16 |
| 2497 | DB 0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92 |
| 2498 | DB 0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda |
| 2499 | DB 0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84 |
| 2500 | DB 0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a |
| 2501 | DB 0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06 |
| 2502 | DB 0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02 |
| 2503 | DB 0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b |
| 2504 | DB 0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea |
| 2505 | DB 0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73 |
| 2506 | DB 0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85 |
| 2507 | DB 0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e |
| 2508 | DB 0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89 |
| 2509 | DB 0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b |
| 2510 | DB 0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20 |
| 2511 | DB 0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4 |
| 2512 | DB 0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31 |
| 2513 | DB 0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f |
| 2514 | DB 0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d |
| 2515 | DB 0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef |
| 2516 | DB 0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0 |
| 2517 | DB 0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61 |
| 2518 | DB 0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26 |
| 2519 | DB 0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d |
| 2520 | DD 0x80808080,0x80808080,0xfefefefe,0xfefefefe |
| 2521 | DD 0x1b1b1b1b,0x1b1b1b1b,0,0 |
| 2522 | DB 0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38 |
| 2523 | DB 0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb |
| 2524 | DB 0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87 |
| 2525 | DB 0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb |
| 2526 | DB 0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d |
| 2527 | DB 0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e |
| 2528 | DB 0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2 |
| 2529 | DB 0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25 |
| 2530 | DB 0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16 |
| 2531 | DB 0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92 |
| 2532 | DB 0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda |
| 2533 | DB 0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84 |
| 2534 | DB 0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a |
| 2535 | DB 0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06 |
| 2536 | DB 0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02 |
| 2537 | DB 0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b |
| 2538 | DB 0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea |
| 2539 | DB 0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73 |
| 2540 | DB 0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85 |
| 2541 | DB 0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e |
| 2542 | DB 0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89 |
| 2543 | DB 0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b |
| 2544 | DB 0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20 |
| 2545 | DB 0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4 |
| 2546 | DB 0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31 |
| 2547 | DB 0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f |
| 2548 | DB 0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d |
| 2549 | DB 0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef |
| 2550 | DB 0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0 |
| 2551 | DB 0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61 |
| 2552 | DB 0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26 |
| 2553 | DB 0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d |
| 2554 | DD 0x80808080,0x80808080,0xfefefefe,0xfefefefe |
| 2555 | DD 0x1b1b1b1b,0x1b1b1b1b,0,0 |
| 2556 | DB 0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38 |
| 2557 | DB 0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb |
| 2558 | DB 0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87 |
| 2559 | DB 0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb |
| 2560 | DB 0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d |
| 2561 | DB 0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e |
| 2562 | DB 0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2 |
| 2563 | DB 0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25 |
| 2564 | DB 0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16 |
| 2565 | DB 0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92 |
| 2566 | DB 0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda |
| 2567 | DB 0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84 |
| 2568 | DB 0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a |
| 2569 | DB 0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06 |
| 2570 | DB 0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02 |
| 2571 | DB 0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b |
| 2572 | DB 0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea |
| 2573 | DB 0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73 |
| 2574 | DB 0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85 |
| 2575 | DB 0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e |
| 2576 | DB 0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89 |
| 2577 | DB 0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b |
| 2578 | DB 0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20 |
| 2579 | DB 0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4 |
| 2580 | DB 0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31 |
| 2581 | DB 0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f |
| 2582 | DB 0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d |
| 2583 | DB 0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef |
| 2584 | DB 0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0 |
| 2585 | DB 0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61 |
| 2586 | DB 0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26 |
| 2587 | DB 0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d |
| 2588 | DD 0x80808080,0x80808080,0xfefefefe,0xfefefefe |
| 2589 | DD 0x1b1b1b1b,0x1b1b1b1b,0,0 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2590 | DB 65,69,83,32,102,111,114,32,120,56,54,95,54,52,44,32 |
| 2591 | DB 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 |
| 2592 | DB 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 |
| 2593 | DB 62,0 |
| 2594 | ALIGN 64 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2595 | EXTERN __imp_RtlVirtualUnwind |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2596 | |
| 2597 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2598 | block_se_handler: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2599 | push rsi |
| 2600 | push rdi |
| 2601 | push rbx |
| 2602 | push rbp |
| 2603 | push r12 |
| 2604 | push r13 |
| 2605 | push r14 |
| 2606 | push r15 |
| 2607 | pushfq |
| 2608 | sub rsp,64 |
| 2609 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2610 | mov rax,QWORD[120+r8] |
| 2611 | mov rbx,QWORD[248+r8] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2612 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2613 | mov rsi,QWORD[8+r9] |
| 2614 | mov r11,QWORD[56+r9] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2615 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2616 | mov r10d,DWORD[r11] |
| 2617 | lea r10,[r10*1+rsi] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2618 | cmp rbx,r10 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2619 | jb NEAR $L$in_block_prologue |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2620 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2621 | mov rax,QWORD[152+r8] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2622 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2623 | mov r10d,DWORD[4+r11] |
| 2624 | lea r10,[r10*1+rsi] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2625 | cmp rbx,r10 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2626 | jae NEAR $L$in_block_prologue |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2627 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2628 | mov rax,QWORD[24+rax] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2629 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2630 | mov rbx,QWORD[((-8))+rax] |
| 2631 | mov rbp,QWORD[((-16))+rax] |
| 2632 | mov r12,QWORD[((-24))+rax] |
| 2633 | mov r13,QWORD[((-32))+rax] |
| 2634 | mov r14,QWORD[((-40))+rax] |
| 2635 | mov r15,QWORD[((-48))+rax] |
| 2636 | mov QWORD[144+r8],rbx |
| 2637 | mov QWORD[160+r8],rbp |
| 2638 | mov QWORD[216+r8],r12 |
| 2639 | mov QWORD[224+r8],r13 |
| 2640 | mov QWORD[232+r8],r14 |
| 2641 | mov QWORD[240+r8],r15 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2642 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2643 | $L$in_block_prologue: |
| 2644 | mov rdi,QWORD[8+rax] |
| 2645 | mov rsi,QWORD[16+rax] |
| 2646 | mov QWORD[152+r8],rax |
| 2647 | mov QWORD[168+r8],rsi |
| 2648 | mov QWORD[176+r8],rdi |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2649 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2650 | jmp NEAR $L$common_seh_exit |
| 2651 | |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2652 | |
| 2653 | |
| 2654 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2655 | key_se_handler: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2656 | push rsi |
| 2657 | push rdi |
| 2658 | push rbx |
| 2659 | push rbp |
| 2660 | push r12 |
| 2661 | push r13 |
| 2662 | push r14 |
| 2663 | push r15 |
| 2664 | pushfq |
| 2665 | sub rsp,64 |
| 2666 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2667 | mov rax,QWORD[120+r8] |
| 2668 | mov rbx,QWORD[248+r8] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2669 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2670 | mov rsi,QWORD[8+r9] |
| 2671 | mov r11,QWORD[56+r9] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2672 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2673 | mov r10d,DWORD[r11] |
| 2674 | lea r10,[r10*1+rsi] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2675 | cmp rbx,r10 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2676 | jb NEAR $L$in_key_prologue |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2677 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2678 | mov rax,QWORD[152+r8] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2679 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2680 | mov r10d,DWORD[4+r11] |
| 2681 | lea r10,[r10*1+rsi] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2682 | cmp rbx,r10 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2683 | jae NEAR $L$in_key_prologue |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2684 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2685 | lea rax,[56+rax] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2686 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2687 | mov rbx,QWORD[((-8))+rax] |
| 2688 | mov rbp,QWORD[((-16))+rax] |
| 2689 | mov r12,QWORD[((-24))+rax] |
| 2690 | mov r13,QWORD[((-32))+rax] |
| 2691 | mov r14,QWORD[((-40))+rax] |
| 2692 | mov r15,QWORD[((-48))+rax] |
| 2693 | mov QWORD[144+r8],rbx |
| 2694 | mov QWORD[160+r8],rbp |
| 2695 | mov QWORD[216+r8],r12 |
| 2696 | mov QWORD[224+r8],r13 |
| 2697 | mov QWORD[232+r8],r14 |
| 2698 | mov QWORD[240+r8],r15 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2699 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2700 | $L$in_key_prologue: |
| 2701 | mov rdi,QWORD[8+rax] |
| 2702 | mov rsi,QWORD[16+rax] |
| 2703 | mov QWORD[152+r8],rax |
| 2704 | mov QWORD[168+r8],rsi |
| 2705 | mov QWORD[176+r8],rdi |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2706 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2707 | jmp NEAR $L$common_seh_exit |
| 2708 | |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2709 | |
| 2710 | |
| 2711 | ALIGN 16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2712 | cbc_se_handler: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2713 | push rsi |
| 2714 | push rdi |
| 2715 | push rbx |
| 2716 | push rbp |
| 2717 | push r12 |
| 2718 | push r13 |
| 2719 | push r14 |
| 2720 | push r15 |
| 2721 | pushfq |
| 2722 | sub rsp,64 |
| 2723 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2724 | mov rax,QWORD[120+r8] |
| 2725 | mov rbx,QWORD[248+r8] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2726 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2727 | lea r10,[$L$cbc_prologue] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2728 | cmp rbx,r10 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2729 | jb NEAR $L$in_cbc_prologue |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2730 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2731 | lea r10,[$L$cbc_fast_body] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2732 | cmp rbx,r10 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2733 | jb NEAR $L$in_cbc_frame_setup |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2734 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2735 | lea r10,[$L$cbc_slow_prologue] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2736 | cmp rbx,r10 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2737 | jb NEAR $L$in_cbc_body |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2738 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2739 | lea r10,[$L$cbc_slow_body] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2740 | cmp rbx,r10 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2741 | jb NEAR $L$in_cbc_frame_setup |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2742 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2743 | $L$in_cbc_body: |
| 2744 | mov rax,QWORD[152+r8] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2745 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2746 | lea r10,[$L$cbc_epilogue] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2747 | cmp rbx,r10 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2748 | jae NEAR $L$in_cbc_prologue |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2749 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2750 | lea rax,[8+rax] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2751 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2752 | lea r10,[$L$cbc_popfq] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2753 | cmp rbx,r10 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2754 | jae NEAR $L$in_cbc_prologue |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2755 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2756 | mov rax,QWORD[8+rax] |
| 2757 | lea rax,[56+rax] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2758 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2759 | $L$in_cbc_frame_setup: |
| 2760 | mov rbx,QWORD[((-16))+rax] |
| 2761 | mov rbp,QWORD[((-24))+rax] |
| 2762 | mov r12,QWORD[((-32))+rax] |
| 2763 | mov r13,QWORD[((-40))+rax] |
| 2764 | mov r14,QWORD[((-48))+rax] |
| 2765 | mov r15,QWORD[((-56))+rax] |
| 2766 | mov QWORD[144+r8],rbx |
| 2767 | mov QWORD[160+r8],rbp |
| 2768 | mov QWORD[216+r8],r12 |
| 2769 | mov QWORD[224+r8],r13 |
| 2770 | mov QWORD[232+r8],r14 |
| 2771 | mov QWORD[240+r8],r15 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2772 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2773 | $L$in_cbc_prologue: |
| 2774 | mov rdi,QWORD[8+rax] |
| 2775 | mov rsi,QWORD[16+rax] |
| 2776 | mov QWORD[152+r8],rax |
| 2777 | mov QWORD[168+r8],rsi |
| 2778 | mov QWORD[176+r8],rdi |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2779 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2780 | $L$common_seh_exit: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2781 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2782 | mov rdi,QWORD[40+r9] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2783 | mov rsi,r8 |
| 2784 | mov ecx,154 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2785 | DD 0xa548f3fc |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2786 | |
| 2787 | mov rsi,r9 |
| 2788 | xor rcx,rcx |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2789 | mov rdx,QWORD[8+rsi] |
| 2790 | mov r8,QWORD[rsi] |
| 2791 | mov r9,QWORD[16+rsi] |
| 2792 | mov r10,QWORD[40+rsi] |
| 2793 | lea r11,[56+rsi] |
| 2794 | lea r12,[24+rsi] |
| 2795 | mov QWORD[32+rsp],r10 |
| 2796 | mov QWORD[40+rsp],r11 |
| 2797 | mov QWORD[48+rsp],r12 |
| 2798 | mov QWORD[56+rsp],rcx |
| 2799 | call QWORD[__imp_RtlVirtualUnwind] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2800 | |
| 2801 | mov eax,1 |
| 2802 | add rsp,64 |
| 2803 | popfq |
| 2804 | pop r15 |
| 2805 | pop r14 |
| 2806 | pop r13 |
| 2807 | pop r12 |
| 2808 | pop rbp |
| 2809 | pop rbx |
| 2810 | pop rdi |
| 2811 | pop rsi |
| 2812 | DB 0F3h,0C3h ;repret |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2813 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2814 | |
| 2815 | section .pdata rdata align=4 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2816 | ALIGN 4 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2817 | DD $L$SEH_begin_asm_AES_encrypt wrt ..imagebase |
| 2818 | DD $L$SEH_end_asm_AES_encrypt wrt ..imagebase |
| 2819 | DD $L$SEH_info_asm_AES_encrypt wrt ..imagebase |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2820 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2821 | DD $L$SEH_begin_asm_AES_decrypt wrt ..imagebase |
| 2822 | DD $L$SEH_end_asm_AES_decrypt wrt ..imagebase |
| 2823 | DD $L$SEH_info_asm_AES_decrypt wrt ..imagebase |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2824 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2825 | DD $L$SEH_begin_asm_AES_set_encrypt_key wrt ..imagebase |
| 2826 | DD $L$SEH_end_asm_AES_set_encrypt_key wrt ..imagebase |
| 2827 | DD $L$SEH_info_asm_AES_set_encrypt_key wrt ..imagebase |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2828 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2829 | DD $L$SEH_begin_asm_AES_set_decrypt_key wrt ..imagebase |
| 2830 | DD $L$SEH_end_asm_AES_set_decrypt_key wrt ..imagebase |
| 2831 | DD $L$SEH_info_asm_AES_set_decrypt_key wrt ..imagebase |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2832 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2833 | DD $L$SEH_begin_asm_AES_cbc_encrypt wrt ..imagebase |
| 2834 | DD $L$SEH_end_asm_AES_cbc_encrypt wrt ..imagebase |
| 2835 | DD $L$SEH_info_asm_AES_cbc_encrypt wrt ..imagebase |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2836 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2837 | section .xdata rdata align=8 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2838 | ALIGN 8 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2839 | $L$SEH_info_asm_AES_encrypt: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2840 | DB 9,0,0,0 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2841 | DD block_se_handler wrt ..imagebase |
| 2842 | DD $L$enc_prologue wrt ..imagebase,$L$enc_epilogue wrt ..imagebase |
| 2843 | $L$SEH_info_asm_AES_decrypt: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2844 | DB 9,0,0,0 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2845 | DD block_se_handler wrt ..imagebase |
| 2846 | DD $L$dec_prologue wrt ..imagebase,$L$dec_epilogue wrt ..imagebase |
| 2847 | $L$SEH_info_asm_AES_set_encrypt_key: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2848 | DB 9,0,0,0 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2849 | DD key_se_handler wrt ..imagebase |
| 2850 | DD $L$enc_key_prologue wrt ..imagebase,$L$enc_key_epilogue wrt ..imagebase |
| 2851 | $L$SEH_info_asm_AES_set_decrypt_key: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2852 | DB 9,0,0,0 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2853 | DD key_se_handler wrt ..imagebase |
| 2854 | DD $L$dec_key_prologue wrt ..imagebase,$L$dec_key_epilogue wrt ..imagebase |
| 2855 | $L$SEH_info_asm_AES_cbc_encrypt: |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 2856 | DB 9,0,0,0 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 2857 | DD cbc_se_handler wrt ..imagebase |