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