#include "../macro.S"
#include "constants.S"

SECTION_TEXT

GLOBAL_HIDDEN_FN blake2b_blocks_x86
pushl %esi
pushl %edi
pushl %ebx
pushl %ebp
subl $492, %esp
movl 512(%esp), %eax
movl 80(%eax), %ebp
movl %ebp, %edi
movl 84(%eax), %ebx
xorl $-79577749, %edi
movl %edi, 144(%esp)
movl %ebx, %edi
xorl $528734635, %edi
movl %edi, 148(%esp)
movl 88(%eax), %edi
movl 92(%eax), %eax
xorl $327033209, %edi
xorl $1541459225, %eax
movl %edi, 152(%esp)
LOAD_VAR_PIC blake2b_sigma, %ecx
lea 192(%ecx), %edi
movl 516(%esp), %esi
orl %ebx, %ebp
movl 520(%esp), %edx
movl %edi, 360(%esp)
jne blake2b_blocks_x86_L2
blake2b_blocks_x86_L32:
cmpl $128, %edx
jmp blake2b_blocks_x86_L21
blake2b_blocks_x86_L2:
cmpl $128, %edx
je blake2b_blocks_x86_L21
blake2b_blocks_x86_L3:
testb $64, %dl
lea (%esp), %ebp
je blake2b_blocks_x86_L5
blake2b_blocks_x86_L4:
movl (%esi), %ebx
movl 4(%esi), %ebp
movl %ebx, (%esp)
movl %ebp, 4(%esp)
movl 8(%esi), %edi
movl 12(%esi), %ebx
movl %edi, 8(%esp)
movl %ebx, 12(%esp)
movl 16(%esi), %ebp
movl 20(%esi), %edi
movl %ebp, 16(%esp)
movl %edi, 20(%esp)
movl 24(%esi), %ebx
movl 28(%esi), %ebp
movl %ebx, 24(%esp)
movl %ebp, 28(%esp)
movl 32(%esi), %edi
movl 36(%esi), %ebx
movl %edi, 32(%esp)
movl %ebx, 36(%esp)
movl 40(%esi), %ebp
movl 44(%esi), %edi
movl %ebp, 40(%esp)
movl %edi, 44(%esp)
movl 48(%esi), %ebx
movl 52(%esi), %ebp
movl %ebx, 48(%esp)
movl %ebp, 52(%esp)
lea 64(%esp), %ebp
movl 56(%esi), %edi
movl 60(%esi), %ebx
addl $64, %esi
movl %edi, 56(%esp)
movl %ebx, 60(%esp)
jmp blake2b_blocks_x86_L6
blake2b_blocks_x86_L5:
xorl %ebx, %ebx
movl %ebx, 64(%esp)
movl %ebx, 68(%esp)
movl %ebx, 72(%esp)
movl %ebx, 76(%esp)
movl %ebx, 80(%esp)
movl %ebx, 84(%esp)
movl %ebx, 88(%esp)
movl %ebx, 92(%esp)
movl %ebx, 96(%esp)
movl %ebx, 100(%esp)
movl %ebx, 104(%esp)
movl %ebx, 108(%esp)
movl %ebx, 112(%esp)
movl %ebx, 116(%esp)
movl %ebx, 120(%esp)
movl %ebx, 124(%esp)
blake2b_blocks_x86_L6:
xorl %ebx, %ebx
testb $32, %dl
movl %ebx, (%ebp)
movl %ebx, 4(%ebp)
movl %ebx, 8(%ebp)
movl %ebx, 12(%ebp)
movl %ebx, 16(%ebp)
movl %ebx, 20(%ebp)
movl %ebx, 24(%ebp)
movl %ebx, 28(%ebp)
movl %ebx, 32(%ebp)
movl %ebx, 36(%ebp)
movl %ebx, 40(%ebp)
movl %ebx, 44(%ebp)
movl %ebx, 48(%ebp)
movl %ebx, 52(%ebp)
movl %ebx, 56(%ebp)
movl %ebx, 60(%ebp)
je blake2b_blocks_x86_L8
blake2b_blocks_x86_L7:
movl (%esi), %ebx
movl 4(%esi), %edi
movl %ebx, (%ebp)
movl %edi, 4(%ebp)
movl 8(%esi), %ebx
movl 12(%esi), %edi
movl %ebx, 8(%ebp)
movl %edi, 12(%ebp)
movl 16(%esi), %ebx
movl 20(%esi), %edi
movl %ebx, 16(%ebp)
movl %edi, 20(%ebp)
movl 24(%esi), %ebx
movl 28(%esi), %edi
addl $32, %esi
movl %ebx, 24(%ebp)
movl %edi, 28(%ebp)
addl $32, %ebp
blake2b_blocks_x86_L8:
testb $16, %dl
je blake2b_blocks_x86_L10
blake2b_blocks_x86_L9:
movl (%esi), %ebx
movl 4(%esi), %edi
movl %ebx, (%ebp)
movl %edi, 4(%ebp)
movl 8(%esi), %ebx
movl 12(%esi), %edi
addl $16, %esi
movl %ebx, 8(%ebp)
movl %edi, 12(%ebp)
addl $16, %ebp
blake2b_blocks_x86_L10:
testb $8, %dl
je blake2b_blocks_x86_L12
blake2b_blocks_x86_L11:
movl (%esi), %ebx
movl 4(%esi), %edi
addl $8, %esi
movl %ebx, (%ebp)
movl %edi, 4(%ebp)
addl $8, %ebp
blake2b_blocks_x86_L12:
testb $4, %dl
je blake2b_blocks_x86_L14
blake2b_blocks_x86_L13:
movl (%esi), %ebx
addl $4, %esi
movl %ebx, (%ebp)
addl $4, %ebp
blake2b_blocks_x86_L14:
testb $2, %dl
je blake2b_blocks_x86_L16
blake2b_blocks_x86_L15:
movzwl (%esi), %ebx
addl $2, %esi
movw %bx, (%ebp)
addl $2, %ebp
blake2b_blocks_x86_L16:
testb $1, %dl
je blake2b_blocks_x86_L18
blake2b_blocks_x86_L17:
movzbl (%esi), %ebx
movb %bl, (%ebp)
blake2b_blocks_x86_L18:
cmpl $128, %edx
lea (%esp), %esi
blake2b_blocks_x86_L21:
movl 512(%esp), %ebp
lea (%ecx), %ecx
movl %esi, 236(%esp)
movl %ecx, 128(%esp)
movl 68(%ebp), %edi
movl %edi, 228(%esp)
movl 60(%ebp), %edi
movl %edi, 196(%esp)
movl 72(%ebp), %edi
movl %edi, 164(%esp)
movl 76(%ebp), %edi
movl %edi, 200(%esp)
movl 24(%ebp), %edi
movl %edi, 176(%esp)
movl 28(%ebp), %edi
movl %edi, 208(%esp)
movl 16(%ebp), %edi
movl %edi, 184(%esp)
movl 20(%ebp), %edi
movl %edi, 216(%esp)
movl 48(%ebp), %edi
movl %edi, 168(%esp)
movl 52(%ebp), %edi
movl %edi, 204(%esp)
movl 8(%ebp), %edi
movl 64(%ebp), %ebx
movl %edi, 156(%esp)
movl 12(%ebp), %edi
movl %ebx, 192(%esp)
movl 56(%ebp), %ebx
movl %edi, 224(%esp)
movl 40(%ebp), %edi
movl %ebx, 172(%esp)
movl %edx, %ebx
movl %edi, 160(%esp)
movl 44(%ebp), %edi
jbe blake2b_blocks_x86_LL3
movl $128, %ebx
blake2b_blocks_x86_LL3:
movl %edi, 212(%esp)
movl (%ebp), %edi
movl %edi, 180(%esp)
movl 4(%ebp), %edi
movl %edi, 232(%esp)
movl 32(%ebp), %edi
movl 36(%ebp), %ebp
movl %edi, 188(%esp)
movl %ebp, 220(%esp)
movl %eax, 132(%esp)
movl %ebx, 136(%esp)
movl %edx, 140(%esp)
movl 512(%esp), %esi
jmp blake2b_blocks_x86_L22
blake2b_blocks_x86_L28:
movl 524(%esp), %eax
movl 140(%esp), %edx
addl $-128, %edx
addl %eax, 236(%esp)
movl %edx, 140(%esp)
blake2b_blocks_x86_L22:
movl 136(%esp), %edx
xorl %ebx, %ebx
movl 192(%esp), %eax
addl %edx, %eax
movl 228(%esp), %ecx
adcl $0, %ecx
movl %eax, 192(%esp)
movl %eax, 64(%esi)
subl %edx, %eax
movl %ecx, 228(%esp)
movl %ecx, 68(%esi)
sbbl %ebx, %ecx
jae blake2b_blocks_x86_L25
blake2b_blocks_x86_L23:
movl 164(%esp), %eax
addl $1, %eax
movl 200(%esp), %edx
adcl $0, %edx
movl %eax, 164(%esp)
movl %edx, 200(%esp)
movl %eax, 72(%esi)
movl %edx, 76(%esi)
blake2b_blocks_x86_L25:
movl 152(%esp), %eax
movl %eax, 312(%esp)
movl 172(%esp), %ebp
movl 196(%esp), %ebx
movl 144(%esp), %eax
movl 184(%esp), %edi
movl %ebp, 284(%esp)
movl %ebx, 288(%esp)
movl %eax, 296(%esp)
movl 168(%esp), %ebp
movl 204(%esp), %ebx
movl 212(%esp), %eax
movl %edi, 332(%esp)
movl %ebp, 276(%esp)
movl %ebx, 280(%esp)
movl 148(%esp), %edi
movl %eax, 272(%esp)
movl 224(%esp), %ebp
movl 160(%esp), %ebx
movl 188(%esp), %eax
movl 208(%esp), %ecx
movl %edi, 300(%esp)
movl %ebp, 248(%esp)
movl %ebx, 268(%esp)
movl 180(%esp), %edi
movl %eax, 260(%esp)
movl 176(%esp), %edx
movl 164(%esp), %ebp
movl 232(%esp), %ebx
xorl $725511199, %ebp
movl 128(%esp), %eax
movl %ebp, 348(%esp)
movl %ecx, 256(%esp)
movl 200(%esp), %ebp
movl 216(%esp), %ecx
xorl $-1694144372, %ebp
movl %edi, 240(%esp)
movl %edx, 316(%esp)
movl %ebx, 244(%esp)
movl 220(%esp), %edi
movl %eax, 292(%esp)
movl 192(%esp), %ebx
xorl $-1377402159, %ebx
movl %ebx, 352(%esp)
movl %ecx, 252(%esp)
movl 228(%esp), %ebx
movl %ebp, 356(%esp)
xorl $1359893119, %ebx
movl 132(%esp), %edx
movl 156(%esp), %ecx
movl 332(%esp), %ebp
movl 316(%esp), %esi
movl %edi, 264(%esp)
movl $1595750129, 308(%esp)
movl $-1521486534, 304(%esp)
movl $-23791573, 324(%esp)
movl $1013904242, 320(%esp)
movl $-2067093701, 340(%esp)
movl $-1150833019, 336(%esp)
movl $-205731576, 328(%esp)
movl $1779033703, 344(%esp)
blake2b_blocks_x86_L26:
movl %esi, 316(%esp)
movl %edx, 368(%esp)
movzbl (%eax), %esi
movl 236(%esp), %edx
movl %ecx, 364(%esp)
movl 240(%esp), %ecx
addl (%esi,%edx), %ecx
movl %ebp, 332(%esp)
movl 244(%esp), %ebp
adcl 4(%esi,%edx), %ebp
movl 260(%esp), %edx
addl %edx, %ecx
movl 264(%esp), %esi
adcl %esi, %ebp
xorl %ebp, %ebx
movl 352(%esp), %edi
movl %ecx, 240(%esp)
xorl %ecx, %edi
movl 328(%esp), %ecx
addl %ebx, %ecx
movl %ebx, 372(%esp)
movl 344(%esp), %ebx
adcl %edi, %ebx
xorl %ecx, %edx
xorl %ebx, %esi
movl %edi, 352(%esp)
movl %edx, %edi
movl %ecx, 328(%esp)
movl %esi, %ecx
shrl $24, %esi
shll $8, %edx
orl %edx, %esi
movl %esi, 264(%esp)
movzbl 2(%eax), %edx
movl 236(%esp), %esi
shll $8, %ecx
shrl $24, %edi
orl %edi, %ecx
movl %ecx, 376(%esp)
movl 364(%esp), %ecx
addl (%edx,%esi), %ecx
movl 248(%esp), %edi
movl %ebp, 244(%esp)
movl 268(%esp), %ebp
adcl 4(%edx,%esi), %edi
addl %ebp, %ecx
movl 272(%esp), %edx
adcl %edx, %edi
movl %ebx, 344(%esp)
movl %ecx, 364(%esp)
movl 348(%esp), %ebx
xorl %ecx, %ebx
movl 356(%esp), %ecx
xorl %edi, %ecx
movl %edi, 248(%esp)
movl 340(%esp), %edi
addl %ecx, %edi
movl %ecx, 356(%esp)
movl 336(%esp), %ecx
adcl %ebx, %ecx
xorl %edi, %ebp
xorl %ecx, %edx
movl %ebx, 348(%esp)
movl %edx, %ebx
movl %edi, 340(%esp)
movl %ebp, %edi
shrl $24, %edx
shll $8, %ebp
orl %ebp, %edx
movzbl 4(%eax), %ebp
movl %ecx, 336(%esp)
shll $8, %ebx
shrl $24, %edi
movl 332(%esp), %ecx
orl %edi, %ebx
addl (%ebp,%esi), %ecx
movl 252(%esp), %edi
adcl 4(%ebp,%esi), %edi
movl 276(%esp), %ebp
addl %ebp, %ecx
movl %edx, 272(%esp)
movl 280(%esp), %edx
adcl %edx, %edi
movl %ebx, 380(%esp)
movl %ecx, 332(%esp)
movl 296(%esp), %ebx
xorl %ecx, %ebx
movl 300(%esp), %ecx
xorl %edi, %ecx
movl %edi, 252(%esp)
movl 324(%esp), %edi
addl %ecx, %edi
movl %ecx, 300(%esp)
movl 320(%esp), %ecx
adcl %ebx, %ecx
xorl %edi, %ebp
xorl %ecx, %edx
movl %ebx, 296(%esp)
movl %edx, %ebx
movl %edi, 324(%esp)
movl %ebp, %edi
shrl $24, %edx
shll $8, %ebp
orl %ebp, %edx
movl %edx, 280(%esp)
movzbl 6(%eax), %edx
movl %ecx, 320(%esp)
shll $8, %ebx
shrl $24, %edi
movl 316(%esp), %ecx
orl %edi, %ebx
addl (%edx,%esi), %ecx
movl 256(%esp), %edi
movl 284(%esp), %ebp
adcl 4(%edx,%esi), %edi
addl %ebp, %ecx
movl 288(%esp), %edx
adcl %edx, %edi
movl %ebx, 384(%esp)
movl %ecx, 316(%esp)
movl 312(%esp), %ebx
xorl %ecx, %ebx
movl 368(%esp), %ecx
xorl %edi, %ecx
movl %edi, 256(%esp)
movl 308(%esp), %edi
addl %ecx, %edi
movl %ecx, 368(%esp)
movl 304(%esp), %ecx
adcl %ebx, %ecx
xorl %edi, %ebp
xorl %ecx, %edx
movl %ebx, 312(%esp)
movl %edx, %ebx
movl %edi, 308(%esp)
movl %ebp, %edi
shrl $24, %edx
shll $8, %ebp
orl %ebp, %edx
movzbl 5(%eax), %ebp
movl %ecx, 304(%esp)
shll $8, %ebx
movl (%ebp,%esi), %ecx
addl 332(%esp), %ecx
movl 4(%ebp,%esi), %esi
adcl 252(%esp), %esi
shrl $24, %edi
orl %edi, %ebx
movl %ebx, 388(%esp)
movl 384(%esp), %ebx
addl %ebx, %ecx
movl %edx, 288(%esp)
movl 280(%esp), %edx
adcl %edx, %esi
movl 300(%esp), %ebp
movl 296(%esp), %edi
xorl %ecx, %ebp
xorl %esi, %edi
movl %ecx, 392(%esp)
movl %ebp, %ecx
movl %esi, 396(%esp)
movl %edi, %esi
shll $16, %esi
shrl $16, %ecx
shrl $16, %edi
orl %ecx, %esi
shll $16, %ebp
orl %ebp, %edi
movl 324(%esp), %ebp
addl %esi, %ebp
movl %esi, 400(%esp)
movl 320(%esp), %esi
adcl %edi, %esi
xorl %ebp, %ebx
xorl %esi, %edx
movl %esi, 320(%esp)
movl %edx, %esi
movl %edi, 296(%esp)
movl %ebx, %edi
shrl $31, %esi
addl %ebx, %ebx
shrl $31, %edi
addl %edx, %edx
orl %ebx, %esi
orl %edx, %edi
movl %esi, 408(%esp)
movzbl 7(%eax), %edx
movl 236(%esp), %esi
movl %edi, 404(%esp)
movl 288(%esp), %edi
movl (%edx,%esi), %ebx
addl 316(%esp), %ebx
movl 4(%edx,%esi), %ecx
movl 388(%esp), %edx
adcl 256(%esp), %ecx
addl %edx, %ebx
movl %ebp, 324(%esp)
adcl %edi, %ecx
movl 368(%esp), %ebp
movl 312(%esp), %esi
xorl %ebx, %ebp
xorl %ecx, %esi
movl %ebx, 412(%esp)
movl %ebp, %ebx
movl %ecx, 416(%esp)
movl %esi, %ecx
shll $16, %ecx
shrl $16, %ebx
shrl $16, %esi
orl %ebx, %ecx
shll $16, %ebp
orl %ebp, %esi
movl 308(%esp), %ebp
addl %ecx, %ebp
movl %ecx, 420(%esp)
movl 304(%esp), %ecx
adcl %esi, %ecx
xorl %ebp, %edx
movl %esi, 312(%esp)
xorl %ecx, %edi
movl %edx, %esi
movl %edi, %ebx
shrl $31, %esi
addl %edi, %edi
orl %edi, %esi
addl %edx, %edx
movl %esi, 424(%esp)
movzbl 3(%eax), %edi
movl 236(%esp), %esi
shrl $31, %ebx
orl %edx, %ebx
movl (%edi,%esi), %edx
addl 364(%esp), %edx
movl %ecx, 304(%esp)
movl 4(%edi,%esi), %ecx
movl 380(%esp), %edi
adcl 248(%esp), %ecx
addl %edi, %edx
movl 272(%esp), %esi
adcl %esi, %ecx
movl %ebp, 308(%esp)
movl %ebx, 428(%esp)
movl 356(%esp), %ebx
movl 348(%esp), %ebp
xorl %edx, %ebx
xorl %ecx, %ebp
movl %edx, 432(%esp)
movl %ebp, %edx
movl %ecx, 436(%esp)
movl %ebx, %ecx
shll $16, %edx
shrl $16, %ecx
shrl $16, %ebp
orl %ecx, %edx
shll $16, %ebx
orl %ebx, %ebp
movl 340(%esp), %ebx
addl %edx, %ebx
movl %edx, 440(%esp)
movl 336(%esp), %edx
adcl %ebp, %edx
xorl %ebx, %edi
movl %ebx, 340(%esp)
xorl %edx, %esi
movl %edi, %ebx
movl %esi, %ecx
shrl $31, %ebx
addl %esi, %esi
movl %edx, 336(%esp)
orl %esi, %ebx
movzbl 1(%eax), %esi
addl %edi, %edi
movl 236(%esp), %edx
shrl $31, %ecx
orl %edi, %ecx
movl (%esi,%edx), %edi
addl 240(%esp), %edi
movl %ebp, 348(%esp)
movl 4(%esi,%edx), %ebp
movl 376(%esp), %esi
adcl 244(%esp), %ebp
addl %esi, %edi
movl %ecx, 448(%esp)
movl 264(%esp), %ecx
adcl %ecx, %ebp
movl %ebx, 444(%esp)
movl 372(%esp), %ebx
movl 352(%esp), %edx
xorl %edi, %ebx
xorl %ebp, %edx
movl %edi, 452(%esp)
movl %edx, %edi
movl %ebp, 456(%esp)
movl %ebx, %ebp
shll $16, %edi
shrl $16, %ebp
shrl $16, %edx
orl %ebp, %edi
shll $16, %ebx
orl %ebx, %edx
movl 328(%esp), %ebx
addl %edi, %ebx
movl %edi, 460(%esp)
movl 344(%esp), %edi
adcl %edx, %edi
xorl %ebx, %esi
movl %edx, 352(%esp)
xorl %edi, %ecx
movl %esi, %edx
addl %esi, %esi
movl %ebx, 328(%esp)
movl %ecx, %ebx
shrl $31, %edx
addl %ecx, %ecx
movl %edi, 344(%esp)
orl %ecx, %edx
movzbl 8(%eax), %edi
movl 236(%esp), %ecx
shrl $31, %ebx
orl %esi, %ebx
movl %ebx, 468(%esp)
movl 452(%esp), %ebx
addl (%edi,%ecx), %ebx
movl 456(%esp), %esi
movl %edx, 464(%esp)
movl 448(%esp), %edx
adcl 4(%edi,%ecx), %esi
addl %edx, %ebx
movl 444(%esp), %edi
adcl %edi, %esi
movl 420(%esp), %ebp
movl %ebx, 452(%esp)
xorl %ebx, %ebp
movl 312(%esp), %ebx
xorl %esi, %ebx
movl %esi, 456(%esp)
movl 324(%esp), %esi
addl %ebx, %esi
movl %ebx, 312(%esp)
movl 320(%esp), %ebx
adcl %ebp, %ebx
xorl %esi, %edx
xorl %ebx, %edi
movl %ebp, 420(%esp)
movzbl 10(%eax), %ebp
movl %esi, 324(%esp)
movl %edx, %esi
movl %ebx, 320(%esp)
movl %edi, %ebx
shll $8, %ebx
shrl $24, %esi
orl %esi, %ebx
movl %ebx, 472(%esp)
movl (%ebp,%ecx), %ebx
addl 432(%esp), %ebx
movl 4(%ebp,%ecx), %esi
adcl 436(%esp), %esi
shrl $24, %edi
shll $8, %edx
orl %edx, %edi
movl 408(%esp), %edx
addl %edx, %ebx
movl %edi, 444(%esp)
movl 404(%esp), %edi
adcl %edi, %esi
movl 460(%esp), %ebp
movl %ebx, 364(%esp)
xorl %ebx, %ebp
movl 352(%esp), %ebx
xorl %esi, %ebx
movl %esi, 248(%esp)
movl 308(%esp), %esi
addl %ebx, %esi
movl %ebx, 352(%esp)
movl 304(%esp), %ebx
adcl %ebp, %ebx
xorl %esi, %edx
xorl %ebx, %edi
movl %esi, 308(%esp)
movl %edx, %esi
movl %ebx, 304(%esp)
movl %edi, %ebx
shrl $24, %edi
shll $8, %edx
orl %edx, %edi
movl %edi, 404(%esp)
movzbl 12(%eax), %edi
movl %ebp, 460(%esp)
shll $8, %ebx
shrl $24, %esi
movl (%edi,%ecx), %ebp
orl %esi, %ebx
addl 392(%esp), %ebp
movl 4(%edi,%ecx), %esi
movl 428(%esp), %edx
adcl 396(%esp), %esi
addl %edx, %ebp
movl %ebx, 476(%esp)
movl 424(%esp), %ebx
adcl %ebx, %esi
movl 440(%esp), %edi
movl %ebp, 332(%esp)
xorl %ebp, %edi
movl 348(%esp), %ebp
xorl %esi, %ebp
movl %esi, 252(%esp)
movl 328(%esp), %esi
addl %ebp, %esi
movl %ebp, 348(%esp)
movl 344(%esp), %ebp
adcl %edi, %ebp
xorl %esi, %edx
xorl %ebp, %ebx
movl %esi, 328(%esp)
movl %edx, %esi
movl %ebp, 344(%esp)
movl %ebx, %ebp
shrl $24, %ebx
shll $8, %edx
orl %edx, %ebx
movzbl 14(%eax), %edx
movl %eax, 292(%esp)
shll $8, %ebp
shrl $24, %esi
movl (%edx,%ecx), %eax
orl %esi, %ebp
addl 412(%esp), %eax
movl 4(%edx,%ecx), %esi
movl 468(%esp), %ecx
adcl 416(%esp), %esi
addl %ecx, %eax
movl 464(%esp), %edx
adcl %edx, %esi
movl %edi, 440(%esp)
movl %eax, 316(%esp)
movl 400(%esp), %edi
xorl %eax, %edi
movl 296(%esp), %eax
xorl %esi, %eax
movl %esi, 256(%esp)
movl 340(%esp), %esi
addl %eax, %esi
movl %eax, 296(%esp)
movl 336(%esp), %eax
adcl %edi, %eax
xorl %esi, %ecx
xorl %eax, %edx
movl %edi, 400(%esp)
movl %ecx, %edi
movl %esi, 340(%esp)
movl %edx, %esi
shrl $24, %edx
shll $8, %ecx
orl %ecx, %edx
movl %edx, 464(%esp)
movl 292(%esp), %edx
shll $8, %esi
shrl $24, %edi
orl %edi, %esi
movzbl 13(%edx), %edi
movl 236(%esp), %edx
movl 332(%esp), %ecx
addl %ebp, %ecx
movl %eax, 336(%esp)
movl 252(%esp), %eax
adcl %ebx, %eax
addl (%edi,%edx), %ecx
movl %ecx, 332(%esp)
adcl 4(%edi,%edx), %eax
movl 348(%esp), %edi
movl 440(%esp), %edx
xorl %ecx, %edi
xorl %eax, %edx
movl %edi, %ecx
movl %eax, 252(%esp)
movl %edx, %eax
shll $16, %eax
shrl $16, %ecx
shrl $16, %edx
orl %ecx, %eax
shll $16, %edi
orl %edx, %edi
movl 328(%esp), %edx
addl %eax, %edx
movl %eax, 348(%esp)
movl 344(%esp), %eax
adcl %edi, %eax
xorl %edx, %ebp
xorl %eax, %ebx
movl %eax, 344(%esp)
movl %ebx, %eax
movl %edi, 356(%esp)
movl %ebp, %edi
shrl $31, %eax
addl %ebp, %ebp
orl %ebp, %eax
addl %ebx, %ebx
movl %eax, 284(%esp)
movl 292(%esp), %eax
shrl $31, %edi
orl %ebx, %edi
movl %edi, 288(%esp)
movzbl 15(%eax), %ebx
movl 236(%esp), %edi
movl 316(%esp), %ebp
addl %esi, %ebp
movl %edx, 328(%esp)
movl 256(%esp), %edx
movl 464(%esp), %ecx
adcl %ecx, %edx
addl (%ebx,%edi), %ebp
movl %ebp, 316(%esp)
adcl 4(%ebx,%edi), %edx
movl 296(%esp), %edi
movl 400(%esp), %ebx
xorl %ebp, %edi
xorl %edx, %ebx
movl %edi, %ebp
movl %edx, 256(%esp)
movl %ebx, %edx
shll $16, %edx
shrl $16, %ebp
shrl $16, %ebx
orl %ebp, %edx
shll $16, %edi
orl %ebx, %edi
movl 340(%esp), %ebx
addl %edx, %ebx
movl %edx, 296(%esp)
movl 336(%esp), %edx
adcl %edi, %edx
xorl %ebx, %esi
xorl %edx, %ecx
movl %edx, 336(%esp)
movl %ecx, %edx
movl %edi, 300(%esp)
movl %esi, %edi
shrl $31, %edx
addl %esi, %esi
shrl $31, %edi
addl %ecx, %ecx
movl %ebx, 340(%esp)
orl %esi, %edx
movzbl 11(%eax), %ebp
orl %ecx, %edi
movl 236(%esp), %ebx
movl %edx, 260(%esp)
movl 364(%esp), %ecx
movl 476(%esp), %edx
addl %edx, %ecx
movl %edi, 264(%esp)
movl 248(%esp), %edi
movl 404(%esp), %esi
adcl %esi, %edi
addl (%ebp,%ebx), %ecx
movl %ecx, 364(%esp)
adcl 4(%ebp,%ebx), %edi
movl 352(%esp), %ebp
movl 460(%esp), %ebx
xorl %ecx, %ebp
xorl %edi, %ebx
movl %ebp, %ecx
movl %edi, 248(%esp)
movl %ebx, %edi
shll $16, %edi
shrl $16, %ecx
shrl $16, %ebx
orl %ecx, %edi
shll $16, %ebp
orl %ebx, %ebp
movl 308(%esp), %ebx
addl %edi, %ebx
movl %edi, 352(%esp)
movl 304(%esp), %edi
adcl %ebp, %edi
xorl %ebx, %edx
xorl %edi, %esi
movl %edi, 304(%esp)
movl %esi, %edi
movl %ebp, 372(%esp)
movl %edx, %ebp
shrl $31, %edi
addl %edx, %edx
shrl $31, %ebp
addl %esi, %esi
movzbl 9(%eax), %ecx
orl %edx, %edi
movl 236(%esp), %edx
orl %esi, %ebp
movl %ebx, 308(%esp)
addl $16, %eax
movl %edi, 276(%esp)
movl 452(%esp), %ebx
movl 472(%esp), %edi
addl %edi, %ebx
movl %ebp, 280(%esp)
movl 456(%esp), %ebp
movl 444(%esp), %esi
adcl %esi, %ebp
addl (%ecx,%edx), %ebx
movl %ebx, 240(%esp)
adcl 4(%ecx,%edx), %ebp
movl 312(%esp), %edx
movl 420(%esp), %ecx
xorl %ebx, %edx
xorl %ebp, %ecx
movl %ebp, 244(%esp)
movl %ecx, %ebx
movl %edx, %ebp
shll $16, %ebx
shrl $16, %ebp
shrl $16, %ecx
orl %ebp, %ebx
shll $16, %edx
orl %ecx, %edx
movl 324(%esp), %ecx
addl %ebx, %ecx
movl %ebx, 312(%esp)
movl 320(%esp), %ebx
adcl %edx, %ebx
xorl %ecx, %edi
xorl %ebx, %esi
movl %edi, %ebp
movl %ecx, 324(%esp)
movl %esi, %ecx
shrl $31, %ecx
addl %edi, %edi
shrl $31, %ebp
addl %esi, %esi
orl %esi, %ebp
orl %edi, %ecx
movl %ebx, 320(%esp)
movl %ebp, 272(%esp)
movl %ecx, 268(%esp)
movl 332(%esp), %ebp
movl 316(%esp), %esi
movl 364(%esp), %ecx
movl 372(%esp), %ebx
cmpl 360(%esp), %eax
jb blake2b_blocks_x86_L26
blake2b_blocks_x86_L27:
movl 328(%esp), %edi
xorl 240(%esp), %edi
movl %esi, 316(%esp)
movl 512(%esp), %esi
movl 180(%esp), %eax
movl %edx, 368(%esp)
xorl %edi, %eax
movl 344(%esp), %edx
movl %eax, 180(%esp)
movl %eax, (%esi)
movl 340(%esp), %eax
xorl %ecx, %eax
movl 336(%esp), %ecx
xorl 244(%esp), %edx
xorl 248(%esp), %ecx
movl 232(%esp), %edi
xorl %edx, %edi
movl 156(%esp), %edx
xorl %eax, %edx
movl 224(%esp), %eax
movl %edi, 232(%esp)
xorl %ecx, %eax
movl %edi, 4(%esi)
movl %ebp, 332(%esp)
movl %eax, 224(%esp)
movl %eax, 12(%esi)
movl 324(%esp), %edi
movl 320(%esp), %eax
xorl 332(%esp), %edi
xorl 252(%esp), %eax
movl %edx, 156(%esp)
movl %edx, 8(%esi)
movl 184(%esp), %edx
movl 216(%esp), %ecx
xorl %edi, %edx
movl %edx, 184(%esp)
xorl %eax, %ecx
movl %edx, 16(%esi)
movl 308(%esp), %eax
movl 304(%esp), %edx
xorl 316(%esp), %eax
xorl 256(%esp), %edx
movl 176(%esp), %edi
xorl 264(%esp), %ebx
xorl %eax, %edi
movl 208(%esp), %eax
xorl %edx, %eax
movl %eax, 208(%esp)
movl %eax, 28(%esi)
movl 352(%esp), %edx
movl 220(%esp), %eax
movl 356(%esp), %ebp
xorl %ebx, %eax
movl 348(%esp), %ebx
xorl 260(%esp), %edx
xorl 268(%esp), %ebx
xorl 272(%esp), %ebp
movl %ecx, 216(%esp)
movl %ecx, 20(%esi)
movl 188(%esp), %ecx
movl %eax, 220(%esp)
xorl %edx, %ecx
movl %eax, 36(%esi)
movl 160(%esp), %eax
movl 212(%esp), %edx
xorl %ebx, %eax
xorl %ebp, %edx
movl 296(%esp), %ebp
movl %eax, 160(%esp)
movl %eax, 40(%esi)
movl %edi, 176(%esp)
movl %edi, 24(%esi)
movl 300(%esp), %eax
movl 312(%esp), %ebx
movl 368(%esp), %edi
xorl 276(%esp), %ebp
xorl 280(%esp), %eax
xorl 284(%esp), %ebx
xorl 288(%esp), %edi
movl %edx, 212(%esp)
movl %edx, 44(%esi)
movl 168(%esp), %edx
movl %ecx, 188(%esp)
xorl %ebp, %edx
movl %ecx, 32(%esi)
movl %edx, 168(%esp)
movl 204(%esp), %ecx
movl %edx, 48(%esi)
xorl %eax, %ecx
movl 172(%esp), %eax
movl 196(%esp), %edx
xorl %ebx, %eax
xorl %edi, %edx
movl %ecx, 204(%esp)
movl %ecx, 52(%esi)
movl %eax, 172(%esp)
movl %edx, 196(%esp)
movl %eax, 56(%esi)
movl %edx, 60(%esi)
cmpl $128, 140(%esp)
ja blake2b_blocks_x86_L28
blake2b_blocks_x86_L29:
addl $492, %esp
popl %ebp
popl %ebx
popl %edi
popl %esi
ret
FN_END blake2b_blocks_x86
