// File: /workspace/github_c_makefile_star2_O0/mjosaarinen[P]brutus/crypto_aead/aezv3/aesni/aez_ni.c
// Function: aez_hash
__m128i aez_hash(aez_ctx_t *ctx, char *n, unsigned nbytes, char *ad,
                     unsigned adbytes, unsigned abytes) {
    __m128i o0, o1, o2, o3, o4, o5, o6, o7, sum, offset, tmp1, tmp2;
    __m128i I=ctx->I, L=ctx->L, J=ctx->J[0], J8=ctx->J[3], J16=ctx->J[4];
    __m128i J24 = vxor(J16,J8);

    /* Process abytes and nonce */
    tmp1 = vxor4(_mm_insert_epi8(zero,(int)(8*abytes),15), J, L, J8);
    tmp2 = vxor(one_zero_pad(load_partial(n,nbytes),16-nbytes), J16);
    if (nbytes==16) tmp2 = vxor3(tmp2, J, L);
    sum = aes4(tmp1,I,J,L,zero);
    sum = vxor(sum, aes4(tmp2,I,J,L,zero));

    if (adbytes==0) ctx->delta3_cache = aes4(vxor(loadu(pad+32),J24),I,J,L,zero);
    else if (ad) {
        __m128i delta3 = zero, Lfordoubling = bswap16(L);
        offset = vxor(L, J24);
        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(bswap16(Lfordoubling = double_block(Lfordoubling)),J24);
            delta3 = vxor(delta3, aes4(vxor(load(ad+  0),o1), I, J, L, zero));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 16),o2), I, J, L, zero));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 32),o3), I, J, L, zero));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 48),o4), I, J, L, zero));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 64),o5), I, J, L, zero));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 80),o6), I, J, L, zero));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 96),o7), I, J, L, zero));
            delta3 = vxor(delta3, aes4(vxor(load(ad+112),o0), I, J, L, zero));
            adbytes-=8*16; ad+=8*16;
        }
        if (adbytes >= 4*16) {
            o1 = vxor(offset,ctx->J[0]);
            o2 = vxor(offset,ctx->J[1]);
            o3 = vxor(o1,ctx->J[1]);
            o4 = offset = vxor(offset,ctx->J[2]);
            delta3 = vxor(delta3, aes4(vxor(load(ad+  0),o1), I, J, L, zero));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 16),o2), I, J, L, zero));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 32),o3), I, J, L, zero));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 48),o4), I, J, L, zero));
            adbytes-=4*16; ad+=4*16;
        }
        if (adbytes >= 2*16) {
            o1 = vxor(offset,ctx->J[0]);
            o2 = offset = vxor(offset,ctx->J[1]);
            delta3 = vxor(delta3, aes4(vxor(load(ad+  0),o1), I, J, L, zero));
            delta3 = vxor(delta3, aes4(vxor(load(ad+ 16),o2), I, J, L, zero));
            adbytes-=2*16; ad+=2*16;
        }
        if (adbytes >= 1*16) {
            o1 = offset = vxor(offset,ctx->J[0]);
            delta3 = vxor(delta3, aes4(vxor(load(ad+  0),o1), I, J, L, zero));
            adbytes-=1*16; ad+=1*16;
        }
        if (adbytes) {
            __m128i tmp = one_zero_pad(load(ad),16-adbytes);
            delta3 = aes4(vxor(tmp,J24), I, J, L, delta3);
        }
        ctx->delta3_cache = delta3;
    }
    return vxor(sum,ctx->delta3_cache);
}

// Assembly:
subq $0xb28, %rsp            # imm = 0xB28
movq %rdi, 0x2b8(%rsp)
movq %rsi, 0x2b0(%rsp)
movl %edx, 0x2ac(%rsp)
movq %rcx, 0x2a0(%rsp)
movl %r8d, 0x29c(%rsp)
movl %r9d, 0x298(%rsp)
movq 0x2b8(%rsp), %rax
vmovdqa (%rax), %xmm0
vmovdqa %xmm0, 0x1c0(%rsp)
movq 0x2b8(%rsp), %rax
vmovdqa 0x10(%rax), %xmm0
vmovdqa %xmm0, 0x1b0(%rsp)
movq 0x2b8(%rsp), %rax
vmovdqa 0x20(%rax), %xmm0
vmovdqa %xmm0, 0x1a0(%rsp)
movq 0x2b8(%rsp), %rax
vmovdqa 0x50(%rax), %xmm0
vmovdqa %xmm0, 0x190(%rsp)
movq 0x2b8(%rsp), %rax
vmovdqa 0x60(%rax), %xmm0
vmovdqa %xmm0, 0x180(%rsp)
vmovdqa 0x180(%rsp), %xmm1
vmovdqa 0x190(%rsp), %xmm0
vmovdqa %xmm1, 0x9d0(%rsp)
vmovdqa %xmm0, 0x9c0(%rsp)
vmovdqa 0x9d0(%rsp), %xmm0
vmovdqa 0x9c0(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x170(%rsp)
vpxor %xmm0, %xmm0, %xmm0
vmovdqa %xmm0, 0xb10(%rsp)
vmovdqa 0xb10(%rsp), %xmm0
movb 0x298(%rsp), %cl
shlb $0x3, %cl
movb %cl, %al
vpinsrb $0xf, %eax, %xmm0, %xmm1
vmovdqa 0x1a0(%rsp), %xmm0
vmovdqa %xmm1, 0x9b0(%rsp)
vmovdqa %xmm0, 0x9a0(%rsp)
vmovdqa 0x9b0(%rsp), %xmm0
vpxor 0x9a0(%rsp), %xmm0, %xmm1
vmovdqa 0x1b0(%rsp), %xmm2
vmovdqa 0x190(%rsp), %xmm0
vmovdqa %xmm2, 0x990(%rsp)
vmovdqa %xmm0, 0x980(%rsp)
vmovdqa 0x990(%rsp), %xmm0
vpxor 0x980(%rsp), %xmm0, %xmm0
vmovdqa %xmm1, 0x970(%rsp)
vmovdqa %xmm0, 0x960(%rsp)
vmovdqa 0x970(%rsp), %xmm0
vpxor 0x960(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x1e0(%rsp)
movq 0x2b0(%rsp), %rdi
movl 0x2ac(%rsp), %esi
callq 0x2870
movl $0x10, %edi
subl 0x2ac(%rsp), %edi
callq 0x27f0
vmovaps %xmm0, %xmm1
vmovdqa 0x180(%rsp), %xmm0
vmovdqa %xmm1, 0x950(%rsp)
vmovdqa %xmm0, 0x940(%rsp)
vmovdqa 0x950(%rsp), %xmm0
vpxor 0x940(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x1d0(%rsp)
cmpl $0x10, 0x2ac(%rsp)
jne 0x2dc3
vmovdqa 0x1d0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm0
vmovdqa %xmm1, 0x930(%rsp)
vmovdqa %xmm0, 0x920(%rsp)
vmovdqa 0x930(%rsp), %xmm0
vpxor 0x920(%rsp), %xmm0, %xmm1
vmovdqa 0x1b0(%rsp), %xmm0
vmovdqa %xmm1, 0x910(%rsp)
vmovdqa %xmm0, 0x900(%rsp)
vmovdqa 0x910(%rsp), %xmm0
vpxor 0x900(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x1d0(%rsp)
vmovdqa 0x1e0(%rsp), %xmm0
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x1b0(%rsp), %xmm3
vpxor %xmm4, %xmm4, %xmm4
vmovaps %xmm4, 0x120(%rsp)
vmovdqa %xmm4, 0xb00(%rsp)
vmovdqa 0xb00(%rsp), %xmm4
callq 0x2710
vmovaps 0x120(%rsp), %xmm4
vmovdqa %xmm0, 0x200(%rsp)
vmovdqa 0x200(%rsp), %xmm0
vmovaps %xmm0, 0x130(%rsp)
vmovdqa 0x1d0(%rsp), %xmm0
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x1b0(%rsp), %xmm3
vmovdqa %xmm4, 0xaf0(%rsp)
vmovdqa 0xaf0(%rsp), %xmm4
callq 0x2710
vmovaps 0x130(%rsp), %xmm1
vmovdqa %xmm1, 0x8f0(%rsp)
vmovdqa %xmm0, 0x8e0(%rsp)
vmovdqa 0x8f0(%rsp), %xmm0
vpxor 0x8e0(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x200(%rsp)
cmpl $0x0, 0x29c(%rsp)
jne 0x2f37
leaq 0x916b(%rip), %rdi      # 0xc020
callq 0x41b0
vmovaps %xmm0, %xmm1
vmovdqa 0x170(%rsp), %xmm0
vmovdqa %xmm1, 0x8d0(%rsp)
vmovdqa %xmm0, 0x8c0(%rsp)
vmovdqa 0x8d0(%rsp), %xmm0
vmovdqa 0x8c0(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x1b0(%rsp), %xmm3
vpxor %xmm4, %xmm4, %xmm4
vmovdqa %xmm4, 0xae0(%rsp)
vmovdqa 0xae0(%rsp), %xmm4
callq 0x2710
movq 0x2b8(%rsp), %rax
vmovdqa %xmm0, 0x70(%rax)
jmp 0x4163
cmpq $0x0, 0x2a0(%rsp)
je 0x4161
vpxor %xmm0, %xmm0, %xmm0
vmovdqa %xmm0, 0xad0(%rsp)
vmovdqa 0xad0(%rsp), %xmm0
vmovdqa %xmm0, 0x160(%rsp)
vmovdqa 0x1b0(%rsp), %xmm0
callq 0x28f0
vmovdqa %xmm0, 0x150(%rsp)
vmovdqa 0x1b0(%rsp), %xmm1
vmovdqa 0x170(%rsp), %xmm0
vmovdqa %xmm1, 0x8b0(%rsp)
vmovdqa %xmm0, 0x8a0(%rsp)
vmovdqa 0x8b0(%rsp), %xmm0
vpxor 0x8a0(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x1f0(%rsp)
cmpl $0x80, 0x29c(%rsp)
jb 0x38bb
vmovdqa 0x1f0(%rsp), %xmm0
vmovdqa %xmm0, 0x280(%rsp)
vmovdqa 0x280(%rsp), %xmm1
movq 0x2b8(%rsp), %rax
vmovdqa 0x20(%rax), %xmm0
vmovdqa %xmm1, 0x890(%rsp)
vmovdqa %xmm0, 0x880(%rsp)
vmovdqa 0x890(%rsp), %xmm0
vmovdqa 0x880(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x270(%rsp)
vmovdqa 0x280(%rsp), %xmm1
movq 0x2b8(%rsp), %rax
vmovdqa 0x30(%rax), %xmm0
vmovdqa %xmm1, 0x870(%rsp)
vmovdqa %xmm0, 0x860(%rsp)
vmovdqa 0x870(%rsp), %xmm0
vmovdqa 0x860(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x260(%rsp)
vmovdqa 0x270(%rsp), %xmm1
movq 0x2b8(%rsp), %rax
vmovdqa 0x30(%rax), %xmm0
vmovdqa %xmm1, 0x850(%rsp)
vmovdqa %xmm0, 0x840(%rsp)
vmovdqa 0x850(%rsp), %xmm0
vmovdqa 0x840(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x250(%rsp)
vmovdqa 0x280(%rsp), %xmm1
movq 0x2b8(%rsp), %rax
vmovdqa 0x40(%rax), %xmm0
vmovdqa %xmm1, 0x830(%rsp)
vmovdqa %xmm0, 0x820(%rsp)
vmovdqa 0x830(%rsp), %xmm0
vmovdqa 0x820(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x240(%rsp)
vmovdqa 0x270(%rsp), %xmm1
movq 0x2b8(%rsp), %rax
vmovdqa 0x40(%rax), %xmm0
vmovdqa %xmm1, 0x810(%rsp)
vmovdqa %xmm0, 0x800(%rsp)
vmovdqa 0x810(%rsp), %xmm0
vmovdqa 0x800(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x230(%rsp)
vmovdqa 0x260(%rsp), %xmm1
movq 0x2b8(%rsp), %rax
vmovdqa 0x40(%rax), %xmm0
vmovdqa %xmm1, 0x7f0(%rsp)
vmovdqa %xmm0, 0x7e0(%rsp)
vmovdqa 0x7f0(%rsp), %xmm0
vmovdqa 0x7e0(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x220(%rsp)
vmovdqa 0x250(%rsp), %xmm1
movq 0x2b8(%rsp), %rax
vmovdqa 0x40(%rax), %xmm0
vmovdqa %xmm1, 0x7d0(%rsp)
vmovdqa %xmm0, 0x7c0(%rsp)
vmovdqa 0x7d0(%rsp), %xmm0
vmovdqa 0x7c0(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x210(%rsp)
vmovdqa 0x150(%rsp), %xmm0
callq 0x2a30
vmovdqa %xmm0, 0x150(%rsp)
callq 0x28f0
vmovaps %xmm0, %xmm1
vmovdqa 0x170(%rsp), %xmm0
vmovdqa %xmm1, 0x7b0(%rsp)
vmovdqa %xmm0, 0x7a0(%rsp)
vmovdqa 0x7b0(%rsp), %xmm0
vmovdqa 0x7a0(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x1f0(%rsp)
vmovdqa 0x160(%rsp), %xmm0
vmovaps %xmm0, 0x90(%rsp)
movq 0x2a0(%rsp), %rdi
callq 0x26f0
vmovaps %xmm0, %xmm1
vmovdqa 0x270(%rsp), %xmm0
vmovdqa %xmm1, 0x790(%rsp)
vmovdqa %xmm0, 0x780(%rsp)
vmovdqa 0x790(%rsp), %xmm0
vmovdqa 0x780(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x1b0(%rsp), %xmm3
vpxor %xmm4, %xmm4, %xmm4
vmovaps %xmm4, 0x100(%rsp)
vmovdqa %xmm4, 0xac0(%rsp)
vmovdqa 0xac0(%rsp), %xmm4
callq 0x2710
vmovaps 0x90(%rsp), %xmm1
vmovdqa %xmm1, 0x770(%rsp)
vmovdqa %xmm0, 0x760(%rsp)
vmovdqa 0x770(%rsp), %xmm0
vmovdqa 0x760(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x160(%rsp)
vmovdqa 0x160(%rsp), %xmm0
vmovaps %xmm0, 0xa0(%rsp)
movq 0x2a0(%rsp), %rdi
addq $0x10, %rdi
callq 0x26f0
vmovaps 0x100(%rsp), %xmm4
vmovaps %xmm0, %xmm1
vmovdqa 0x260(%rsp), %xmm0
vmovdqa %xmm1, 0x750(%rsp)
vmovdqa %xmm0, 0x740(%rsp)
vmovdqa 0x750(%rsp), %xmm0
vmovdqa 0x740(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x1b0(%rsp), %xmm3
vmovdqa %xmm4, 0xab0(%rsp)
vmovdqa 0xab0(%rsp), %xmm4
callq 0x2710
vmovaps 0xa0(%rsp), %xmm1
vmovdqa %xmm1, 0x730(%rsp)
vmovdqa %xmm0, 0x720(%rsp)
vmovdqa 0x730(%rsp), %xmm0
vmovdqa 0x720(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x160(%rsp)
vmovdqa 0x160(%rsp), %xmm0
vmovaps %xmm0, 0xb0(%rsp)
movq 0x2a0(%rsp), %rdi
addq $0x20, %rdi
callq 0x26f0
vmovaps 0x100(%rsp), %xmm4
vmovaps %xmm0, %xmm1
vmovdqa 0x250(%rsp), %xmm0
vmovdqa %xmm1, 0x710(%rsp)
vmovdqa %xmm0, 0x700(%rsp)
vmovdqa 0x710(%rsp), %xmm0
vmovdqa 0x700(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x1b0(%rsp), %xmm3
vmovdqa %xmm4, 0xaa0(%rsp)
vmovdqa 0xaa0(%rsp), %xmm4
callq 0x2710
vmovaps 0xb0(%rsp), %xmm1
vmovdqa %xmm1, 0x6f0(%rsp)
vmovdqa %xmm0, 0x6e0(%rsp)
vmovdqa 0x6f0(%rsp), %xmm0
vmovdqa 0x6e0(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x160(%rsp)
vmovdqa 0x160(%rsp), %xmm0
vmovaps %xmm0, 0xc0(%rsp)
movq 0x2a0(%rsp), %rdi
addq $0x30, %rdi
callq 0x26f0
vmovaps 0x100(%rsp), %xmm4
vmovaps %xmm0, %xmm1
vmovdqa 0x240(%rsp), %xmm0
vmovdqa %xmm1, 0x6d0(%rsp)
vmovdqa %xmm0, 0x6c0(%rsp)
vmovdqa 0x6d0(%rsp), %xmm0
vmovdqa 0x6c0(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x1b0(%rsp), %xmm3
vmovdqa %xmm4, 0xa90(%rsp)
vmovdqa 0xa90(%rsp), %xmm4
callq 0x2710
vmovaps 0xc0(%rsp), %xmm1
vmovdqa %xmm1, 0x6b0(%rsp)
vmovdqa %xmm0, 0x6a0(%rsp)
vmovdqa 0x6b0(%rsp), %xmm0
vmovdqa 0x6a0(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x160(%rsp)
vmovdqa 0x160(%rsp), %xmm0
vmovaps %xmm0, 0xd0(%rsp)
movq 0x2a0(%rsp), %rdi
addq $0x40, %rdi
callq 0x26f0
vmovaps 0x100(%rsp), %xmm4
vmovaps %xmm0, %xmm1
vmovdqa 0x230(%rsp), %xmm0
vmovdqa %xmm1, 0x690(%rsp)
vmovdqa %xmm0, 0x680(%rsp)
vmovdqa 0x690(%rsp), %xmm0
vmovdqa 0x680(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x1b0(%rsp), %xmm3
vmovdqa %xmm4, 0xa80(%rsp)
vmovdqa 0xa80(%rsp), %xmm4
callq 0x2710
vmovaps 0xd0(%rsp), %xmm1
vmovdqa %xmm1, 0x670(%rsp)
vmovdqa %xmm0, 0x660(%rsp)
vmovdqa 0x670(%rsp), %xmm0
vmovdqa 0x660(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x160(%rsp)
vmovdqa 0x160(%rsp), %xmm0
vmovaps %xmm0, 0xe0(%rsp)
movq 0x2a0(%rsp), %rdi
addq $0x50, %rdi
callq 0x26f0
vmovaps 0x100(%rsp), %xmm4
vmovaps %xmm0, %xmm1
vmovdqa 0x220(%rsp), %xmm0
vmovdqa %xmm1, 0x650(%rsp)
vmovdqa %xmm0, 0x640(%rsp)
vmovdqa 0x650(%rsp), %xmm0
vmovdqa 0x640(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x1b0(%rsp), %xmm3
vmovdqa %xmm4, 0xa70(%rsp)
vmovdqa 0xa70(%rsp), %xmm4
callq 0x2710
vmovaps 0xe0(%rsp), %xmm1
vmovdqa %xmm1, 0x630(%rsp)
vmovdqa %xmm0, 0x620(%rsp)
vmovdqa 0x630(%rsp), %xmm0
vmovdqa 0x620(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x160(%rsp)
vmovdqa 0x160(%rsp), %xmm0
vmovaps %xmm0, 0xf0(%rsp)
movq 0x2a0(%rsp), %rdi
addq $0x60, %rdi
callq 0x26f0
vmovaps 0x100(%rsp), %xmm4
vmovaps %xmm0, %xmm1
vmovdqa 0x210(%rsp), %xmm0
vmovdqa %xmm1, 0x610(%rsp)
vmovdqa %xmm0, 0x600(%rsp)
vmovdqa 0x610(%rsp), %xmm0
vmovdqa 0x600(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x1b0(%rsp), %xmm3
vmovdqa %xmm4, 0xa60(%rsp)
vmovdqa 0xa60(%rsp), %xmm4
callq 0x2710
vmovaps 0xf0(%rsp), %xmm1
vmovdqa %xmm1, 0x5f0(%rsp)
vmovdqa %xmm0, 0x5e0(%rsp)
vmovdqa 0x5f0(%rsp), %xmm0
vmovdqa 0x5e0(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x160(%rsp)
vmovdqa 0x160(%rsp), %xmm0
vmovaps %xmm0, 0x110(%rsp)
movq 0x2a0(%rsp), %rdi
addq $0x70, %rdi
callq 0x26f0
vmovaps 0x100(%rsp), %xmm4
vmovaps %xmm0, %xmm1
vmovdqa 0x280(%rsp), %xmm0
vmovdqa %xmm1, 0x5d0(%rsp)
vmovdqa %xmm0, 0x5c0(%rsp)
vmovdqa 0x5d0(%rsp), %xmm0
vmovdqa 0x5c0(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x1b0(%rsp), %xmm3
vmovdqa %xmm4, 0xa50(%rsp)
vmovdqa 0xa50(%rsp), %xmm4
callq 0x2710
vmovaps 0x110(%rsp), %xmm1
vmovdqa %xmm1, 0x5b0(%rsp)
vmovdqa %xmm0, 0x5a0(%rsp)
vmovdqa 0x5b0(%rsp), %xmm0
vpxor 0x5a0(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x160(%rsp)
movl 0x29c(%rsp), %eax
subl $0x80, %eax
movl %eax, 0x29c(%rsp)
movq 0x2a0(%rsp), %rax
addq $0x80, %rax
movq %rax, 0x2a0(%rsp)
jmp 0x2fbb
cmpl $0x40, 0x29c(%rsp)
jb 0x3d25
vmovdqa 0x1f0(%rsp), %xmm1
movq 0x2b8(%rsp), %rax
vmovdqa 0x20(%rax), %xmm0
vmovdqa %xmm1, 0x590(%rsp)
vmovdqa %xmm0, 0x580(%rsp)
vmovdqa 0x590(%rsp), %xmm0
vmovdqa 0x580(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x270(%rsp)
vmovdqa 0x1f0(%rsp), %xmm1
movq 0x2b8(%rsp), %rax
vmovdqa 0x30(%rax), %xmm0
vmovdqa %xmm1, 0x570(%rsp)
vmovdqa %xmm0, 0x560(%rsp)
vmovdqa 0x570(%rsp), %xmm0
vmovdqa 0x560(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x260(%rsp)
vmovdqa 0x270(%rsp), %xmm1
movq 0x2b8(%rsp), %rax
vmovdqa 0x30(%rax), %xmm0
vmovdqa %xmm1, 0x550(%rsp)
vmovdqa %xmm0, 0x540(%rsp)
vmovdqa 0x550(%rsp), %xmm0
vmovdqa 0x540(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x250(%rsp)
vmovdqa 0x1f0(%rsp), %xmm1
movq 0x2b8(%rsp), %rax
vmovdqa 0x40(%rax), %xmm0
vmovdqa %xmm1, 0x530(%rsp)
vmovdqa %xmm0, 0x520(%rsp)
vmovdqa 0x530(%rsp), %xmm0
vmovdqa 0x520(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x1f0(%rsp)
vmovdqa %xmm0, 0x240(%rsp)
vmovdqa 0x160(%rsp), %xmm0
vmovaps %xmm0, 0x40(%rsp)
movq 0x2a0(%rsp), %rdi
callq 0x26f0
vmovaps %xmm0, %xmm1
vmovdqa 0x270(%rsp), %xmm0
vmovdqa %xmm1, 0x510(%rsp)
vmovdqa %xmm0, 0x500(%rsp)
vmovdqa 0x510(%rsp), %xmm0
vmovdqa 0x500(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x1b0(%rsp), %xmm3
vpxor %xmm4, %xmm4, %xmm4
vmovaps %xmm4, 0x70(%rsp)
vmovdqa %xmm4, 0xa40(%rsp)
vmovdqa 0xa40(%rsp), %xmm4
callq 0x2710
vmovaps 0x40(%rsp), %xmm1
vmovdqa %xmm1, 0x4f0(%rsp)
vmovdqa %xmm0, 0x4e0(%rsp)
vmovdqa 0x4f0(%rsp), %xmm0
vmovdqa 0x4e0(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x160(%rsp)
vmovdqa 0x160(%rsp), %xmm0
vmovaps %xmm0, 0x50(%rsp)
movq 0x2a0(%rsp), %rdi
addq $0x10, %rdi
callq 0x26f0
vmovaps 0x70(%rsp), %xmm4
vmovaps %xmm0, %xmm1
vmovdqa 0x260(%rsp), %xmm0
vmovdqa %xmm1, 0x4d0(%rsp)
vmovdqa %xmm0, 0x4c0(%rsp)
vmovdqa 0x4d0(%rsp), %xmm0
vmovdqa 0x4c0(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x1b0(%rsp), %xmm3
vmovdqa %xmm4, 0xa30(%rsp)
vmovdqa 0xa30(%rsp), %xmm4
callq 0x2710
vmovaps 0x50(%rsp), %xmm1
vmovdqa %xmm1, 0x4b0(%rsp)
vmovdqa %xmm0, 0x4a0(%rsp)
vmovdqa 0x4b0(%rsp), %xmm0
vmovdqa 0x4a0(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x160(%rsp)
vmovdqa 0x160(%rsp), %xmm0
vmovaps %xmm0, 0x60(%rsp)
movq 0x2a0(%rsp), %rdi
addq $0x20, %rdi
callq 0x26f0
vmovaps 0x70(%rsp), %xmm4
vmovaps %xmm0, %xmm1
vmovdqa 0x250(%rsp), %xmm0
vmovdqa %xmm1, 0x490(%rsp)
vmovdqa %xmm0, 0x480(%rsp)
vmovdqa 0x490(%rsp), %xmm0
vmovdqa 0x480(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x1b0(%rsp), %xmm3
vmovdqa %xmm4, 0xa20(%rsp)
vmovdqa 0xa20(%rsp), %xmm4
callq 0x2710
vmovaps 0x60(%rsp), %xmm1
vmovdqa %xmm1, 0x470(%rsp)
vmovdqa %xmm0, 0x460(%rsp)
vmovdqa 0x470(%rsp), %xmm0
vmovdqa 0x460(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x160(%rsp)
vmovdqa 0x160(%rsp), %xmm0
vmovaps %xmm0, 0x80(%rsp)
movq 0x2a0(%rsp), %rdi
addq $0x30, %rdi
callq 0x26f0
vmovaps 0x70(%rsp), %xmm4
vmovaps %xmm0, %xmm1
vmovdqa 0x240(%rsp), %xmm0
vmovdqa %xmm1, 0x450(%rsp)
vmovdqa %xmm0, 0x440(%rsp)
vmovdqa 0x450(%rsp), %xmm0
vmovdqa 0x440(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x1b0(%rsp), %xmm3
vmovdqa %xmm4, 0xa10(%rsp)
vmovdqa 0xa10(%rsp), %xmm4
callq 0x2710
vmovaps 0x80(%rsp), %xmm1
vmovdqa %xmm1, 0x430(%rsp)
vmovdqa %xmm0, 0x420(%rsp)
vmovdqa 0x430(%rsp), %xmm0
vpxor 0x420(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x160(%rsp)
movl 0x29c(%rsp), %eax
subl $0x40, %eax
movl %eax, 0x29c(%rsp)
movq 0x2a0(%rsp), %rax
addq $0x40, %rax
movq %rax, 0x2a0(%rsp)
cmpl $0x20, 0x29c(%rsp)
jb 0x3f73
vmovdqa 0x1f0(%rsp), %xmm1
movq 0x2b8(%rsp), %rax
vmovdqa 0x20(%rax), %xmm0
vmovdqa %xmm1, 0x410(%rsp)
vmovdqa %xmm0, 0x400(%rsp)
vmovdqa 0x410(%rsp), %xmm0
vmovdqa 0x400(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x270(%rsp)
vmovdqa 0x1f0(%rsp), %xmm1
movq 0x2b8(%rsp), %rax
vmovdqa 0x30(%rax), %xmm0
vmovdqa %xmm1, 0x3f0(%rsp)
vmovdqa %xmm0, 0x3e0(%rsp)
vmovdqa 0x3f0(%rsp), %xmm0
vmovdqa 0x3e0(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x1f0(%rsp)
vmovdqa %xmm0, 0x260(%rsp)
vmovdqa 0x160(%rsp), %xmm0
vmovaps %xmm0, 0x10(%rsp)
movq 0x2a0(%rsp), %rdi
callq 0x26f0
vmovaps %xmm0, %xmm1
vmovdqa 0x270(%rsp), %xmm0
vmovdqa %xmm1, 0x3d0(%rsp)
vmovdqa %xmm0, 0x3c0(%rsp)
vmovdqa 0x3d0(%rsp), %xmm0
vmovdqa 0x3c0(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x1b0(%rsp), %xmm3
vpxor %xmm4, %xmm4, %xmm4
vmovaps %xmm4, 0x20(%rsp)
vmovdqa %xmm4, 0xa00(%rsp)
vmovdqa 0xa00(%rsp), %xmm4
callq 0x2710
vmovaps 0x10(%rsp), %xmm1
vmovdqa %xmm1, 0x3b0(%rsp)
vmovdqa %xmm0, 0x3a0(%rsp)
vmovdqa 0x3b0(%rsp), %xmm0
vmovdqa 0x3a0(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x160(%rsp)
vmovdqa 0x160(%rsp), %xmm0
vmovaps %xmm0, 0x30(%rsp)
movq 0x2a0(%rsp), %rdi
addq $0x10, %rdi
callq 0x26f0
vmovaps 0x20(%rsp), %xmm4
vmovaps %xmm0, %xmm1
vmovdqa 0x260(%rsp), %xmm0
vmovdqa %xmm1, 0x390(%rsp)
vmovdqa %xmm0, 0x380(%rsp)
vmovdqa 0x390(%rsp), %xmm0
vmovdqa 0x380(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x1b0(%rsp), %xmm3
vmovdqa %xmm4, 0x9f0(%rsp)
vmovdqa 0x9f0(%rsp), %xmm4
callq 0x2710
vmovaps 0x30(%rsp), %xmm1
vmovdqa %xmm1, 0x370(%rsp)
vmovdqa %xmm0, 0x360(%rsp)
vmovdqa 0x370(%rsp), %xmm0
vpxor 0x360(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x160(%rsp)
movl 0x29c(%rsp), %eax
subl $0x20, %eax
movl %eax, 0x29c(%rsp)
movq 0x2a0(%rsp), %rax
addq $0x20, %rax
movq %rax, 0x2a0(%rsp)
cmpl $0x10, 0x29c(%rsp)
jb 0x40ae
vmovdqa 0x1f0(%rsp), %xmm1
movq 0x2b8(%rsp), %rax
vmovdqa 0x20(%rax), %xmm0
vmovdqa %xmm1, 0x350(%rsp)
vmovdqa %xmm0, 0x340(%rsp)
vmovdqa 0x350(%rsp), %xmm0
vmovdqa 0x340(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x1f0(%rsp)
vmovdqa %xmm0, 0x270(%rsp)
vmovdqa 0x160(%rsp), %xmm0
vmovaps %xmm0, (%rsp)
movq 0x2a0(%rsp), %rdi
callq 0x26f0
vmovaps %xmm0, %xmm1
vmovdqa 0x270(%rsp), %xmm0
vmovdqa %xmm1, 0x330(%rsp)
vmovdqa %xmm0, 0x320(%rsp)
vmovdqa 0x330(%rsp), %xmm0
vmovdqa 0x320(%rsp), %xmm1
vpxor %xmm1, %xmm0, %xmm0
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x1b0(%rsp), %xmm3
vpxor %xmm4, %xmm4, %xmm4
vmovdqa %xmm4, 0x9e0(%rsp)
vmovdqa 0x9e0(%rsp), %xmm4
callq 0x2710
vmovaps (%rsp), %xmm1
vmovdqa %xmm1, 0x310(%rsp)
vmovdqa %xmm0, 0x300(%rsp)
vmovdqa 0x310(%rsp), %xmm0
vpxor 0x300(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, 0x160(%rsp)
movl 0x29c(%rsp), %eax
subl $0x10, %eax
movl %eax, 0x29c(%rsp)
movq 0x2a0(%rsp), %rax
addq $0x10, %rax
movq %rax, 0x2a0(%rsp)
cmpl $0x0, 0x29c(%rsp)
je 0x414b
movq 0x2a0(%rsp), %rdi
callq 0x26f0
movl $0x10, %edi
subl 0x29c(%rsp), %edi
callq 0x27f0
vmovdqa %xmm0, 0x140(%rsp)
vmovdqa 0x140(%rsp), %xmm1
vmovdqa 0x170(%rsp), %xmm0
vmovdqa %xmm1, 0x2f0(%rsp)
vmovdqa %xmm0, 0x2e0(%rsp)
vmovdqa 0x2f0(%rsp), %xmm0
vpxor 0x2e0(%rsp), %xmm0, %xmm0
vmovdqa 0x1c0(%rsp), %xmm1
vmovdqa 0x1a0(%rsp), %xmm2
vmovdqa 0x1b0(%rsp), %xmm3
vmovdqa 0x160(%rsp), %xmm4
callq 0x2710
vmovdqa %xmm0, 0x160(%rsp)
vmovdqa 0x160(%rsp), %xmm0
movq 0x2b8(%rsp), %rax
vmovdqa %xmm0, 0x70(%rax)
jmp 0x4163
vmovdqa 0x200(%rsp), %xmm1
movq 0x2b8(%rsp), %rax
vmovdqa 0x70(%rax), %xmm0
vmovdqa %xmm1, 0x2d0(%rsp)
vmovdqa %xmm0, 0x2c0(%rsp)
vmovdqa 0x2d0(%rsp), %xmm0
vpxor 0x2c0(%rsp), %xmm0, %xmm0
addq $0xb28, %rsp            # imm = 0xB28
retq
nopw %cs:(%rax,%rax)