// File: /workspace/github_c_makefile_star2_O1/mjosaarinen[P]brutus/crypto_aead/lakekeyakv2/generic32/KeccakP-800-opt32.c
// Function: KeccakP800_Permute_22rounds
void KeccakP800_Permute_22rounds(void *state)
{
    declareBCDE
    #ifndef KeccakP800_fullUnrolling
    unsigned int i;
    #endif
    UINT32 *Astate = (UINT32*)state;

    rounds22
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movl (%rdi), %r10d
movl 0x14(%rdi), %ecx
movl 0x3c(%rdi), %eax
movl 0x50(%rdi), %edx
movl 0x2c(%rdi), %ebx
kxnorw %k0, %k0, %k1
vpmovsxbd 0x8925(%rip), %xmm0 # 0x12ac0
vpxord %xmm20, %xmm20, %xmm20
vpgatherdd (%rdi,%xmm0), %xmm20 {%k1}
vpshufd $0x2d, 0x4(%rdi), %xmm17 # xmm17 = mem[1,3,2,0]
vpshufd $0x72, 0x18(%rdi), %xmm16 # xmm16 = mem[2,0,3,1]
vpshufd $0x72, 0x40(%rdi), %xmm19 # xmm19 = mem[2,0,3,1]
movq %rdi, -0x8(%rsp)
vpshufd $0x72, 0x54(%rdi), %xmm18 # xmm18 = mem[2,0,3,1]
movq $-0x2, -0x38(%rsp)
vpmovsxbd 0x88dc(%rip), %xmm0 # 0x12ac4
vpmovsxbd 0x88d7(%rip), %xmm1 # 0x12ac8
vpmovsxbd 0x88d2(%rip), %xmm2 # 0x12acc
vpmovsxbd 0x88cd(%rip), %xmm3 # 0x12ad0
vpmovsxbd 0x88c8(%rip), %xmm4 # 0x12ad4
vpmovsxbd 0x88c3(%rip), %xmm5 # 0x12ad8
vpmovsxbd 0x88be(%rip), %xmm6 # 0x12adc
vpmovsxbd 0x88b9(%rip), %xmm7 # 0x12ae0
vpmovsxbd 0x88b4(%rip), %xmm8 # 0x12ae4
vpmovsxbd 0x88af(%rip), %xmm9 # 0x12ae8
vpmovsxbd 0x88aa(%rip), %xmm10 # 0x12aec
vpmovsxbd 0x88a5(%rip), %xmm11 # 0x12af0
vpmovsxbd 0x88a0(%rip), %xmm12 # 0x12af4
vpmovsxbd 0x889b(%rip), %xmm13 # 0x12af8
vpmovsxbd 0x8896(%rip), %xmm14 # 0x12afc
vpmovsxbd 0x8891(%rip), %xmm15 # 0x12b00
vpshufd $0x1e, %xmm17, %xmm21   # xmm21 = xmm17[2,3,1,0]
vpextrd $0x2, %xmm20, %esi
movl %r10d, %edi
xorl %ecx, %edi
xorl %eax, %edi
xorl %edx, %edi
xorl %esi, %edi
vpshufd $0x47, %xmm20, %xmm22   # xmm22 = xmm20[3,1,0,1]
vpinsrd $0x1, %ebx, %xmm22, %xmm22
vpternlogd $0x96, %xmm21, %xmm16, %xmm22
vpternlogd $0x96, %xmm19, %xmm18, %xmm22
vpextrd $0x3, %xmm22, %esi
rorxl $0x1f, %esi, %r9d
vpshufd $0x90, %xmm22, %xmm21   # xmm21 = xmm22[0,0,1,2]
xorl %edi, %r9d
vpinsrd $0x0, %edi, %xmm21, %xmm21
vprold $0x1, %xmm21, %xmm21
vpxord %xmm21, %xmm22, %xmm24
vpextrd $0x2, %xmm24, %r8d
vpextrd $0x1, %xmm16, %r12d
xorl %r9d, %r12d
vpinsrd $0x3, %eax, %xmm19, %xmm22
vpxord %xmm24, %xmm20, %xmm20
vpshufd $0x87, %xmm24, %xmm21   # xmm21 = xmm24[3,1,0,2]
vpinsrd $0x1, %r9d, %xmm21, %xmm23
vpinsrd $0x0, %edx, %xmm18, %xmm25
xorl %r8d, %r10d
vprolvd %xmm0, %xmm20, %xmm21
vpextrd $0x3, %xmm24, %edi
vpextrd $0x2, %xmm17, %eax
vpxord %xmm23, %xmm22, %xmm20
vpermt2d %xmm24, %xmm2, %xmm23
xorl %edi, %eax
vpextrd $0x3, %xmm17, %edx
xorl %r9d, %edx
vprolvd %xmm1, %xmm20, %xmm22
rorxl $0x1f, %edx, %edx
vpextrd $0x1, %xmm24, %r11d
vpextrd $0x3, %xmm16, %esi
vpxord %xmm23, %xmm25, %xmm20
xorl %r11d, %esi
vpextrd $0x3, %xmm21, %ebp
vpextrd $0x2, %xmm22, %r15d
vprolvd %xmm3, %xmm20, %xmm23
rorxl $0x1a, %esi, %esi
vmovd %xmm23, %r13d
andnl %edx, %r13d, %r14d
xorl %r15d, %r14d
movl %r14d, -0x14(%rsp)
andnl %r15d, %ebp, %r15d
andnl %ebp, %esi, %ebp
xorl %edx, %ebp
movl %ebp, -0x18(%rsp)
xorl %esi, %r15d
movl %r15d, -0xc(%rsp)
andnl %esi, %edx, %ebp
vpextrd $0x2, %xmm21, %esi
rorxl $0x4, %eax, %edx
xorl %r13d, %ebp
movl %ebp, -0x10(%rsp)
vpextrd $0x1, %xmm22, %eax
xorl %ecx, %r8d
vpextrd $0x3, %xmm23, %ebp
andnl %eax, %esi, %ecx
movl %ecx, -0x30(%rsp)
xorl %ebx, %r9d
andnl %edx, %ebp, %ecx
vpsrlq $0x20, %xmm17, %xmm20
vpxord %xmm20, %xmm24, %xmm20
xorl %eax, %ecx
movl %ecx, -0x1c(%rsp)
vmovd %xmm20, %eax
rorxl $0x5, %eax, %eax
rorxl $0x16, %r9d, %r9d
vmovdqa64 %xmm16, %xmm20
vpermt2d %xmm24, %xmm4, %xmm20
vprolq $0x20, %xmm20, %xmm20
rorxl $0x1c, %r8d, %ebx
vpermt2d %xmm19, %xmm5, %xmm24
vprolq $0x20, %xmm24, %xmm19
vpxord %xmm19, %xmm20, %xmm19
vmovd %xmm18, %esi
xorl %edi, %esi
vprolvd %xmm6, %xmm19, %xmm18
rorxl $0x8, %esi, %esi
andnl %r9d, %ebx, %r8d
xorl %eax, %r8d
vmovd %xmm18, %r15d
andnl %eax, %esi, %ecx
xorl %r15d, %ecx
movl %ecx, -0x24(%rsp)
andnl %r15d, %r9d, %ecx
xorl %ebx, %ecx
movl %ecx, -0x20(%rsp)
andnl %ebx, %eax, %ebx
vmovd %xmm17, %ecx
xorl %r11d, %ecx
rorxl $0x14, %r12d, %r13d
vpextrd $0x2, %xmm23, %r11d
andnl %r10d, %r11d, %eax
vpextrd $0x1, %xmm21, %r11d
vmovd %xmm22, %r15d
xorl %r15d, %eax
movl %eax, -0x28(%rsp)
andnl %r15d, %r11d, %eax
andnl %r11d, %r13d, %r11d
movq 0xdb55(%rip), %r15      # 0x17ff8
movq -0x38(%rsp), %r14
xorl 0x8(%r15,%r14,4), %r11d
vmovd %xmm16, %r15d
xorl %edi, %r15d
xorl %r10d, %r11d
vpbroadcastq %xmm23, %xmm16
vpinsrd $0x0, %r10d, %xmm16, %xmm19
xorl %r13d, %eax
movl %eax, -0x2c(%rsp)
vpinsrd $0x0, %r13d, %xmm21, %xmm16
xorl %esi, %ebx
vpinsrd $0x1, %esi, %xmm16, %xmm17
vpunpckhqdq %xmm22, %xmm23, %xmm16 # xmm16 = xmm23[1],xmm22[1]
vpinsrd $0x1, %r9d, %xmm16, %xmm16
vpextrd $0x1, %xmm18, %esi
movl -0x30(%rsp), %r13d
xorl %esi, %r13d
andnl %esi, %edx, %r12d
vpinsrd $0x2, %edx, %xmm16, %xmm16
rorxl $0x2, %ecx, %eax
rorxl $0x9, %r15d, %esi
vpextrd $0x3, %xmm22, %edx
vmovd %xmm21, %edi
andnl %edx, %edi, %r9d
andnl %edi, %esi, %r14d
xorl %eax, %r14d
vpinsrd $0x3, %eax, %xmm17, %xmm20
xorl %esi, %r9d
andnl %esi, %eax, %esi
vpextrd $0x1, %xmm23, %eax
xorl %eax, %esi
xorl %ebp, %r12d
vpshufd $0x93, %xmm22, %xmm22   # xmm22 = xmm22[3,0,1,2]
vpshufd $0x39, %xmm23, %xmm17   # xmm17 = xmm23[1,2,3,0]
vpternlogd $0x9c, %xmm22, %xmm21, %xmm17
vpsrlq $0x20, %xmm17, %xmm21
vpinsrd $0x1, %r8d, %xmm21, %xmm21
movl %r11d, %eax
xorl %r8d, %eax
movl -0x28(%rsp), %r8d
movl %r8d, %ecx
movl -0x14(%rsp), %r10d
xorl %r10d, %ecx
movl -0x1c(%rsp), %edi
xorl %edi, %ecx
vpinsrd $0x2, %edi, %xmm21, %xmm21
vpshufd $0xff, %xmm17, %xmm22   # xmm22 = xmm17[3,3,3,3]
vpinsrd $0x1, %esi, %xmm22, %xmm22
movl -0x24(%rsp), %edx
vpinsrd $0x2, %edx, %xmm22, %xmm22
movl %r13d, %edi
vpinsrd $0x3, %r13d, %xmm22, %xmm22
xorl %edx, %ecx
movl -0x20(%rsp), %r13d
xorl %r13d, %edi
vpinsrd $0x3, %r9d, %xmm21, %xmm21
movl -0x2c(%rsp), %edx
xorl %edx, %r9d
xorl %edi, %r9d
vpermt2d %xmm18, %xmm7, %xmm19
vpternlogd $0xd2, %xmm20, %xmm19, %xmm16
vpextrd $0x3, %xmm16, %edi
xorl %edi, %ecx
movl -0x10(%rsp), %ebp
movl %ebp, %edi
xorl %ebx, %edi
xorl %r12d, %edi
xorl %esi, %edi
vmovd %xmm16, %esi
xorl %esi, %edi
vpshufd $0xee, %xmm17, %xmm18   # xmm18 = xmm17[2,3,2,3]
movl -0xc(%rsp), %r15d
xorl %r15d, %r9d
vpxord %xmm18, %xmm17, %xmm19
vmovd %ecx, %xmm20
vpinsrd $0x1, %r9d, %xmm20, %xmm20
vpextrd $0x1, %xmm16, %esi
vpsrlq $0x20, %xmm19, %xmm23
vpxord %xmm23, %xmm19, %xmm19
vpinsrd $0x2, %edi, %xmm20, %xmm20
vmovd %xmm19, %edi
xorl %esi, %edi
vpinsrd $0x3, %edi, %xmm20, %xmm19
vpextrd $0x2, %xmm16, %esi
movl -0x18(%rsp), %edi
xorl %edi, %eax
xorl %r14d, %eax
xorl %esi, %eax
vprold $0x1, %xmm19, %xmm20
vpshufd $0xf9, %xmm19, %xmm19   # xmm19 = xmm19[1,2,3,3]
vpinsrd $0x3, %eax, %xmm19, %xmm19
vpxord %xmm19, %xmm20, %xmm19
rorxl $0x1f, %eax, %esi
xorl %ecx, %esi
vpextrd $0x1, %xmm19, %eax
xorl %eax, %r11d
xorl %eax, %edi
vpbroadcastd %xmm19, %xmm20
vpinsrd $0x0, %r8d, %xmm20, %xmm20
vpinsrd $0x1, %r13d, %xmm20, %xmm20
vshufps $0x2e, %xmm17, %xmm19, %xmm17 # xmm17 = xmm19[2,3],xmm17[2,0]
vpinsrd $0x2, %r12d, %xmm17, %xmm17
vpinsrd $0x1, %esi, %xmm19, %xmm23
vpxord %xmm22, %xmm23, %xmm22
vprolvd %xmm8, %xmm22, %xmm22
vpinsrd $0x1, %r14d, %xmm18, %xmm18
vpinsrd $0x2, %r10d, %xmm18, %xmm18
vpextrd $0x3, %xmm22, %eax
vmovd %xmm22, %ecx
vpinsrd $0x3, %edx, %xmm18, %xmm18
vpextrd $0x3, %xmm19, %edx
rorxl $0x1d, %edi, %edi
vpinsrd $0x2, %esi, %xmm20, %xmm20
xorl %esi, %ebx
rorxl $0x18, %ebx, %r8d
vpxord %xmm18, %xmm19, %xmm18
andnl %ecx, %eax, %r10d
vprolvd %xmm12, %xmm18, %xmm18
vpinsrd $0x2, %r8d, %xmm18, %xmm24
vpextrd $0x2, %xmm18, %eax
vpxord %xmm17, %xmm20, %xmm17
vprolvd %xmm10, %xmm17, %xmm20
andnl %r8d, %eax, %eax
vmovd %xmm18, %ebx
xorl %eax, %ebx
vpextrd $0x2, %xmm20, %eax
vpinsrd $0x2, %edi, %xmm20, %xmm25
xorl %r15d, %edx
rorxl $0x16, %edx, %ecx
vpermt2d %xmm19, %xmm13, %xmm23
andnl %edi, %eax, %edx
vpxord %xmm16, %xmm23, %xmm16
vprolvd %xmm14, %xmm16, %xmm23
vpextrd $0x2, %xmm23, %edi
vmovd %xmm23, %eax
andnl %ecx, %edi, %edi
xorl %edi, %eax
vpinsrd $0x2, %ecx, %xmm23, %xmm26
vpshufd $0x16, %xmm22, %xmm16   # xmm16 = xmm22[2,1,1,0]
movq 0xd874(%rip), %rcx      # 0x17ff8
movq -0x38(%rsp), %r8
xorl 0xc(%rcx,%r8,4), %r10d
vpinsrd $0x1, %r11d, %xmm16, %xmm16
xorl %ebp, %esi
vmovd %xmm20, %ecx
rorxl $0x19, %esi, %esi
xorl %r11d, %r10d
vpxord %xmm21, %xmm19, %xmm17
vprolvd %xmm15, %xmm17, %xmm21
vpextrd $0x2, %xmm21, %edi
andnl %esi, %edi, %edi
xorl %edx, %ecx
vmovd %xmm21, %edx
xorl %edi, %edx
vpinsrd $0x2, %esi, %xmm21, %xmm27
vmovdqa64 %xmm22, %xmm17
vpermt2d %xmm16, %xmm9, %xmm17
movq -0x8(%rsp), %rsi
movl %r10d, (%rsi)
vpternlogd $0x9a, %xmm22, %xmm16, %xmm17
vpshufd $0x63, %xmm17, %xmm16   # xmm16 = xmm17[3,0,2,1]
vmovdqu64 %xmm16, 0x4(%rsi)
vpshufd $0x4b, %xmm25, %xmm19   # xmm19 = xmm25[3,2,0,1]
vmovdqa64 %xmm20, %xmm16
movl %ecx, 0x14(%rsi)
vpermt2d %xmm25, %xmm11, %xmm16
vpternlogd $0xd2, %xmm20, %xmm19, %xmm16
vpshufd $0x8d, %xmm16, %xmm19   # xmm19 = xmm16[1,3,0,2]
vpshufd $0x4b, %xmm24, %xmm22   # xmm22 = xmm24[3,2,0,1]
vmovdqa64 %xmm18, %xmm20
vmovdqu64 %xmm19, 0x18(%rsi)
vpermt2d %xmm24, %xmm11, %xmm20
vpternlogd $0xd2, %xmm18, %xmm22, %xmm20
vpextrd $0x2, %xmm20, 0x28(%rsi)
movl %ebx, 0x2c(%rsi)
vpextrd $0x1, %xmm20, 0x30(%rsi)
vpextrd $0x3, %xmm20, 0x34(%rsi)
vmovd %xmm20, 0x38(%rsi)
vpshufd $0x4b, %xmm26, %xmm18   # xmm18 = xmm26[3,2,0,1]
vmovdqa64 %xmm23, %xmm19
vpermt2d %xmm26, %xmm11, %xmm19
vpternlogd $0xd2, %xmm23, %xmm18, %xmm19
movl %eax, 0x3c(%rsi)
vpshufd $0x8d, %xmm19, %xmm18   # xmm18 = xmm19[1,3,0,2]
vmovdqu64 %xmm18, 0x40(%rsi)
vpshufd $0x4b, %xmm27, %xmm22   # xmm22 = xmm27[3,2,0,1]
vmovdqa64 %xmm21, %xmm18
vpermt2d %xmm27, %xmm11, %xmm18
movl %edx, 0x50(%rsi)
vpternlogd $0xd2, %xmm21, %xmm22, %xmm18
vpshufd $0x8d, %xmm18, %xmm21   # xmm21 = xmm18[1,3,0,2]
vmovdqu64 %xmm21, 0x54(%rsi)
movq %r8, %rsi
addq $0x2, %rsi
movq %rsi, -0x38(%rsp)
cmpq $0x14, %rsi
jb 0xa26f
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq