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