1/* $FreeBSD$ */ 2/* Do not modify. This file is auto-generated from keccak1600-x86_64.pl. */ 3.text 4 5.type __KeccakF1600,@function 6.align 32 7__KeccakF1600: 8.cfi_startproc 9 movq 60(%rdi),%rax 10 movq 68(%rdi),%rbx 11 movq 76(%rdi),%rcx 12 movq 84(%rdi),%rdx 13 movq 92(%rdi),%rbp 14 jmp .Loop 15 16.align 32 17.Loop: 18 movq -100(%rdi),%r8 19 movq -52(%rdi),%r9 20 movq -4(%rdi),%r10 21 movq 44(%rdi),%r11 22 23 xorq -84(%rdi),%rcx 24 xorq -76(%rdi),%rdx 25 xorq %r8,%rax 26 xorq -92(%rdi),%rbx 27 xorq -44(%rdi),%rcx 28 xorq -60(%rdi),%rax 29 movq %rbp,%r12 30 xorq -68(%rdi),%rbp 31 32 xorq %r10,%rcx 33 xorq -20(%rdi),%rax 34 xorq -36(%rdi),%rdx 35 xorq %r9,%rbx 36 xorq -28(%rdi),%rbp 37 38 xorq 36(%rdi),%rcx 39 xorq 20(%rdi),%rax 40 xorq 4(%rdi),%rdx 41 xorq -12(%rdi),%rbx 42 xorq 12(%rdi),%rbp 43 44 movq %rcx,%r13 45 rolq $1,%rcx 46 xorq %rax,%rcx 47 xorq %r11,%rdx 48 49 rolq $1,%rax 50 xorq %rdx,%rax 51 xorq 28(%rdi),%rbx 52 53 rolq $1,%rdx 54 xorq %rbx,%rdx 55 xorq 52(%rdi),%rbp 56 57 rolq $1,%rbx 58 xorq %rbp,%rbx 59 60 rolq $1,%rbp 61 xorq %r13,%rbp 62 xorq %rcx,%r9 63 xorq %rdx,%r10 64 rolq $44,%r9 65 xorq %rbp,%r11 66 xorq %rax,%r12 67 rolq $43,%r10 68 xorq %rbx,%r8 69 movq %r9,%r13 70 rolq $21,%r11 71 orq %r10,%r9 72 xorq %r8,%r9 73 rolq $14,%r12 74 75 xorq (%r15),%r9 76 leaq 8(%r15),%r15 77 78 movq %r12,%r14 79 andq %r11,%r12 80 movq %r9,-100(%rsi) 81 xorq %r10,%r12 82 notq %r10 83 movq %r12,-84(%rsi) 84 85 orq %r11,%r10 86 movq 76(%rdi),%r12 87 xorq %r13,%r10 88 movq %r10,-92(%rsi) 89 90 andq %r8,%r13 91 movq -28(%rdi),%r9 92 xorq %r14,%r13 93 movq -20(%rdi),%r10 94 movq %r13,-68(%rsi) 95 96 orq %r8,%r14 97 movq -76(%rdi),%r8 98 xorq %r11,%r14 99 movq 28(%rdi),%r11 100 movq %r14,-76(%rsi) 101 102 103 xorq %rbp,%r8 104 xorq %rdx,%r12 105 rolq $28,%r8 106 xorq %rcx,%r11 107 xorq %rax,%r9 108 rolq $61,%r12 109 rolq $45,%r11 110 xorq %rbx,%r10 111 rolq $20,%r9 112 movq %r8,%r13 113 orq %r12,%r8 114 rolq $3,%r10 115 116 xorq %r11,%r8 117 movq %r8,-36(%rsi) 118 119 movq %r9,%r14 120 andq %r13,%r9 121 movq -92(%rdi),%r8 122 xorq %r12,%r9 123 notq %r12 124 movq %r9,-28(%rsi) 125 126 orq %r11,%r12 127 movq -44(%rdi),%r9 128 xorq %r10,%r12 129 movq %r12,-44(%rsi) 130 131 andq %r10,%r11 132 movq 60(%rdi),%r12 133 xorq %r14,%r11 134 movq %r11,-52(%rsi) 135 136 orq %r10,%r14 137 movq 4(%rdi),%r10 138 xorq %r13,%r14 139 movq 52(%rdi),%r11 140 movq %r14,-60(%rsi) 141 142 143 xorq %rbp,%r10 144 xorq %rax,%r11 145 rolq $25,%r10 146 xorq %rdx,%r9 147 rolq $8,%r11 148 xorq %rbx,%r12 149 rolq $6,%r9 150 xorq %rcx,%r8 151 rolq $18,%r12 152 movq %r10,%r13 153 andq %r11,%r10 154 rolq $1,%r8 155 156 notq %r11 157 xorq %r9,%r10 158 movq %r10,-12(%rsi) 159 160 movq %r12,%r14 161 andq %r11,%r12 162 movq -12(%rdi),%r10 163 xorq %r13,%r12 164 movq %r12,-4(%rsi) 165 166 orq %r9,%r13 167 movq 84(%rdi),%r12 168 xorq %r8,%r13 169 movq %r13,-20(%rsi) 170 171 andq %r8,%r9 172 xorq %r14,%r9 173 movq %r9,12(%rsi) 174 175 orq %r8,%r14 176 movq -60(%rdi),%r9 177 xorq %r11,%r14 178 movq 36(%rdi),%r11 179 movq %r14,4(%rsi) 180 181 182 movq -68(%rdi),%r8 183 184 xorq %rcx,%r10 185 xorq %rdx,%r11 186 rolq $10,%r10 187 xorq %rbx,%r9 188 rolq $15,%r11 189 xorq %rbp,%r12 190 rolq $36,%r9 191 xorq %rax,%r8 192 rolq $56,%r12 193 movq %r10,%r13 194 orq %r11,%r10 195 rolq $27,%r8 196 197 notq %r11 198 xorq %r9,%r10 199 movq %r10,28(%rsi) 200 201 movq %r12,%r14 202 orq %r11,%r12 203 xorq %r13,%r12 204 movq %r12,36(%rsi) 205 206 andq %r9,%r13 207 xorq %r8,%r13 208 movq %r13,20(%rsi) 209 210 orq %r8,%r9 211 xorq %r14,%r9 212 movq %r9,52(%rsi) 213 214 andq %r14,%r8 215 xorq %r11,%r8 216 movq %r8,44(%rsi) 217 218 219 xorq -84(%rdi),%rdx 220 xorq -36(%rdi),%rbp 221 rolq $62,%rdx 222 xorq 68(%rdi),%rcx 223 rolq $55,%rbp 224 xorq 12(%rdi),%rax 225 rolq $2,%rcx 226 xorq 20(%rdi),%rbx 227 xchgq %rsi,%rdi 228 rolq $39,%rax 229 rolq $41,%rbx 230 movq %rdx,%r13 231 andq %rbp,%rdx 232 notq %rbp 233 xorq %rcx,%rdx 234 movq %rdx,92(%rdi) 235 236 movq %rax,%r14 237 andq %rbp,%rax 238 xorq %r13,%rax 239 movq %rax,60(%rdi) 240 241 orq %rcx,%r13 242 xorq %rbx,%r13 243 movq %r13,84(%rdi) 244 245 andq %rbx,%rcx 246 xorq %r14,%rcx 247 movq %rcx,76(%rdi) 248 249 orq %r14,%rbx 250 xorq %rbp,%rbx 251 movq %rbx,68(%rdi) 252 253 movq %rdx,%rbp 254 movq %r13,%rdx 255 256 testq $255,%r15 257 jnz .Loop 258 259 leaq -192(%r15),%r15 260 .byte 0xf3,0xc3 261.cfi_endproc 262.size __KeccakF1600,.-__KeccakF1600 263 264.type KeccakF1600,@function 265.align 32 266KeccakF1600: 267.cfi_startproc 268 pushq %rbx 269.cfi_adjust_cfa_offset 8 270.cfi_offset %rbx,-16 271 pushq %rbp 272.cfi_adjust_cfa_offset 8 273.cfi_offset %rbp,-24 274 pushq %r12 275.cfi_adjust_cfa_offset 8 276.cfi_offset %r12,-32 277 pushq %r13 278.cfi_adjust_cfa_offset 8 279.cfi_offset %r13,-40 280 pushq %r14 281.cfi_adjust_cfa_offset 8 282.cfi_offset %r14,-48 283 pushq %r15 284.cfi_adjust_cfa_offset 8 285.cfi_offset %r15,-56 286 287 leaq 100(%rdi),%rdi 288 subq $200,%rsp 289.cfi_adjust_cfa_offset 200 290 291 notq -92(%rdi) 292 notq -84(%rdi) 293 notq -36(%rdi) 294 notq -4(%rdi) 295 notq 36(%rdi) 296 notq 60(%rdi) 297 298 leaq iotas(%rip),%r15 299 leaq 100(%rsp),%rsi 300 301 call __KeccakF1600 302 303 notq -92(%rdi) 304 notq -84(%rdi) 305 notq -36(%rdi) 306 notq -4(%rdi) 307 notq 36(%rdi) 308 notq 60(%rdi) 309 leaq -100(%rdi),%rdi 310 311 addq $200,%rsp 312.cfi_adjust_cfa_offset -200 313 314 popq %r15 315.cfi_adjust_cfa_offset -8 316.cfi_restore %r15 317 popq %r14 318.cfi_adjust_cfa_offset -8 319.cfi_restore %r14 320 popq %r13 321.cfi_adjust_cfa_offset -8 322.cfi_restore %r13 323 popq %r12 324.cfi_adjust_cfa_offset -8 325.cfi_restore %r12 326 popq %rbp 327.cfi_adjust_cfa_offset -8 328.cfi_restore %rbp 329 popq %rbx 330.cfi_adjust_cfa_offset -8 331.cfi_restore %rbx 332 .byte 0xf3,0xc3 333.cfi_endproc 334.size KeccakF1600,.-KeccakF1600 335.globl SHA3_absorb 336.type SHA3_absorb,@function 337.align 32 338SHA3_absorb: 339.cfi_startproc 340 pushq %rbx 341.cfi_adjust_cfa_offset 8 342.cfi_offset %rbx,-16 343 pushq %rbp 344.cfi_adjust_cfa_offset 8 345.cfi_offset %rbp,-24 346 pushq %r12 347.cfi_adjust_cfa_offset 8 348.cfi_offset %r12,-32 349 pushq %r13 350.cfi_adjust_cfa_offset 8 351.cfi_offset %r13,-40 352 pushq %r14 353.cfi_adjust_cfa_offset 8 354.cfi_offset %r14,-48 355 pushq %r15 356.cfi_adjust_cfa_offset 8 357.cfi_offset %r15,-56 358 359 leaq 100(%rdi),%rdi 360 subq $232,%rsp 361.cfi_adjust_cfa_offset 232 362 363 movq %rsi,%r9 364 leaq 100(%rsp),%rsi 365 366 notq -92(%rdi) 367 notq -84(%rdi) 368 notq -36(%rdi) 369 notq -4(%rdi) 370 notq 36(%rdi) 371 notq 60(%rdi) 372 leaq iotas(%rip),%r15 373 374 movq %rcx,216-100(%rsi) 375 376.Loop_absorb: 377 cmpq %rcx,%rdx 378 jc .Ldone_absorb 379 380 shrq $3,%rcx 381 leaq -100(%rdi),%r8 382 383.Lblock_absorb: 384 movq (%r9),%rax 385 leaq 8(%r9),%r9 386 xorq (%r8),%rax 387 leaq 8(%r8),%r8 388 subq $8,%rdx 389 movq %rax,-8(%r8) 390 subq $1,%rcx 391 jnz .Lblock_absorb 392 393 movq %r9,200-100(%rsi) 394 movq %rdx,208-100(%rsi) 395 call __KeccakF1600 396 movq 200-100(%rsi),%r9 397 movq 208-100(%rsi),%rdx 398 movq 216-100(%rsi),%rcx 399 jmp .Loop_absorb 400 401.align 32 402.Ldone_absorb: 403 movq %rdx,%rax 404 405 notq -92(%rdi) 406 notq -84(%rdi) 407 notq -36(%rdi) 408 notq -4(%rdi) 409 notq 36(%rdi) 410 notq 60(%rdi) 411 412 addq $232,%rsp 413.cfi_adjust_cfa_offset -232 414 415 popq %r15 416.cfi_adjust_cfa_offset -8 417.cfi_restore %r15 418 popq %r14 419.cfi_adjust_cfa_offset -8 420.cfi_restore %r14 421 popq %r13 422.cfi_adjust_cfa_offset -8 423.cfi_restore %r13 424 popq %r12 425.cfi_adjust_cfa_offset -8 426.cfi_restore %r12 427 popq %rbp 428.cfi_adjust_cfa_offset -8 429.cfi_restore %rbp 430 popq %rbx 431.cfi_adjust_cfa_offset -8 432.cfi_restore %rbx 433 .byte 0xf3,0xc3 434.cfi_endproc 435.size SHA3_absorb,.-SHA3_absorb 436.globl SHA3_squeeze 437.type SHA3_squeeze,@function 438.align 32 439SHA3_squeeze: 440.cfi_startproc 441 pushq %r12 442.cfi_adjust_cfa_offset 8 443.cfi_offset %r12,-16 444 pushq %r13 445.cfi_adjust_cfa_offset 8 446.cfi_offset %r13,-24 447 pushq %r14 448.cfi_adjust_cfa_offset 8 449.cfi_offset %r14,-32 450 451 shrq $3,%rcx 452 movq %rdi,%r8 453 movq %rsi,%r12 454 movq %rdx,%r13 455 movq %rcx,%r14 456 jmp .Loop_squeeze 457 458.align 32 459.Loop_squeeze: 460 cmpq $8,%r13 461 jb .Ltail_squeeze 462 463 movq (%r8),%rax 464 leaq 8(%r8),%r8 465 movq %rax,(%r12) 466 leaq 8(%r12),%r12 467 subq $8,%r13 468 jz .Ldone_squeeze 469 470 subq $1,%rcx 471 jnz .Loop_squeeze 472 473 call KeccakF1600 474 movq %rdi,%r8 475 movq %r14,%rcx 476 jmp .Loop_squeeze 477 478.Ltail_squeeze: 479 movq %r8,%rsi 480 movq %r12,%rdi 481 movq %r13,%rcx 482.byte 0xf3,0xa4 483 484.Ldone_squeeze: 485 popq %r14 486.cfi_adjust_cfa_offset -8 487.cfi_restore %r14 488 popq %r13 489.cfi_adjust_cfa_offset -8 490.cfi_restore %r13 491 popq %r12 492.cfi_adjust_cfa_offset -8 493.cfi_restore %r13 494 .byte 0xf3,0xc3 495.cfi_endproc 496.size SHA3_squeeze,.-SHA3_squeeze 497.align 256 498.quad 0,0,0,0,0,0,0,0 499.type iotas,@object 500iotas: 501.quad 0x0000000000000001 502.quad 0x0000000000008082 503.quad 0x800000000000808a 504.quad 0x8000000080008000 505.quad 0x000000000000808b 506.quad 0x0000000080000001 507.quad 0x8000000080008081 508.quad 0x8000000000008009 509.quad 0x000000000000008a 510.quad 0x0000000000000088 511.quad 0x0000000080008009 512.quad 0x000000008000000a 513.quad 0x000000008000808b 514.quad 0x800000000000008b 515.quad 0x8000000000008089 516.quad 0x8000000000008003 517.quad 0x8000000000008002 518.quad 0x8000000000000080 519.quad 0x000000000000800a 520.quad 0x800000008000000a 521.quad 0x8000000080008081 522.quad 0x8000000000008080 523.quad 0x0000000080000001 524.quad 0x8000000080008008 525.size iotas,.-iotas 526.byte 75,101,99,99,97,107,45,49,54,48,48,32,97,98,115,111,114,98,32,97,110,100,32,115,113,117,101,101,122,101,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 527