// File: /workspace/github_c_makefile_star2_O0/mjosaarinen[P]brutus/crypto_aead/aezv4/aesni/encrypt.c
// Function: aez_hash
block aez_hash(aez_ctx_t *ctx, char *n, unsigned nbytes, char *ad,
               unsigned adbytes, unsigned abytes) {
    block o0, o1, o2, o3, o4, o5, o6, o7, sum, offset, tmp;
    block I=ctx->I[0], L=ctx->L, J=ctx->J[0];
    block Jfordoubling = double_block(bswap16(ctx->J[2]));  /* 8J */
    block J8 = bswap16(Jfordoubling);
    block L2 = bswap16(tmp = double_block(bswap16(L)));
    block L4 = bswap16(tmp = double_block(tmp));
    
    /* Process abytes and nonce */
    offset = vxor(L,J8);
    tmp = zero_set_byte((char)(8*abytes),15);
    sum = aes4(vxor(offset,tmp),J,I,L,offset);
    offset = L2;
    if (nbytes==16) offset = vxor(offset, J8);
    tmp = one_zero_pad(load_partial(n,nbytes),16-nbytes);
    sum = vxor(sum, aes4(vxor(offset,tmp),J,I,L,offset));
    
    if (adbytes==0) {
        offset = L4;
        ctx->delta3_cache = aes4(vxor(offset,loadu(pad+32)),J,I,L,offset);
    } else if (ad) {
        block delta3 = zero;
        offset = vxor(L4, J8);
        while (adbytes >= 8*16) {
            o0 = offset;
            o1 = vxor(o0,ctx->J[0]);
            o2 = vxor(o0,ctx->J[1]);
            o3 = vxor(o1,ctx->J[1]);
            o4 = vxor(o0,ctx->J[2]);
            o5 = vxor(o1,ctx->J[2]);
            o6 = vxor(o2,ctx->J[2]);
            o7 = vxor(o3,ctx->J[2]);
            offset = vxor(L4, bswap16(Jfordoubling = double_block(Jfordoubling)));
            delta3 = vxor(delta3, aes4(vxor(load(ad+  0),o0), J, I, L, o0));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 16),o1), J, I, L, o1));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 32),o2), J, I, L, o2));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 48),o3), J, I, L, o3));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 64),o4), J, I, L, o4));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 80),o5), J, I, L, o5));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 96),o6), J, I, L, o6));
            delta3 = vxor(delta3, aes4(vxor(load(ad+112),o7), J, I, L, o7));
            adbytes-=8*16; ad+=8*16;
        }
        if (adbytes >= 4*16) {
            o0 = offset;
            o1 = vxor(o0,ctx->J[0]);
            o2 = vxor(o0,ctx->J[1]);
            o3 = vxor(o1,ctx->J[1]);
            offset = vxor(o0,ctx->J[2]);
            delta3 = vxor(delta3, aes4(vxor(load(ad+  0),o0), J, I, L, o0));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 16),o1), J, I, L, o1));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 32),o2), J, I, L, o2));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 48),o3), J, I, L, o3));
            adbytes-=4*16; ad+=4*16;
        }
        if (adbytes >= 2*16) {
            o0 = offset;
            o1 = vxor(o0,ctx->J[0]);
            offset = vxor(o0,ctx->J[1]);
            delta3 = vxor(delta3, aes4(vxor(load(ad+  0),o0), J, I, L, o0));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 16),o1), J, I, L, o1));
            adbytes-=2*16; ad+=2*16;
        }
        if (adbytes >= 1*16) {
            o0 = offset;
            delta3 = vxor(delta3, aes4(vxor(load(ad+  0),o0), J, I, L, o0));
            adbytes-=1*16; ad+=1*16;
        }
        if (adbytes) {
            tmp = one_zero_pad(load(ad),16-adbytes);
            delta3 = vxor(delta3,aes4(vxor(tmp,L4), J, I, L, L4));
        }
        ctx->delta3_cache = delta3;
    }
    return vxor(sum,ctx->delta3_cache);
}

