wp-x86_64.S revision 299966
1# $FreeBSD: stable/10/secure/lib/libcrypto/amd64/wp-x86_64.S 299966 2016-05-16 19:30:27Z jkim $ 2# Do not modify. This file is auto-generated from wp-x86_64.pl. 3.text 4 5.globl whirlpool_block 6.type whirlpool_block,@function 7.align 16 8whirlpool_block: 9 pushq %rbx 10 pushq %rbp 11 pushq %r12 12 pushq %r13 13 pushq %r14 14 pushq %r15 15 16 movq %rsp,%r11 17 subq $128+40,%rsp 18 andq $-64,%rsp 19 20 leaq 128(%rsp),%r10 21 movq %rdi,0(%r10) 22 movq %rsi,8(%r10) 23 movq %rdx,16(%r10) 24 movq %r11,32(%r10) 25.Lprologue: 26 27 movq %r10,%rbx 28 leaq .Ltable(%rip),%rbp 29 30 xorq %rcx,%rcx 31 xorq %rdx,%rdx 32 movq 0(%rdi),%r8 33 movq 8(%rdi),%r9 34 movq 16(%rdi),%r10 35 movq 24(%rdi),%r11 36 movq 32(%rdi),%r12 37 movq 40(%rdi),%r13 38 movq 48(%rdi),%r14 39 movq 56(%rdi),%r15 40.Louterloop: 41 movq %r8,0(%rsp) 42 movq %r9,8(%rsp) 43 movq %r10,16(%rsp) 44 movq %r11,24(%rsp) 45 movq %r12,32(%rsp) 46 movq %r13,40(%rsp) 47 movq %r14,48(%rsp) 48 movq %r15,56(%rsp) 49 xorq 0(%rsi),%r8 50 xorq 8(%rsi),%r9 51 xorq 16(%rsi),%r10 52 xorq 24(%rsi),%r11 53 xorq 32(%rsi),%r12 54 xorq 40(%rsi),%r13 55 xorq 48(%rsi),%r14 56 xorq 56(%rsi),%r15 57 movq %r8,64+0(%rsp) 58 movq %r9,64+8(%rsp) 59 movq %r10,64+16(%rsp) 60 movq %r11,64+24(%rsp) 61 movq %r12,64+32(%rsp) 62 movq %r13,64+40(%rsp) 63 movq %r14,64+48(%rsp) 64 movq %r15,64+56(%rsp) 65 xorq %rsi,%rsi 66 movq %rsi,24(%rbx) 67.align 16 68.Lround: 69 movq 4096(%rbp,%rsi,8),%r8 70 movl 0(%rsp),%eax 71 movl 4(%rsp),%ebx 72 movb %al,%cl 73 movb %ah,%dl 74 leaq (%rcx,%rcx,1),%rsi 75 leaq (%rdx,%rdx,1),%rdi 76 shrl $16,%eax 77 xorq 0(%rbp,%rsi,8),%r8 78 movq 7(%rbp,%rdi,8),%r9 79 movb %al,%cl 80 movb %ah,%dl 81 movl 0+8(%rsp),%eax 82 leaq (%rcx,%rcx,1),%rsi 83 leaq (%rdx,%rdx,1),%rdi 84 movq 6(%rbp,%rsi,8),%r10 85 movq 5(%rbp,%rdi,8),%r11 86 movb %bl,%cl 87 movb %bh,%dl 88 leaq (%rcx,%rcx,1),%rsi 89 leaq (%rdx,%rdx,1),%rdi 90 shrl $16,%ebx 91 movq 4(%rbp,%rsi,8),%r12 92 movq 3(%rbp,%rdi,8),%r13 93 movb %bl,%cl 94 movb %bh,%dl 95 movl 0+8+4(%rsp),%ebx 96 leaq (%rcx,%rcx,1),%rsi 97 leaq (%rdx,%rdx,1),%rdi 98 movq 2(%rbp,%rsi,8),%r14 99 movq 1(%rbp,%rdi,8),%r15 100 movb %al,%cl 101 movb %ah,%dl 102 leaq (%rcx,%rcx,1),%rsi 103 leaq (%rdx,%rdx,1),%rdi 104 shrl $16,%eax 105 xorq 0(%rbp,%rsi,8),%r9 106 xorq 7(%rbp,%rdi,8),%r10 107 movb %al,%cl 108 movb %ah,%dl 109 movl 8+8(%rsp),%eax 110 leaq (%rcx,%rcx,1),%rsi 111 leaq (%rdx,%rdx,1),%rdi 112 xorq 6(%rbp,%rsi,8),%r11 113 xorq 5(%rbp,%rdi,8),%r12 114 movb %bl,%cl 115 movb %bh,%dl 116 leaq (%rcx,%rcx,1),%rsi 117 leaq (%rdx,%rdx,1),%rdi 118 shrl $16,%ebx 119 xorq 4(%rbp,%rsi,8),%r13 120 xorq 3(%rbp,%rdi,8),%r14 121 movb %bl,%cl 122 movb %bh,%dl 123 movl 8+8+4(%rsp),%ebx 124 leaq (%rcx,%rcx,1),%rsi 125 leaq (%rdx,%rdx,1),%rdi 126 xorq 2(%rbp,%rsi,8),%r15 127 xorq 1(%rbp,%rdi,8),%r8 128 movb %al,%cl 129 movb %ah,%dl 130 leaq (%rcx,%rcx,1),%rsi 131 leaq (%rdx,%rdx,1),%rdi 132 shrl $16,%eax 133 xorq 0(%rbp,%rsi,8),%r10 134 xorq 7(%rbp,%rdi,8),%r11 135 movb %al,%cl 136 movb %ah,%dl 137 movl 16+8(%rsp),%eax 138 leaq (%rcx,%rcx,1),%rsi 139 leaq (%rdx,%rdx,1),%rdi 140 xorq 6(%rbp,%rsi,8),%r12 141 xorq 5(%rbp,%rdi,8),%r13 142 movb %bl,%cl 143 movb %bh,%dl 144 leaq (%rcx,%rcx,1),%rsi 145 leaq (%rdx,%rdx,1),%rdi 146 shrl $16,%ebx 147 xorq 4(%rbp,%rsi,8),%r14 148 xorq 3(%rbp,%rdi,8),%r15 149 movb %bl,%cl 150 movb %bh,%dl 151 movl 16+8+4(%rsp),%ebx 152 leaq (%rcx,%rcx,1),%rsi 153 leaq (%rdx,%rdx,1),%rdi 154 xorq 2(%rbp,%rsi,8),%r8 155 xorq 1(%rbp,%rdi,8),%r9 156 movb %al,%cl 157 movb %ah,%dl 158 leaq (%rcx,%rcx,1),%rsi 159 leaq (%rdx,%rdx,1),%rdi 160 shrl $16,%eax 161 xorq 0(%rbp,%rsi,8),%r11 162 xorq 7(%rbp,%rdi,8),%r12 163 movb %al,%cl 164 movb %ah,%dl 165 movl 24+8(%rsp),%eax 166 leaq (%rcx,%rcx,1),%rsi 167 leaq (%rdx,%rdx,1),%rdi 168 xorq 6(%rbp,%rsi,8),%r13 169 xorq 5(%rbp,%rdi,8),%r14 170 movb %bl,%cl 171 movb %bh,%dl 172 leaq (%rcx,%rcx,1),%rsi 173 leaq (%rdx,%rdx,1),%rdi 174 shrl $16,%ebx 175 xorq 4(%rbp,%rsi,8),%r15 176 xorq 3(%rbp,%rdi,8),%r8 177 movb %bl,%cl 178 movb %bh,%dl 179 movl 24+8+4(%rsp),%ebx 180 leaq (%rcx,%rcx,1),%rsi 181 leaq (%rdx,%rdx,1),%rdi 182 xorq 2(%rbp,%rsi,8),%r9 183 xorq 1(%rbp,%rdi,8),%r10 184 movb %al,%cl 185 movb %ah,%dl 186 leaq (%rcx,%rcx,1),%rsi 187 leaq (%rdx,%rdx,1),%rdi 188 shrl $16,%eax 189 xorq 0(%rbp,%rsi,8),%r12 190 xorq 7(%rbp,%rdi,8),%r13 191 movb %al,%cl 192 movb %ah,%dl 193 movl 32+8(%rsp),%eax 194 leaq (%rcx,%rcx,1),%rsi 195 leaq (%rdx,%rdx,1),%rdi 196 xorq 6(%rbp,%rsi,8),%r14 197 xorq 5(%rbp,%rdi,8),%r15 198 movb %bl,%cl 199 movb %bh,%dl 200 leaq (%rcx,%rcx,1),%rsi 201 leaq (%rdx,%rdx,1),%rdi 202 shrl $16,%ebx 203 xorq 4(%rbp,%rsi,8),%r8 204 xorq 3(%rbp,%rdi,8),%r9 205 movb %bl,%cl 206 movb %bh,%dl 207 movl 32+8+4(%rsp),%ebx 208 leaq (%rcx,%rcx,1),%rsi 209 leaq (%rdx,%rdx,1),%rdi 210 xorq 2(%rbp,%rsi,8),%r10 211 xorq 1(%rbp,%rdi,8),%r11 212 movb %al,%cl 213 movb %ah,%dl 214 leaq (%rcx,%rcx,1),%rsi 215 leaq (%rdx,%rdx,1),%rdi 216 shrl $16,%eax 217 xorq 0(%rbp,%rsi,8),%r13 218 xorq 7(%rbp,%rdi,8),%r14 219 movb %al,%cl 220 movb %ah,%dl 221 movl 40+8(%rsp),%eax 222 leaq (%rcx,%rcx,1),%rsi 223 leaq (%rdx,%rdx,1),%rdi 224 xorq 6(%rbp,%rsi,8),%r15 225 xorq 5(%rbp,%rdi,8),%r8 226 movb %bl,%cl 227 movb %bh,%dl 228 leaq (%rcx,%rcx,1),%rsi 229 leaq (%rdx,%rdx,1),%rdi 230 shrl $16,%ebx 231 xorq 4(%rbp,%rsi,8),%r9 232 xorq 3(%rbp,%rdi,8),%r10 233 movb %bl,%cl 234 movb %bh,%dl 235 movl 40+8+4(%rsp),%ebx 236 leaq (%rcx,%rcx,1),%rsi 237 leaq (%rdx,%rdx,1),%rdi 238 xorq 2(%rbp,%rsi,8),%r11 239 xorq 1(%rbp,%rdi,8),%r12 240 movb %al,%cl 241 movb %ah,%dl 242 leaq (%rcx,%rcx,1),%rsi 243 leaq (%rdx,%rdx,1),%rdi 244 shrl $16,%eax 245 xorq 0(%rbp,%rsi,8),%r14 246 xorq 7(%rbp,%rdi,8),%r15 247 movb %al,%cl 248 movb %ah,%dl 249 movl 48+8(%rsp),%eax 250 leaq (%rcx,%rcx,1),%rsi 251 leaq (%rdx,%rdx,1),%rdi 252 xorq 6(%rbp,%rsi,8),%r8 253 xorq 5(%rbp,%rdi,8),%r9 254 movb %bl,%cl 255 movb %bh,%dl 256 leaq (%rcx,%rcx,1),%rsi 257 leaq (%rdx,%rdx,1),%rdi 258 shrl $16,%ebx 259 xorq 4(%rbp,%rsi,8),%r10 260 xorq 3(%rbp,%rdi,8),%r11 261 movb %bl,%cl 262 movb %bh,%dl 263 movl 48+8+4(%rsp),%ebx 264 leaq (%rcx,%rcx,1),%rsi 265 leaq (%rdx,%rdx,1),%rdi 266 xorq 2(%rbp,%rsi,8),%r12 267 xorq 1(%rbp,%rdi,8),%r13 268 movb %al,%cl 269 movb %ah,%dl 270 leaq (%rcx,%rcx,1),%rsi 271 leaq (%rdx,%rdx,1),%rdi 272 shrl $16,%eax 273 xorq 0(%rbp,%rsi,8),%r15 274 xorq 7(%rbp,%rdi,8),%r8 275 movb %al,%cl 276 movb %ah,%dl 277 movl 56+8(%rsp),%eax 278 leaq (%rcx,%rcx,1),%rsi 279 leaq (%rdx,%rdx,1),%rdi 280 xorq 6(%rbp,%rsi,8),%r9 281 xorq 5(%rbp,%rdi,8),%r10 282 movb %bl,%cl 283 movb %bh,%dl 284 leaq (%rcx,%rcx,1),%rsi 285 leaq (%rdx,%rdx,1),%rdi 286 shrl $16,%ebx 287 xorq 4(%rbp,%rsi,8),%r11 288 xorq 3(%rbp,%rdi,8),%r12 289 movb %bl,%cl 290 movb %bh,%dl 291 movl 56+8+4(%rsp),%ebx 292 leaq (%rcx,%rcx,1),%rsi 293 leaq (%rdx,%rdx,1),%rdi 294 xorq 2(%rbp,%rsi,8),%r13 295 xorq 1(%rbp,%rdi,8),%r14 296 movq %r8,0(%rsp) 297 movq %r9,8(%rsp) 298 movq %r10,16(%rsp) 299 movq %r11,24(%rsp) 300 movq %r12,32(%rsp) 301 movq %r13,40(%rsp) 302 movq %r14,48(%rsp) 303 movq %r15,56(%rsp) 304 movb %al,%cl 305 movb %ah,%dl 306 leaq (%rcx,%rcx,1),%rsi 307 leaq (%rdx,%rdx,1),%rdi 308 shrl $16,%eax 309 xorq 0(%rbp,%rsi,8),%r8 310 xorq 7(%rbp,%rdi,8),%r9 311 movb %al,%cl 312 movb %ah,%dl 313 movl 64+0+8(%rsp),%eax 314 leaq (%rcx,%rcx,1),%rsi 315 leaq (%rdx,%rdx,1),%rdi 316 xorq 6(%rbp,%rsi,8),%r10 317 xorq 5(%rbp,%rdi,8),%r11 318 movb %bl,%cl 319 movb %bh,%dl 320 leaq (%rcx,%rcx,1),%rsi 321 leaq (%rdx,%rdx,1),%rdi 322 shrl $16,%ebx 323 xorq 4(%rbp,%rsi,8),%r12 324 xorq 3(%rbp,%rdi,8),%r13 325 movb %bl,%cl 326 movb %bh,%dl 327 movl 64+0+8+4(%rsp),%ebx 328 leaq (%rcx,%rcx,1),%rsi 329 leaq (%rdx,%rdx,1),%rdi 330 xorq 2(%rbp,%rsi,8),%r14 331 xorq 1(%rbp,%rdi,8),%r15 332 movb %al,%cl 333 movb %ah,%dl 334 leaq (%rcx,%rcx,1),%rsi 335 leaq (%rdx,%rdx,1),%rdi 336 shrl $16,%eax 337 xorq 0(%rbp,%rsi,8),%r9 338 xorq 7(%rbp,%rdi,8),%r10 339 movb %al,%cl 340 movb %ah,%dl 341 movl 64+8+8(%rsp),%eax 342 leaq (%rcx,%rcx,1),%rsi 343 leaq (%rdx,%rdx,1),%rdi 344 xorq 6(%rbp,%rsi,8),%r11 345 xorq 5(%rbp,%rdi,8),%r12 346 movb %bl,%cl 347 movb %bh,%dl 348 leaq (%rcx,%rcx,1),%rsi 349 leaq (%rdx,%rdx,1),%rdi 350 shrl $16,%ebx 351 xorq 4(%rbp,%rsi,8),%r13 352 xorq 3(%rbp,%rdi,8),%r14 353 movb %bl,%cl 354 movb %bh,%dl 355 movl 64+8+8+4(%rsp),%ebx 356 leaq (%rcx,%rcx,1),%rsi 357 leaq (%rdx,%rdx,1),%rdi 358 xorq 2(%rbp,%rsi,8),%r15 359 xorq 1(%rbp,%rdi,8),%r8 360 movb %al,%cl 361 movb %ah,%dl 362 leaq (%rcx,%rcx,1),%rsi 363 leaq (%rdx,%rdx,1),%rdi 364 shrl $16,%eax 365 xorq 0(%rbp,%rsi,8),%r10 366 xorq 7(%rbp,%rdi,8),%r11 367 movb %al,%cl 368 movb %ah,%dl 369 movl 64+16+8(%rsp),%eax 370 leaq (%rcx,%rcx,1),%rsi 371 leaq (%rdx,%rdx,1),%rdi 372 xorq 6(%rbp,%rsi,8),%r12 373 xorq 5(%rbp,%rdi,8),%r13 374 movb %bl,%cl 375 movb %bh,%dl 376 leaq (%rcx,%rcx,1),%rsi 377 leaq (%rdx,%rdx,1),%rdi 378 shrl $16,%ebx 379 xorq 4(%rbp,%rsi,8),%r14 380 xorq 3(%rbp,%rdi,8),%r15 381 movb %bl,%cl 382 movb %bh,%dl 383 movl 64+16+8+4(%rsp),%ebx 384 leaq (%rcx,%rcx,1),%rsi 385 leaq (%rdx,%rdx,1),%rdi 386 xorq 2(%rbp,%rsi,8),%r8 387 xorq 1(%rbp,%rdi,8),%r9 388 movb %al,%cl 389 movb %ah,%dl 390 leaq (%rcx,%rcx,1),%rsi 391 leaq (%rdx,%rdx,1),%rdi 392 shrl $16,%eax 393 xorq 0(%rbp,%rsi,8),%r11 394 xorq 7(%rbp,%rdi,8),%r12 395 movb %al,%cl 396 movb %ah,%dl 397 movl 64+24+8(%rsp),%eax 398 leaq (%rcx,%rcx,1),%rsi 399 leaq (%rdx,%rdx,1),%rdi 400 xorq 6(%rbp,%rsi,8),%r13 401 xorq 5(%rbp,%rdi,8),%r14 402 movb %bl,%cl 403 movb %bh,%dl 404 leaq (%rcx,%rcx,1),%rsi 405 leaq (%rdx,%rdx,1),%rdi 406 shrl $16,%ebx 407 xorq 4(%rbp,%rsi,8),%r15 408 xorq 3(%rbp,%rdi,8),%r8 409 movb %bl,%cl 410 movb %bh,%dl 411 movl 64+24+8+4(%rsp),%ebx 412 leaq (%rcx,%rcx,1),%rsi 413 leaq (%rdx,%rdx,1),%rdi 414 xorq 2(%rbp,%rsi,8),%r9 415 xorq 1(%rbp,%rdi,8),%r10 416 movb %al,%cl 417 movb %ah,%dl 418 leaq (%rcx,%rcx,1),%rsi 419 leaq (%rdx,%rdx,1),%rdi 420 shrl $16,%eax 421 xorq 0(%rbp,%rsi,8),%r12 422 xorq 7(%rbp,%rdi,8),%r13 423 movb %al,%cl 424 movb %ah,%dl 425 movl 64+32+8(%rsp),%eax 426 leaq (%rcx,%rcx,1),%rsi 427 leaq (%rdx,%rdx,1),%rdi 428 xorq 6(%rbp,%rsi,8),%r14 429 xorq 5(%rbp,%rdi,8),%r15 430 movb %bl,%cl 431 movb %bh,%dl 432 leaq (%rcx,%rcx,1),%rsi 433 leaq (%rdx,%rdx,1),%rdi 434 shrl $16,%ebx 435 xorq 4(%rbp,%rsi,8),%r8 436 xorq 3(%rbp,%rdi,8),%r9 437 movb %bl,%cl 438 movb %bh,%dl 439 movl 64+32+8+4(%rsp),%ebx 440 leaq (%rcx,%rcx,1),%rsi 441 leaq (%rdx,%rdx,1),%rdi 442 xorq 2(%rbp,%rsi,8),%r10 443 xorq 1(%rbp,%rdi,8),%r11 444 movb %al,%cl 445 movb %ah,%dl 446 leaq (%rcx,%rcx,1),%rsi 447 leaq (%rdx,%rdx,1),%rdi 448 shrl $16,%eax 449 xorq 0(%rbp,%rsi,8),%r13 450 xorq 7(%rbp,%rdi,8),%r14 451 movb %al,%cl 452 movb %ah,%dl 453 movl 64+40+8(%rsp),%eax 454 leaq (%rcx,%rcx,1),%rsi 455 leaq (%rdx,%rdx,1),%rdi 456 xorq 6(%rbp,%rsi,8),%r15 457 xorq 5(%rbp,%rdi,8),%r8 458 movb %bl,%cl 459 movb %bh,%dl 460 leaq (%rcx,%rcx,1),%rsi 461 leaq (%rdx,%rdx,1),%rdi 462 shrl $16,%ebx 463 xorq 4(%rbp,%rsi,8),%r9 464 xorq 3(%rbp,%rdi,8),%r10 465 movb %bl,%cl 466 movb %bh,%dl 467 movl 64+40+8+4(%rsp),%ebx 468 leaq (%rcx,%rcx,1),%rsi 469 leaq (%rdx,%rdx,1),%rdi 470 xorq 2(%rbp,%rsi,8),%r11 471 xorq 1(%rbp,%rdi,8),%r12 472 movb %al,%cl 473 movb %ah,%dl 474 leaq (%rcx,%rcx,1),%rsi 475 leaq (%rdx,%rdx,1),%rdi 476 shrl $16,%eax 477 xorq 0(%rbp,%rsi,8),%r14 478 xorq 7(%rbp,%rdi,8),%r15 479 movb %al,%cl 480 movb %ah,%dl 481 movl 64+48+8(%rsp),%eax 482 leaq (%rcx,%rcx,1),%rsi 483 leaq (%rdx,%rdx,1),%rdi 484 xorq 6(%rbp,%rsi,8),%r8 485 xorq 5(%rbp,%rdi,8),%r9 486 movb %bl,%cl 487 movb %bh,%dl 488 leaq (%rcx,%rcx,1),%rsi 489 leaq (%rdx,%rdx,1),%rdi 490 shrl $16,%ebx 491 xorq 4(%rbp,%rsi,8),%r10 492 xorq 3(%rbp,%rdi,8),%r11 493 movb %bl,%cl 494 movb %bh,%dl 495 movl 64+48+8+4(%rsp),%ebx 496 leaq (%rcx,%rcx,1),%rsi 497 leaq (%rdx,%rdx,1),%rdi 498 xorq 2(%rbp,%rsi,8),%r12 499 xorq 1(%rbp,%rdi,8),%r13 500 movb %al,%cl 501 movb %ah,%dl 502 leaq (%rcx,%rcx,1),%rsi 503 leaq (%rdx,%rdx,1),%rdi 504 shrl $16,%eax 505 xorq 0(%rbp,%rsi,8),%r15 506 xorq 7(%rbp,%rdi,8),%r8 507 movb %al,%cl 508 movb %ah,%dl 509 510 leaq (%rcx,%rcx,1),%rsi 511 leaq (%rdx,%rdx,1),%rdi 512 xorq 6(%rbp,%rsi,8),%r9 513 xorq 5(%rbp,%rdi,8),%r10 514 movb %bl,%cl 515 movb %bh,%dl 516 leaq (%rcx,%rcx,1),%rsi 517 leaq (%rdx,%rdx,1),%rdi 518 shrl $16,%ebx 519 xorq 4(%rbp,%rsi,8),%r11 520 xorq 3(%rbp,%rdi,8),%r12 521 movb %bl,%cl 522 movb %bh,%dl 523 524 leaq (%rcx,%rcx,1),%rsi 525 leaq (%rdx,%rdx,1),%rdi 526 xorq 2(%rbp,%rsi,8),%r13 527 xorq 1(%rbp,%rdi,8),%r14 528 leaq 128(%rsp),%rbx 529 movq 24(%rbx),%rsi 530 addq $1,%rsi 531 cmpq $10,%rsi 532 je .Lroundsdone 533 534 movq %rsi,24(%rbx) 535 movq %r8,64+0(%rsp) 536 movq %r9,64+8(%rsp) 537 movq %r10,64+16(%rsp) 538 movq %r11,64+24(%rsp) 539 movq %r12,64+32(%rsp) 540 movq %r13,64+40(%rsp) 541 movq %r14,64+48(%rsp) 542 movq %r15,64+56(%rsp) 543 jmp .Lround 544.align 16 545.Lroundsdone: 546 movq 0(%rbx),%rdi 547 movq 8(%rbx),%rsi 548 movq 16(%rbx),%rax 549 xorq 0(%rsi),%r8 550 xorq 8(%rsi),%r9 551 xorq 16(%rsi),%r10 552 xorq 24(%rsi),%r11 553 xorq 32(%rsi),%r12 554 xorq 40(%rsi),%r13 555 xorq 48(%rsi),%r14 556 xorq 56(%rsi),%r15 557 xorq 0(%rdi),%r8 558 xorq 8(%rdi),%r9 559 xorq 16(%rdi),%r10 560 xorq 24(%rdi),%r11 561 xorq 32(%rdi),%r12 562 xorq 40(%rdi),%r13 563 xorq 48(%rdi),%r14 564 xorq 56(%rdi),%r15 565 movq %r8,0(%rdi) 566 movq %r9,8(%rdi) 567 movq %r10,16(%rdi) 568 movq %r11,24(%rdi) 569 movq %r12,32(%rdi) 570 movq %r13,40(%rdi) 571 movq %r14,48(%rdi) 572 movq %r15,56(%rdi) 573 leaq 64(%rsi),%rsi 574 subq $1,%rax 575 jz .Lalldone 576 movq %rsi,8(%rbx) 577 movq %rax,16(%rbx) 578 jmp .Louterloop 579.Lalldone: 580 movq 32(%rbx),%rsi 581 movq (%rsi),%r15 582 movq 8(%rsi),%r14 583 movq 16(%rsi),%r13 584 movq 24(%rsi),%r12 585 movq 32(%rsi),%rbp 586 movq 40(%rsi),%rbx 587 leaq 48(%rsi),%rsp 588.Lepilogue: 589 .byte 0xf3,0xc3 590.size whirlpool_block,.-whirlpool_block 591 592.align 64 593.type .Ltable,@object 594.Ltable: 595.byte 24,24,96,24,192,120,48,216,24,24,96,24,192,120,48,216 596.byte 35,35,140,35,5,175,70,38,35,35,140,35,5,175,70,38 597.byte 198,198,63,198,126,249,145,184,198,198,63,198,126,249,145,184 598.byte 232,232,135,232,19,111,205,251,232,232,135,232,19,111,205,251 599.byte 135,135,38,135,76,161,19,203,135,135,38,135,76,161,19,203 600.byte 184,184,218,184,169,98,109,17,184,184,218,184,169,98,109,17 601.byte 1,1,4,1,8,5,2,9,1,1,4,1,8,5,2,9 602.byte 79,79,33,79,66,110,158,13,79,79,33,79,66,110,158,13 603.byte 54,54,216,54,173,238,108,155,54,54,216,54,173,238,108,155 604.byte 166,166,162,166,89,4,81,255,166,166,162,166,89,4,81,255 605.byte 210,210,111,210,222,189,185,12,210,210,111,210,222,189,185,12 606.byte 245,245,243,245,251,6,247,14,245,245,243,245,251,6,247,14 607.byte 121,121,249,121,239,128,242,150,121,121,249,121,239,128,242,150 608.byte 111,111,161,111,95,206,222,48,111,111,161,111,95,206,222,48 609.byte 145,145,126,145,252,239,63,109,145,145,126,145,252,239,63,109 610.byte 82,82,85,82,170,7,164,248,82,82,85,82,170,7,164,248 611.byte 96,96,157,96,39,253,192,71,96,96,157,96,39,253,192,71 612.byte 188,188,202,188,137,118,101,53,188,188,202,188,137,118,101,53 613.byte 155,155,86,155,172,205,43,55,155,155,86,155,172,205,43,55 614.byte 142,142,2,142,4,140,1,138,142,142,2,142,4,140,1,138 615.byte 163,163,182,163,113,21,91,210,163,163,182,163,113,21,91,210 616.byte 12,12,48,12,96,60,24,108,12,12,48,12,96,60,24,108 617.byte 123,123,241,123,255,138,246,132,123,123,241,123,255,138,246,132 618.byte 53,53,212,53,181,225,106,128,53,53,212,53,181,225,106,128 619.byte 29,29,116,29,232,105,58,245,29,29,116,29,232,105,58,245 620.byte 224,224,167,224,83,71,221,179,224,224,167,224,83,71,221,179 621.byte 215,215,123,215,246,172,179,33,215,215,123,215,246,172,179,33 622.byte 194,194,47,194,94,237,153,156,194,194,47,194,94,237,153,156 623.byte 46,46,184,46,109,150,92,67,46,46,184,46,109,150,92,67 624.byte 75,75,49,75,98,122,150,41,75,75,49,75,98,122,150,41 625.byte 254,254,223,254,163,33,225,93,254,254,223,254,163,33,225,93 626.byte 87,87,65,87,130,22,174,213,87,87,65,87,130,22,174,213 627.byte 21,21,84,21,168,65,42,189,21,21,84,21,168,65,42,189 628.byte 119,119,193,119,159,182,238,232,119,119,193,119,159,182,238,232 629.byte 55,55,220,55,165,235,110,146,55,55,220,55,165,235,110,146 630.byte 229,229,179,229,123,86,215,158,229,229,179,229,123,86,215,158 631.byte 159,159,70,159,140,217,35,19,159,159,70,159,140,217,35,19 632.byte 240,240,231,240,211,23,253,35,240,240,231,240,211,23,253,35 633.byte 74,74,53,74,106,127,148,32,74,74,53,74,106,127,148,32 634.byte 218,218,79,218,158,149,169,68,218,218,79,218,158,149,169,68 635.byte 88,88,125,88,250,37,176,162,88,88,125,88,250,37,176,162 636.byte 201,201,3,201,6,202,143,207,201,201,3,201,6,202,143,207 637.byte 41,41,164,41,85,141,82,124,41,41,164,41,85,141,82,124 638.byte 10,10,40,10,80,34,20,90,10,10,40,10,80,34,20,90 639.byte 177,177,254,177,225,79,127,80,177,177,254,177,225,79,127,80 640.byte 160,160,186,160,105,26,93,201,160,160,186,160,105,26,93,201 641.byte 107,107,177,107,127,218,214,20,107,107,177,107,127,218,214,20 642.byte 133,133,46,133,92,171,23,217,133,133,46,133,92,171,23,217 643.byte 189,189,206,189,129,115,103,60,189,189,206,189,129,115,103,60 644.byte 93,93,105,93,210,52,186,143,93,93,105,93,210,52,186,143 645.byte 16,16,64,16,128,80,32,144,16,16,64,16,128,80,32,144 646.byte 244,244,247,244,243,3,245,7,244,244,247,244,243,3,245,7 647.byte 203,203,11,203,22,192,139,221,203,203,11,203,22,192,139,221 648.byte 62,62,248,62,237,198,124,211,62,62,248,62,237,198,124,211 649.byte 5,5,20,5,40,17,10,45,5,5,20,5,40,17,10,45 650.byte 103,103,129,103,31,230,206,120,103,103,129,103,31,230,206,120 651.byte 228,228,183,228,115,83,213,151,228,228,183,228,115,83,213,151 652.byte 39,39,156,39,37,187,78,2,39,39,156,39,37,187,78,2 653.byte 65,65,25,65,50,88,130,115,65,65,25,65,50,88,130,115 654.byte 139,139,22,139,44,157,11,167,139,139,22,139,44,157,11,167 655.byte 167,167,166,167,81,1,83,246,167,167,166,167,81,1,83,246 656.byte 125,125,233,125,207,148,250,178,125,125,233,125,207,148,250,178 657.byte 149,149,110,149,220,251,55,73,149,149,110,149,220,251,55,73 658.byte 216,216,71,216,142,159,173,86,216,216,71,216,142,159,173,86 659.byte 251,251,203,251,139,48,235,112,251,251,203,251,139,48,235,112 660.byte 238,238,159,238,35,113,193,205,238,238,159,238,35,113,193,205 661.byte 124,124,237,124,199,145,248,187,124,124,237,124,199,145,248,187 662.byte 102,102,133,102,23,227,204,113,102,102,133,102,23,227,204,113 663.byte 221,221,83,221,166,142,167,123,221,221,83,221,166,142,167,123 664.byte 23,23,92,23,184,75,46,175,23,23,92,23,184,75,46,175 665.byte 71,71,1,71,2,70,142,69,71,71,1,71,2,70,142,69 666.byte 158,158,66,158,132,220,33,26,158,158,66,158,132,220,33,26 667.byte 202,202,15,202,30,197,137,212,202,202,15,202,30,197,137,212 668.byte 45,45,180,45,117,153,90,88,45,45,180,45,117,153,90,88 669.byte 191,191,198,191,145,121,99,46,191,191,198,191,145,121,99,46 670.byte 7,7,28,7,56,27,14,63,7,7,28,7,56,27,14,63 671.byte 173,173,142,173,1,35,71,172,173,173,142,173,1,35,71,172 672.byte 90,90,117,90,234,47,180,176,90,90,117,90,234,47,180,176 673.byte 131,131,54,131,108,181,27,239,131,131,54,131,108,181,27,239 674.byte 51,51,204,51,133,255,102,182,51,51,204,51,133,255,102,182 675.byte 99,99,145,99,63,242,198,92,99,99,145,99,63,242,198,92 676.byte 2,2,8,2,16,10,4,18,2,2,8,2,16,10,4,18 677.byte 170,170,146,170,57,56,73,147,170,170,146,170,57,56,73,147 678.byte 113,113,217,113,175,168,226,222,113,113,217,113,175,168,226,222 679.byte 200,200,7,200,14,207,141,198,200,200,7,200,14,207,141,198 680.byte 25,25,100,25,200,125,50,209,25,25,100,25,200,125,50,209 681.byte 73,73,57,73,114,112,146,59,73,73,57,73,114,112,146,59 682.byte 217,217,67,217,134,154,175,95,217,217,67,217,134,154,175,95 683.byte 242,242,239,242,195,29,249,49,242,242,239,242,195,29,249,49 684.byte 227,227,171,227,75,72,219,168,227,227,171,227,75,72,219,168 685.byte 91,91,113,91,226,42,182,185,91,91,113,91,226,42,182,185 686.byte 136,136,26,136,52,146,13,188,136,136,26,136,52,146,13,188 687.byte 154,154,82,154,164,200,41,62,154,154,82,154,164,200,41,62 688.byte 38,38,152,38,45,190,76,11,38,38,152,38,45,190,76,11 689.byte 50,50,200,50,141,250,100,191,50,50,200,50,141,250,100,191 690.byte 176,176,250,176,233,74,125,89,176,176,250,176,233,74,125,89 691.byte 233,233,131,233,27,106,207,242,233,233,131,233,27,106,207,242 692.byte 15,15,60,15,120,51,30,119,15,15,60,15,120,51,30,119 693.byte 213,213,115,213,230,166,183,51,213,213,115,213,230,166,183,51 694.byte 128,128,58,128,116,186,29,244,128,128,58,128,116,186,29,244 695.byte 190,190,194,190,153,124,97,39,190,190,194,190,153,124,97,39 696.byte 205,205,19,205,38,222,135,235,205,205,19,205,38,222,135,235 697.byte 52,52,208,52,189,228,104,137,52,52,208,52,189,228,104,137 698.byte 72,72,61,72,122,117,144,50,72,72,61,72,122,117,144,50 699.byte 255,255,219,255,171,36,227,84,255,255,219,255,171,36,227,84 700.byte 122,122,245,122,247,143,244,141,122,122,245,122,247,143,244,141 701.byte 144,144,122,144,244,234,61,100,144,144,122,144,244,234,61,100 702.byte 95,95,97,95,194,62,190,157,95,95,97,95,194,62,190,157 703.byte 32,32,128,32,29,160,64,61,32,32,128,32,29,160,64,61 704.byte 104,104,189,104,103,213,208,15,104,104,189,104,103,213,208,15 705.byte 26,26,104,26,208,114,52,202,26,26,104,26,208,114,52,202 706.byte 174,174,130,174,25,44,65,183,174,174,130,174,25,44,65,183 707.byte 180,180,234,180,201,94,117,125,180,180,234,180,201,94,117,125 708.byte 84,84,77,84,154,25,168,206,84,84,77,84,154,25,168,206 709.byte 147,147,118,147,236,229,59,127,147,147,118,147,236,229,59,127 710.byte 34,34,136,34,13,170,68,47,34,34,136,34,13,170,68,47 711.byte 100,100,141,100,7,233,200,99,100,100,141,100,7,233,200,99 712.byte 241,241,227,241,219,18,255,42,241,241,227,241,219,18,255,42 713.byte 115,115,209,115,191,162,230,204,115,115,209,115,191,162,230,204 714.byte 18,18,72,18,144,90,36,130,18,18,72,18,144,90,36,130 715.byte 64,64,29,64,58,93,128,122,64,64,29,64,58,93,128,122 716.byte 8,8,32,8,64,40,16,72,8,8,32,8,64,40,16,72 717.byte 195,195,43,195,86,232,155,149,195,195,43,195,86,232,155,149 718.byte 236,236,151,236,51,123,197,223,236,236,151,236,51,123,197,223 719.byte 219,219,75,219,150,144,171,77,219,219,75,219,150,144,171,77 720.byte 161,161,190,161,97,31,95,192,161,161,190,161,97,31,95,192 721.byte 141,141,14,141,28,131,7,145,141,141,14,141,28,131,7,145 722.byte 61,61,244,61,245,201,122,200,61,61,244,61,245,201,122,200 723.byte 151,151,102,151,204,241,51,91,151,151,102,151,204,241,51,91 724.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 725.byte 207,207,27,207,54,212,131,249,207,207,27,207,54,212,131,249 726.byte 43,43,172,43,69,135,86,110,43,43,172,43,69,135,86,110 727.byte 118,118,197,118,151,179,236,225,118,118,197,118,151,179,236,225 728.byte 130,130,50,130,100,176,25,230,130,130,50,130,100,176,25,230 729.byte 214,214,127,214,254,169,177,40,214,214,127,214,254,169,177,40 730.byte 27,27,108,27,216,119,54,195,27,27,108,27,216,119,54,195 731.byte 181,181,238,181,193,91,119,116,181,181,238,181,193,91,119,116 732.byte 175,175,134,175,17,41,67,190,175,175,134,175,17,41,67,190 733.byte 106,106,181,106,119,223,212,29,106,106,181,106,119,223,212,29 734.byte 80,80,93,80,186,13,160,234,80,80,93,80,186,13,160,234 735.byte 69,69,9,69,18,76,138,87,69,69,9,69,18,76,138,87 736.byte 243,243,235,243,203,24,251,56,243,243,235,243,203,24,251,56 737.byte 48,48,192,48,157,240,96,173,48,48,192,48,157,240,96,173 738.byte 239,239,155,239,43,116,195,196,239,239,155,239,43,116,195,196 739.byte 63,63,252,63,229,195,126,218,63,63,252,63,229,195,126,218 740.byte 85,85,73,85,146,28,170,199,85,85,73,85,146,28,170,199 741.byte 162,162,178,162,121,16,89,219,162,162,178,162,121,16,89,219 742.byte 234,234,143,234,3,101,201,233,234,234,143,234,3,101,201,233 743.byte 101,101,137,101,15,236,202,106,101,101,137,101,15,236,202,106 744.byte 186,186,210,186,185,104,105,3,186,186,210,186,185,104,105,3 745.byte 47,47,188,47,101,147,94,74,47,47,188,47,101,147,94,74 746.byte 192,192,39,192,78,231,157,142,192,192,39,192,78,231,157,142 747.byte 222,222,95,222,190,129,161,96,222,222,95,222,190,129,161,96 748.byte 28,28,112,28,224,108,56,252,28,28,112,28,224,108,56,252 749.byte 253,253,211,253,187,46,231,70,253,253,211,253,187,46,231,70 750.byte 77,77,41,77,82,100,154,31,77,77,41,77,82,100,154,31 751.byte 146,146,114,146,228,224,57,118,146,146,114,146,228,224,57,118 752.byte 117,117,201,117,143,188,234,250,117,117,201,117,143,188,234,250 753.byte 6,6,24,6,48,30,12,54,6,6,24,6,48,30,12,54 754.byte 138,138,18,138,36,152,9,174,138,138,18,138,36,152,9,174 755.byte 178,178,242,178,249,64,121,75,178,178,242,178,249,64,121,75 756.byte 230,230,191,230,99,89,209,133,230,230,191,230,99,89,209,133 757.byte 14,14,56,14,112,54,28,126,14,14,56,14,112,54,28,126 758.byte 31,31,124,31,248,99,62,231,31,31,124,31,248,99,62,231 759.byte 98,98,149,98,55,247,196,85,98,98,149,98,55,247,196,85 760.byte 212,212,119,212,238,163,181,58,212,212,119,212,238,163,181,58 761.byte 168,168,154,168,41,50,77,129,168,168,154,168,41,50,77,129 762.byte 150,150,98,150,196,244,49,82,150,150,98,150,196,244,49,82 763.byte 249,249,195,249,155,58,239,98,249,249,195,249,155,58,239,98 764.byte 197,197,51,197,102,246,151,163,197,197,51,197,102,246,151,163 765.byte 37,37,148,37,53,177,74,16,37,37,148,37,53,177,74,16 766.byte 89,89,121,89,242,32,178,171,89,89,121,89,242,32,178,171 767.byte 132,132,42,132,84,174,21,208,132,132,42,132,84,174,21,208 768.byte 114,114,213,114,183,167,228,197,114,114,213,114,183,167,228,197 769.byte 57,57,228,57,213,221,114,236,57,57,228,57,213,221,114,236 770.byte 76,76,45,76,90,97,152,22,76,76,45,76,90,97,152,22 771.byte 94,94,101,94,202,59,188,148,94,94,101,94,202,59,188,148 772.byte 120,120,253,120,231,133,240,159,120,120,253,120,231,133,240,159 773.byte 56,56,224,56,221,216,112,229,56,56,224,56,221,216,112,229 774.byte 140,140,10,140,20,134,5,152,140,140,10,140,20,134,5,152 775.byte 209,209,99,209,198,178,191,23,209,209,99,209,198,178,191,23 776.byte 165,165,174,165,65,11,87,228,165,165,174,165,65,11,87,228 777.byte 226,226,175,226,67,77,217,161,226,226,175,226,67,77,217,161 778.byte 97,97,153,97,47,248,194,78,97,97,153,97,47,248,194,78 779.byte 179,179,246,179,241,69,123,66,179,179,246,179,241,69,123,66 780.byte 33,33,132,33,21,165,66,52,33,33,132,33,21,165,66,52 781.byte 156,156,74,156,148,214,37,8,156,156,74,156,148,214,37,8 782.byte 30,30,120,30,240,102,60,238,30,30,120,30,240,102,60,238 783.byte 67,67,17,67,34,82,134,97,67,67,17,67,34,82,134,97 784.byte 199,199,59,199,118,252,147,177,199,199,59,199,118,252,147,177 785.byte 252,252,215,252,179,43,229,79,252,252,215,252,179,43,229,79 786.byte 4,4,16,4,32,20,8,36,4,4,16,4,32,20,8,36 787.byte 81,81,89,81,178,8,162,227,81,81,89,81,178,8,162,227 788.byte 153,153,94,153,188,199,47,37,153,153,94,153,188,199,47,37 789.byte 109,109,169,109,79,196,218,34,109,109,169,109,79,196,218,34 790.byte 13,13,52,13,104,57,26,101,13,13,52,13,104,57,26,101 791.byte 250,250,207,250,131,53,233,121,250,250,207,250,131,53,233,121 792.byte 223,223,91,223,182,132,163,105,223,223,91,223,182,132,163,105 793.byte 126,126,229,126,215,155,252,169,126,126,229,126,215,155,252,169 794.byte 36,36,144,36,61,180,72,25,36,36,144,36,61,180,72,25 795.byte 59,59,236,59,197,215,118,254,59,59,236,59,197,215,118,254 796.byte 171,171,150,171,49,61,75,154,171,171,150,171,49,61,75,154 797.byte 206,206,31,206,62,209,129,240,206,206,31,206,62,209,129,240 798.byte 17,17,68,17,136,85,34,153,17,17,68,17,136,85,34,153 799.byte 143,143,6,143,12,137,3,131,143,143,6,143,12,137,3,131 800.byte 78,78,37,78,74,107,156,4,78,78,37,78,74,107,156,4 801.byte 183,183,230,183,209,81,115,102,183,183,230,183,209,81,115,102 802.byte 235,235,139,235,11,96,203,224,235,235,139,235,11,96,203,224 803.byte 60,60,240,60,253,204,120,193,60,60,240,60,253,204,120,193 804.byte 129,129,62,129,124,191,31,253,129,129,62,129,124,191,31,253 805.byte 148,148,106,148,212,254,53,64,148,148,106,148,212,254,53,64 806.byte 247,247,251,247,235,12,243,28,247,247,251,247,235,12,243,28 807.byte 185,185,222,185,161,103,111,24,185,185,222,185,161,103,111,24 808.byte 19,19,76,19,152,95,38,139,19,19,76,19,152,95,38,139 809.byte 44,44,176,44,125,156,88,81,44,44,176,44,125,156,88,81 810.byte 211,211,107,211,214,184,187,5,211,211,107,211,214,184,187,5 811.byte 231,231,187,231,107,92,211,140,231,231,187,231,107,92,211,140 812.byte 110,110,165,110,87,203,220,57,110,110,165,110,87,203,220,57 813.byte 196,196,55,196,110,243,149,170,196,196,55,196,110,243,149,170 814.byte 3,3,12,3,24,15,6,27,3,3,12,3,24,15,6,27 815.byte 86,86,69,86,138,19,172,220,86,86,69,86,138,19,172,220 816.byte 68,68,13,68,26,73,136,94,68,68,13,68,26,73,136,94 817.byte 127,127,225,127,223,158,254,160,127,127,225,127,223,158,254,160 818.byte 169,169,158,169,33,55,79,136,169,169,158,169,33,55,79,136 819.byte 42,42,168,42,77,130,84,103,42,42,168,42,77,130,84,103 820.byte 187,187,214,187,177,109,107,10,187,187,214,187,177,109,107,10 821.byte 193,193,35,193,70,226,159,135,193,193,35,193,70,226,159,135 822.byte 83,83,81,83,162,2,166,241,83,83,81,83,162,2,166,241 823.byte 220,220,87,220,174,139,165,114,220,220,87,220,174,139,165,114 824.byte 11,11,44,11,88,39,22,83,11,11,44,11,88,39,22,83 825.byte 157,157,78,157,156,211,39,1,157,157,78,157,156,211,39,1 826.byte 108,108,173,108,71,193,216,43,108,108,173,108,71,193,216,43 827.byte 49,49,196,49,149,245,98,164,49,49,196,49,149,245,98,164 828.byte 116,116,205,116,135,185,232,243,116,116,205,116,135,185,232,243 829.byte 246,246,255,246,227,9,241,21,246,246,255,246,227,9,241,21 830.byte 70,70,5,70,10,67,140,76,70,70,5,70,10,67,140,76 831.byte 172,172,138,172,9,38,69,165,172,172,138,172,9,38,69,165 832.byte 137,137,30,137,60,151,15,181,137,137,30,137,60,151,15,181 833.byte 20,20,80,20,160,68,40,180,20,20,80,20,160,68,40,180 834.byte 225,225,163,225,91,66,223,186,225,225,163,225,91,66,223,186 835.byte 22,22,88,22,176,78,44,166,22,22,88,22,176,78,44,166 836.byte 58,58,232,58,205,210,116,247,58,58,232,58,205,210,116,247 837.byte 105,105,185,105,111,208,210,6,105,105,185,105,111,208,210,6 838.byte 9,9,36,9,72,45,18,65,9,9,36,9,72,45,18,65 839.byte 112,112,221,112,167,173,224,215,112,112,221,112,167,173,224,215 840.byte 182,182,226,182,217,84,113,111,182,182,226,182,217,84,113,111 841.byte 208,208,103,208,206,183,189,30,208,208,103,208,206,183,189,30 842.byte 237,237,147,237,59,126,199,214,237,237,147,237,59,126,199,214 843.byte 204,204,23,204,46,219,133,226,204,204,23,204,46,219,133,226 844.byte 66,66,21,66,42,87,132,104,66,66,21,66,42,87,132,104 845.byte 152,152,90,152,180,194,45,44,152,152,90,152,180,194,45,44 846.byte 164,164,170,164,73,14,85,237,164,164,170,164,73,14,85,237 847.byte 40,40,160,40,93,136,80,117,40,40,160,40,93,136,80,117 848.byte 92,92,109,92,218,49,184,134,92,92,109,92,218,49,184,134 849.byte 248,248,199,248,147,63,237,107,248,248,199,248,147,63,237,107 850.byte 134,134,34,134,68,164,17,194,134,134,34,134,68,164,17,194 851.byte 24,35,198,232,135,184,1,79 852.byte 54,166,210,245,121,111,145,82 853.byte 96,188,155,142,163,12,123,53 854.byte 29,224,215,194,46,75,254,87 855.byte 21,119,55,229,159,240,74,218 856.byte 88,201,41,10,177,160,107,133 857.byte 189,93,16,244,203,62,5,103 858.byte 228,39,65,139,167,125,149,216 859.byte 251,238,124,102,221,23,71,158 860.byte 202,45,191,7,173,90,131,51 861