// Assembly:
subq $0x968, %rsp            # imm = 0x968
movq %rdi, 0x288(%rsp)
movq %rsi, 0x280(%rsp)
movl %edx, 0x27c(%rsp)
movq %rcx, 0x270(%rsp)
movl %r8d, 0x26c(%rsp)
movl %r9d, 0x268(%rsp)
movq 0x288(%rsp), %rax
vmovdqa (%rax), %xmm0
vmovdqa %xmm0, 0x1a0(%rsp)
movq 0x288(%rsp), %rax
vmovdqa 0x60(%rax), %xmm0
vmovdqa %xmm0, 0x190(%rsp)
movq 0x288(%rsp), %rax
vmovdqa 0x30(%rax), %xmm0
vmovdqa %xmm0, 0x180(%rsp)
movq 0x288(%rsp), %rax
vmovdqa 0x50(%rax), %xmm0
callq 0x1450
callq 0x1590
vmovdqa %xmm0, 0x170(%rsp)
vmovdqa 0x170(%rsp), %xmm0
callq 0x1450
vmovdqa %xmm0, 0x160(%rsp)
vmovdqa 0x190(%rsp), %xmm0
callq 0x1450
callq 0x1590
vmovdqa %xmm0, 0x1b0(%rsp)
callq 0x1450
vmovdqa %xmm0, 0x150(%rsp)
vmovdqa 0x1b0(%rsp), %xmm0
callq 0x1590
vmovdqa %xmm0, 0x1b0(%rsp)
callq 0x1450
vmovdqa %xmm0, 0x140(%rsp)
vmovdqa 0x190(%rsp), %xmm1
vmovdqa 0x160(%rsp), %xmm0
vmovdqa %xmm1, 0x950(%rsp)
vmovdqa %xmm0, 0x940(%rsp)
vmovdqa 0x950(%rsp), %xmm0
vpxor 0x940(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x1c0(%rsp)
movl 0x268(%rsp), %eax
shll $0x3, %eax
movl $0xf, %esi
movsbl %al, %edi
callq 0x1040
vmovdqa %xmm0, 0x1b0(%rsp)
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1b0(%rsp), %xmm0
vmovdqa %xmm1, 0x930(%rsp)
vmovdqa %xmm0, 0x920(%rsp)
vmovdqa 0x930(%rsp), %xmm0
vpxor 0x920(%rsp), %xmm0, %xmm0
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm3
vmovdqa 0x1c0(%rsp), %xmm4
callq 0x2b10
vmovdqa %xmm0, 0x1d0(%rsp)
vmovdqa 0x150(%rsp), %xmm0
vmovdqa %xmm0, 0x1c0(%rsp)
cmpl $0x10, 0x27c(%rsp)
jne 0x18cf
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x160(%rsp), %xmm0
vmovdqa %xmm1, 0x910(%rsp)
vmovdqa %xmm0, 0x900(%rsp)
vmovdqa 0x910(%rsp), %xmm0
vpxor 0x900(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x1c0(%rsp)
movq 0x280(%rsp), %rdi
callq 0x1380
movl $0x10, %edi
subl 0x27c(%rsp), %edi
callq 0x2bf0
vmovdqa %xmm0, 0x1b0(%rsp)
vmovdqa 0x1d0(%rsp), %xmm0
vmovaps %xmm0, 0x120(%rsp)
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1b0(%rsp), %xmm0
vmovdqa %xmm1, 0x8f0(%rsp)
vmovdqa %xmm0, 0x8e0(%rsp)
vmovdqa 0x8f0(%rsp), %xmm0
vpxor 0x8e0(%rsp), %xmm0, %xmm0
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm3
vmovdqa 0x1c0(%rsp), %xmm4
callq 0x2b10
vmovaps 0x120(%rsp), %xmm1
vmovdqa %xmm1, 0x8d0(%rsp)
vmovdqa %xmm0, 0x8c0(%rsp)
vmovdqa 0x8d0(%rsp), %xmm0
vpxor 0x8c0(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x1d0(%rsp)
cmpl $0x0, 0x26c(%rsp)
jne 0x1a47
vmovdqa 0x140(%rsp), %xmm0
vmovdqa %xmm0, 0x1c0(%rsp)
vmovdqa 0x1c0(%rsp), %xmm0
vmovaps %xmm0, 0x110(%rsp)
leaq 0x962a(%rip), %rdi      # 0xb000
addq $0x20, %rdi
callq 0x1380
vmovaps 0x110(%rsp), %xmm1
vmovdqa %xmm1, 0x8b0(%rsp)
vmovdqa %xmm0, 0x8a0(%rsp)
vmovdqa 0x8b0(%rsp), %xmm0
vpxor 0x8a0(%rsp), %xmm0, %xmm0
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm3
vmovdqa 0x1c0(%rsp), %xmm4
callq 0x2b10
movq 0x288(%rsp), %rax
vmovdqa %xmm0, 0x70(%rax)
jmp 0x2ace
cmpq $0x0, 0x270(%rsp)
je 0x2acc
vpxor %xmm0, %xmm0, %xmm0
vmovdqa %xmm0, 0x290(%rsp)
vmovdqa 0x290(%rsp), %xmm0
vmovdqa %xmm0, 0x130(%rsp)
vmovdqa 0x140(%rsp), %xmm1
vmovdqa 0x160(%rsp), %xmm0
vmovdqa %xmm1, 0x890(%rsp)
vmovdqa %xmm0, 0x880(%rsp)
vmovdqa 0x890(%rsp), %xmm0
vpxor 0x880(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x1c0(%rsp)
cmpl $0x80, 0x26c(%rsp)
jb 0x22d2
vmovdqa 0x1c0(%rsp), %xmm0
vmovdqa %xmm0, 0x250(%rsp)
vmovdqa 0x250(%rsp), %xmm1
movq 0x288(%rsp), %rax
vmovdqa 0x30(%rax), %xmm0
vmovdqa %xmm1, 0x870(%rsp)
vmovdqa %xmm0, 0x860(%rsp)
vmovdqa 0x870(%rsp), %xmm0
vpxor 0x860(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x240(%rsp)
vmovdqa 0x250(%rsp), %xmm1
movq 0x288(%rsp), %rax
vmovdqa 0x40(%rax), %xmm0
vmovdqa %xmm1, 0x850(%rsp)
vmovdqa %xmm0, 0x840(%rsp)
vmovdqa 0x850(%rsp), %xmm0
vpxor 0x840(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x230(%rsp)
vmovdqa 0x240(%rsp), %xmm1
movq 0x288(%rsp), %rax
vmovdqa 0x40(%rax), %xmm0
vmovdqa %xmm1, 0x830(%rsp)
vmovdqa %xmm0, 0x820(%rsp)
vmovdqa 0x830(%rsp), %xmm0
vpxor 0x820(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x220(%rsp)
vmovdqa 0x250(%rsp), %xmm1
movq 0x288(%rsp), %rax
vmovdqa 0x50(%rax), %xmm0
vmovdqa %xmm1, 0x810(%rsp)
vmovdqa %xmm0, 0x800(%rsp)
vmovdqa 0x810(%rsp), %xmm0
vpxor 0x800(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x210(%rsp)
vmovdqa 0x240(%rsp), %xmm1
movq 0x288(%rsp), %rax
vmovdqa 0x50(%rax), %xmm0
vmovdqa %xmm1, 0x7f0(%rsp)
vmovdqa %xmm0, 0x7e0(%rsp)
vmovdqa 0x7f0(%rsp), %xmm0
vpxor 0x7e0(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x200(%rsp)
vmovdqa 0x230(%rsp), %xmm1
movq 0x288(%rsp), %rax
vmovdqa 0x50(%rax), %xmm0
vmovdqa %xmm1, 0x7d0(%rsp)
vmovdqa %xmm0, 0x7c0(%rsp)
vmovdqa 0x7d0(%rsp), %xmm0
vpxor 0x7c0(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x1f0(%rsp)
vmovdqa 0x220(%rsp), %xmm1
movq 0x288(%rsp), %rax
vmovdqa 0x50(%rax), %xmm0
vmovdqa %xmm1, 0x7b0(%rsp)
vmovdqa %xmm0, 0x7a0(%rsp)
vmovdqa 0x7b0(%rsp), %xmm0
vpxor 0x7a0(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x1e0(%rsp)
vmovdqa 0x140(%rsp), %xmm0
vmovaps %xmm0, 0x80(%rsp)
vmovdqa 0x170(%rsp), %xmm0
callq 0x1590
vmovdqa %xmm0, 0x170(%rsp)
callq 0x1450
vmovaps 0x80(%rsp), %xmm1
vmovdqa %xmm1, 0x790(%rsp)
vmovdqa %xmm0, 0x780(%rsp)
vmovdqa 0x790(%rsp), %xmm0
vpxor 0x780(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x1c0(%rsp)
vmovdqa 0x130(%rsp), %xmm0
vmovaps %xmm0, 0x90(%rsp)
movq 0x270(%rsp), %rdi
callq 0x1380
vmovaps %xmm0, %xmm1
vmovdqa 0x250(%rsp), %xmm0
vmovdqa %xmm1, 0x770(%rsp)
vmovdqa %xmm0, 0x760(%rsp)
vmovdqa 0x770(%rsp), %xmm0
vpxor 0x760(%rsp), %xmm0, %xmm0
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm3
vmovdqa 0x250(%rsp), %xmm4
callq 0x2b10
vmovaps 0x90(%rsp), %xmm1
vmovdqa %xmm1, 0x750(%rsp)
vmovdqa %xmm0, 0x740(%rsp)
vmovdqa 0x750(%rsp), %xmm0
vpxor 0x740(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x130(%rsp)
vmovdqa 0x130(%rsp), %xmm0
vmovaps %xmm0, 0xa0(%rsp)
movq 0x270(%rsp), %rdi
addq $0x10, %rdi
callq 0x1380
vmovaps %xmm0, %xmm1
vmovdqa 0x240(%rsp), %xmm0
vmovdqa %xmm1, 0x730(%rsp)
vmovdqa %xmm0, 0x720(%rsp)
vmovdqa 0x730(%rsp), %xmm0
vpxor 0x720(%rsp), %xmm0, %xmm0
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm3
vmovdqa 0x240(%rsp), %xmm4
callq 0x2b10
vmovaps 0xa0(%rsp), %xmm1
vmovdqa %xmm1, 0x710(%rsp)
vmovdqa %xmm0, 0x700(%rsp)
vmovdqa 0x710(%rsp), %xmm0
vpxor 0x700(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x130(%rsp)
vmovdqa 0x130(%rsp), %xmm0
vmovaps %xmm0, 0xb0(%rsp)
movq 0x270(%rsp), %rdi
addq $0x20, %rdi
callq 0x1380
vmovaps %xmm0, %xmm1
vmovdqa 0x230(%rsp), %xmm0
vmovdqa %xmm1, 0x6f0(%rsp)
vmovdqa %xmm0, 0x6e0(%rsp)
vmovdqa 0x6f0(%rsp), %xmm0
vpxor 0x6e0(%rsp), %xmm0, %xmm0
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm3
vmovdqa 0x230(%rsp), %xmm4
callq 0x2b10
vmovaps 0xb0(%rsp), %xmm1
vmovdqa %xmm1, 0x6d0(%rsp)
vmovdqa %xmm0, 0x6c0(%rsp)
vmovdqa 0x6d0(%rsp), %xmm0
vpxor 0x6c0(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x130(%rsp)
vmovdqa 0x130(%rsp), %xmm0
vmovaps %xmm0, 0xc0(%rsp)
movq 0x270(%rsp), %rdi
addq $0x30, %rdi
callq 0x1380
vmovaps %xmm0, %xmm1
vmovdqa 0x220(%rsp), %xmm0
vmovdqa %xmm1, 0x6b0(%rsp)
vmovdqa %xmm0, 0x6a0(%rsp)
vmovdqa 0x6b0(%rsp), %xmm0
vpxor 0x6a0(%rsp), %xmm0, %xmm0
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm3
vmovdqa 0x220(%rsp), %xmm4
callq 0x2b10
vmovaps 0xc0(%rsp), %xmm1
vmovdqa %xmm1, 0x690(%rsp)
vmovdqa %xmm0, 0x680(%rsp)
vmovdqa 0x690(%rsp), %xmm0
vpxor 0x680(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x130(%rsp)
vmovdqa 0x130(%rsp), %xmm0
vmovaps %xmm0, 0xd0(%rsp)
movq 0x270(%rsp), %rdi
addq $0x40, %rdi
callq 0x1380
vmovaps %xmm0, %xmm1
vmovdqa 0x210(%rsp), %xmm0
vmovdqa %xmm1, 0x670(%rsp)
vmovdqa %xmm0, 0x660(%rsp)
vmovdqa 0x670(%rsp), %xmm0
vpxor 0x660(%rsp), %xmm0, %xmm0
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm3
vmovdqa 0x210(%rsp), %xmm4
callq 0x2b10
vmovaps 0xd0(%rsp), %xmm1
vmovdqa %xmm1, 0x650(%rsp)
vmovdqa %xmm0, 0x640(%rsp)
vmovdqa 0x650(%rsp), %xmm0
vpxor 0x640(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x130(%rsp)
vmovdqa 0x130(%rsp), %xmm0
vmovaps %xmm0, 0xe0(%rsp)
movq 0x270(%rsp), %rdi
addq $0x50, %rdi
callq 0x1380
vmovaps %xmm0, %xmm1
vmovdqa 0x200(%rsp), %xmm0
vmovdqa %xmm1, 0x630(%rsp)
vmovdqa %xmm0, 0x620(%rsp)
vmovdqa 0x630(%rsp), %xmm0
vpxor 0x620(%rsp), %xmm0, %xmm0
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm3
vmovdqa 0x200(%rsp), %xmm4
callq 0x2b10
vmovaps 0xe0(%rsp), %xmm1
vmovdqa %xmm1, 0x610(%rsp)
vmovdqa %xmm0, 0x600(%rsp)
vmovdqa 0x610(%rsp), %xmm0
vpxor 0x600(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x130(%rsp)
vmovdqa 0x130(%rsp), %xmm0
vmovaps %xmm0, 0xf0(%rsp)
movq 0x270(%rsp), %rdi
addq $0x60, %rdi
callq 0x1380
vmovaps %xmm0, %xmm1
vmovdqa 0x1f0(%rsp), %xmm0
vmovdqa %xmm1, 0x5f0(%rsp)
vmovdqa %xmm0, 0x5e0(%rsp)
vmovdqa 0x5f0(%rsp), %xmm0
vpxor 0x5e0(%rsp), %xmm0, %xmm0
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm3
vmovdqa 0x1f0(%rsp), %xmm4
callq 0x2b10
vmovaps 0xf0(%rsp), %xmm1
vmovdqa %xmm1, 0x5d0(%rsp)
vmovdqa %xmm0, 0x5c0(%rsp)
vmovdqa 0x5d0(%rsp), %xmm0
vpxor 0x5c0(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x130(%rsp)
vmovdqa 0x130(%rsp), %xmm0
vmovaps %xmm0, 0x100(%rsp)
movq 0x270(%rsp), %rdi
addq $0x70, %rdi
callq 0x1380
vmovaps %xmm0, %xmm1
vmovdqa 0x1e0(%rsp), %xmm0
vmovdqa %xmm1, 0x5b0(%rsp)
vmovdqa %xmm0, 0x5a0(%rsp)
vmovdqa 0x5b0(%rsp), %xmm0
vpxor 0x5a0(%rsp), %xmm0, %xmm0
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm3
vmovdqa 0x1e0(%rsp), %xmm4
callq 0x2b10
vmovaps 0x100(%rsp), %xmm1
vmovdqa %xmm1, 0x590(%rsp)
vmovdqa %xmm0, 0x580(%rsp)
vmovdqa 0x590(%rsp), %xmm0
vpxor 0x580(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x130(%rsp)
movl 0x26c(%rsp), %eax
subl $0x80, %eax
movl %eax, 0x26c(%rsp)
movq 0x270(%rsp), %rax
addq $0x80, %rax
movq %rax, 0x270(%rsp)
jmp 0x1ab4
cmpl $0x40, 0x26c(%rsp)
jb 0x26d3
vmovdqa 0x1c0(%rsp), %xmm0
vmovdqa %xmm0, 0x250(%rsp)
vmovdqa 0x250(%rsp), %xmm1
movq 0x288(%rsp), %rax
vmovdqa 0x30(%rax), %xmm0
vmovdqa %xmm1, 0x570(%rsp)
vmovdqa %xmm0, 0x560(%rsp)
vmovdqa 0x570(%rsp), %xmm0
vpxor 0x560(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x240(%rsp)
vmovdqa 0x250(%rsp), %xmm1
movq 0x288(%rsp), %rax
vmovdqa 0x40(%rax), %xmm0
vmovdqa %xmm1, 0x550(%rsp)
vmovdqa %xmm0, 0x540(%rsp)
vmovdqa 0x550(%rsp), %xmm0
vpxor 0x540(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x230(%rsp)
vmovdqa 0x240(%rsp), %xmm1
movq 0x288(%rsp), %rax
vmovdqa 0x40(%rax), %xmm0
vmovdqa %xmm1, 0x530(%rsp)
vmovdqa %xmm0, 0x520(%rsp)
vmovdqa 0x530(%rsp), %xmm0
vpxor 0x520(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x220(%rsp)
vmovdqa 0x250(%rsp), %xmm1
movq 0x288(%rsp), %rax
vmovdqa 0x50(%rax), %xmm0
vmovdqa %xmm1, 0x510(%rsp)
vmovdqa %xmm0, 0x500(%rsp)
vmovdqa 0x510(%rsp), %xmm0
vpxor 0x500(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x1c0(%rsp)
vmovdqa 0x130(%rsp), %xmm0
vmovaps %xmm0, 0x40(%rsp)
movq 0x270(%rsp), %rdi
callq 0x1380
vmovaps %xmm0, %xmm1
vmovdqa 0x250(%rsp), %xmm0
vmovdqa %xmm1, 0x4f0(%rsp)
vmovdqa %xmm0, 0x4e0(%rsp)
vmovdqa 0x4f0(%rsp), %xmm0
vpxor 0x4e0(%rsp), %xmm0, %xmm0
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm3
vmovdqa 0x250(%rsp), %xmm4
callq 0x2b10
vmovaps 0x40(%rsp), %xmm1
vmovdqa %xmm1, 0x4d0(%rsp)
vmovdqa %xmm0, 0x4c0(%rsp)
vmovdqa 0x4d0(%rsp), %xmm0
vpxor 0x4c0(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x130(%rsp)
vmovdqa 0x130(%rsp), %xmm0
vmovaps %xmm0, 0x50(%rsp)
movq 0x270(%rsp), %rdi
addq $0x10, %rdi
callq 0x1380
vmovaps %xmm0, %xmm1
vmovdqa 0x240(%rsp), %xmm0
vmovdqa %xmm1, 0x4b0(%rsp)
vmovdqa %xmm0, 0x4a0(%rsp)
vmovdqa 0x4b0(%rsp), %xmm0
vpxor 0x4a0(%rsp), %xmm0, %xmm0
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm3
vmovdqa 0x240(%rsp), %xmm4
callq 0x2b10
vmovaps 0x50(%rsp), %xmm1
vmovdqa %xmm1, 0x490(%rsp)
vmovdqa %xmm0, 0x480(%rsp)
vmovdqa 0x490(%rsp), %xmm0
vpxor 0x480(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x130(%rsp)
vmovdqa 0x130(%rsp), %xmm0
vmovaps %xmm0, 0x60(%rsp)
movq 0x270(%rsp), %rdi
addq $0x20, %rdi
callq 0x1380
vmovaps %xmm0, %xmm1
vmovdqa 0x230(%rsp), %xmm0
vmovdqa %xmm1, 0x470(%rsp)
vmovdqa %xmm0, 0x460(%rsp)
vmovdqa 0x470(%rsp), %xmm0
vpxor 0x460(%rsp), %xmm0, %xmm0
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm3
vmovdqa 0x230(%rsp), %xmm4
callq 0x2b10
vmovaps 0x60(%rsp), %xmm1
vmovdqa %xmm1, 0x450(%rsp)
vmovdqa %xmm0, 0x440(%rsp)
vmovdqa 0x450(%rsp), %xmm0
vpxor 0x440(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x130(%rsp)
vmovdqa 0x130(%rsp), %xmm0
vmovaps %xmm0, 0x70(%rsp)
movq 0x270(%rsp), %rdi
addq $0x30, %rdi
callq 0x1380
vmovaps %xmm0, %xmm1
vmovdqa 0x220(%rsp), %xmm0
vmovdqa %xmm1, 0x430(%rsp)
vmovdqa %xmm0, 0x420(%rsp)
vmovdqa 0x430(%rsp), %xmm0
vpxor 0x420(%rsp), %xmm0, %xmm0
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm3
vmovdqa 0x220(%rsp), %xmm4
callq 0x2b10
vmovaps 0x70(%rsp), %xmm1
vmovdqa %xmm1, 0x410(%rsp)
vmovdqa %xmm0, 0x400(%rsp)
vmovdqa 0x410(%rsp), %xmm0
vpxor 0x400(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x130(%rsp)
movl 0x26c(%rsp), %eax
subl $0x40, %eax
movl %eax, 0x26c(%rsp)
movq 0x270(%rsp), %rax
addq $0x40, %rax
movq %rax, 0x270(%rsp)
cmpl $0x20, 0x26c(%rsp)
jb 0x28f4
vmovdqa 0x1c0(%rsp), %xmm0
vmovdqa %xmm0, 0x250(%rsp)
vmovdqa 0x250(%rsp), %xmm1
movq 0x288(%rsp), %rax
vmovdqa 0x30(%rax), %xmm0
vmovdqa %xmm1, 0x3f0(%rsp)
vmovdqa %xmm0, 0x3e0(%rsp)
vmovdqa 0x3f0(%rsp), %xmm0
vpxor 0x3e0(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x240(%rsp)
vmovdqa 0x250(%rsp), %xmm1
movq 0x288(%rsp), %rax
vmovdqa 0x40(%rax), %xmm0
vmovdqa %xmm1, 0x3d0(%rsp)
vmovdqa %xmm0, 0x3c0(%rsp)
vmovdqa 0x3d0(%rsp), %xmm0
vpxor 0x3c0(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x1c0(%rsp)
vmovdqa 0x130(%rsp), %xmm0
vmovaps %xmm0, 0x20(%rsp)
movq 0x270(%rsp), %rdi
callq 0x1380
vmovaps %xmm0, %xmm1
vmovdqa 0x250(%rsp), %xmm0
vmovdqa %xmm1, 0x3b0(%rsp)
vmovdqa %xmm0, 0x3a0(%rsp)
vmovdqa 0x3b0(%rsp), %xmm0
vpxor 0x3a0(%rsp), %xmm0, %xmm0
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm3
vmovdqa 0x250(%rsp), %xmm4
callq 0x2b10
vmovaps 0x20(%rsp), %xmm1
vmovdqa %xmm1, 0x390(%rsp)
vmovdqa %xmm0, 0x380(%rsp)
vmovdqa 0x390(%rsp), %xmm0
vpxor 0x380(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x130(%rsp)
vmovdqa 0x130(%rsp), %xmm0
vmovaps %xmm0, 0x30(%rsp)
movq 0x270(%rsp), %rdi
addq $0x10, %rdi
callq 0x1380
vmovaps %xmm0, %xmm1
vmovdqa 0x240(%rsp), %xmm0
vmovdqa %xmm1, 0x370(%rsp)
vmovdqa %xmm0, 0x360(%rsp)
vmovdqa 0x370(%rsp), %xmm0
vpxor 0x360(%rsp), %xmm0, %xmm0
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm3
vmovdqa 0x240(%rsp), %xmm4
callq 0x2b10
vmovaps 0x30(%rsp), %xmm1
vmovdqa %xmm1, 0x350(%rsp)
vmovdqa %xmm0, 0x340(%rsp)
vmovdqa 0x350(%rsp), %xmm0
vpxor 0x340(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x130(%rsp)
movl 0x26c(%rsp), %eax
subl $0x20, %eax
movl %eax, 0x26c(%rsp)
movq 0x270(%rsp), %rax
addq $0x20, %rax
movq %rax, 0x270(%rsp)
cmpl $0x10, 0x26c(%rsp)
jb 0x29e2
vmovdqa 0x1c0(%rsp), %xmm0
vmovdqa %xmm0, 0x250(%rsp)
vmovdqa 0x130(%rsp), %xmm0
vmovaps %xmm0, 0x10(%rsp)
movq 0x270(%rsp), %rdi
callq 0x1380
vmovaps %xmm0, %xmm1
vmovdqa 0x250(%rsp), %xmm0
vmovdqa %xmm1, 0x330(%rsp)
vmovdqa %xmm0, 0x320(%rsp)
vmovdqa 0x330(%rsp), %xmm0
vpxor 0x320(%rsp), %xmm0, %xmm0
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm3
vmovdqa 0x250(%rsp), %xmm4
callq 0x2b10
vmovaps 0x10(%rsp), %xmm1
vmovdqa %xmm1, 0x310(%rsp)
vmovdqa %xmm0, 0x300(%rsp)
vmovdqa 0x310(%rsp), %xmm0
vpxor 0x300(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x130(%rsp)
movl 0x26c(%rsp), %eax
subl $0x10, %eax
movl %eax, 0x26c(%rsp)
movq 0x270(%rsp), %rax
addq $0x10, %rax
movq %rax, 0x270(%rsp)
cmpl $0x0, 0x26c(%rsp)
je 0x2ab6
movq 0x270(%rsp), %rdi
callq 0x1380
movl $0x10, %edi
subl 0x26c(%rsp), %edi
callq 0x2bf0
vmovdqa %xmm0, 0x1b0(%rsp)
vmovdqa 0x130(%rsp), %xmm0
vmovaps %xmm0, (%rsp)
vmovdqa 0x1b0(%rsp), %xmm1
vmovdqa 0x140(%rsp), %xmm0
vmovdqa %xmm1, 0x2f0(%rsp)
vmovdqa %xmm0, 0x2e0(%rsp)
vmovdqa 0x2f0(%rsp), %xmm0
vpxor 0x2e0(%rsp), %xmm0, %xmm0
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm3
vmovdqa 0x140(%rsp), %xmm4
callq 0x2b10
vmovaps (%rsp), %xmm1
vmovdqa %xmm1, 0x2d0(%rsp)
vmovdqa %xmm0, 0x2c0(%rsp)
vmovdqa 0x2d0(%rsp), %xmm0
vpxor 0x2c0(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x130(%rsp)
vmovdqa 0x130(%rsp), %xmm0
movq 0x288(%rsp), %rax
vmovdqa %xmm0, 0x70(%rax)
jmp 0x2ace
vmovdqa 0x1d0(%rsp), %xmm1
movq 0x288(%rsp), %rax
vmovdqa 0x70(%rax), %xmm0
vmovdqa %xmm1, 0x2b0(%rsp)
vmovdqa %xmm0, 0x2a0(%rsp)
vmovdqa 0x2b0(%rsp), %xmm0
vpxor 0x2a0(%rsp), %xmm0, %xmm0
addq $0x968, %rsp            # imm = 0x968
retq