// File: /workspace/github_c_makefile_star2_O2/mjosaarinen[P]brutus/crypto_aead/lakekeyakv2/generic32/KeccakP-200-reference.c
// Function: KeccakP200Round
void KeccakP200Round(tKeccakLane *state, unsigned int indexRound)
{
#ifdef KeccakReference
    displayRoundNumber(3, indexRound);
#endif

    theta(state);
#ifdef KeccakReference
    displayStateAsLanes(3, "After theta", state, 200);
#endif

    rho(state);
#ifdef KeccakReference
    displayStateAsLanes(3, "After rho", state, 200);
#endif

    pi(state);
#ifdef KeccakReference
    displayStateAsLanes(3, "After pi", state, 200);
#endif

    chi(state);
#ifdef KeccakReference
    displayStateAsLanes(3, "After chi", state, 200);
#endif

    iota(state, indexRound);
#ifdef KeccakReference
    displayStateAsLanes(3, "After iota", state, 200);
#endif
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
xorl %eax, %eax
movabsq $-0x19, %rcx
movq %rdi, %rdx
cmpq $0x5, %rax
je 0x89f3
xorl %r8d, %r8d
movq %rcx, %r9
testq %r9, %r9
je 0x89e6
xorb 0x19(%rdx,%r9), %r8b
addq $0x5, %r9
jmp 0x89d6
movb %r8b, -0x28(%rsp,%rax)
incq %rax
incq %rdx
jmp 0x89ca
movl $0xfffffffd, %r8d       # imm = 0xFFFFFFFD
xorl %eax, %eax
movabsq $0x4, %rcx
cmpq $0x5, %rax
je 0x8a41
leaq 0x1(%rax), %rdx
cmpq $0x5, %rdx
movl $0x0, %r9d
cmovneq %rdx, %r9
movb -0x28(%rsp,%r9), %r9b
rolb %r9b
cmpq $0x1, %rdx
leal 0x2(%r8,%rax), %r10d
cmoveq %rcx, %r10
xorb -0x28(%rsp,%r10), %r9b
movb %r9b, -0x2d(%rsp,%rax)
movq %rdx, %rax
jmp 0x8a05
xorl %eax, %eax
movq %rdi, %rcx
cmpq $0x5, %rax
je 0x8a6b
movb -0x2d(%rsp,%rax), %dl
xorl %r9d, %r9d
cmpq $0x19, %r9
je 0x8a63
xorb %dl, (%rcx,%r9)
addq $0x5, %r9
jmp 0x8a53
incq %rax
incq %rcx
jmp 0x8a46
leaq 0x8aee(%rip), %rax      # 0x11560
xorl %ecx, %ecx
movl $0x880001, %edx         # imm = 0x880001
movq %rdi, %r9
cmpq $0x5, %rcx
je 0x8aca
xorl %r10d, %r10d
cmpq $0x19, %r10
je 0x8abe
leal (%rcx,%r10), %r11d
btq %r11, %rdx
movb (%r9,%r10), %r11b
jb 0x8ab4
movzbl %r11b, %r11d
movb (%rax,%r10,4), %bl
shlxl %ebx, %r11d, %ebp
movb $0x8, %r14b
subb %bl, %r14b
shrxl %r14d, %r11d, %r11d
xorl %ebp, %r11d
movb %r11b, (%r9,%r10)
addq $0x5, %r10
jmp 0x8a85
incq %rcx
addq $0x4, %rax
incq %r9
jmp 0x8a7c
leaq -0x28(%rsp), %rax
xorl %ecx, %ecx
movq %rdi, %rdx
cmpq $0x5, %rcx
je 0x8afc
xorl %r9d, %r9d
cmpq $0x19, %r9
je 0x8af1
movb (%rdx,%r9), %r10b
movb %r10b, (%rax,%r9)
addq $0x5, %r9
jmp 0x8add
incq %rcx
incq %rax
incq %rdx
jmp 0x8ad4
xorl %r10d, %r10d
leaq -0x28(%rsp), %r11
movabsq $-0x19, %rbx
movl $0x5, %r9d
xorl %ebp, %ebp
xorl %r14d, %r14d
cmpq $0x5, %r14
je 0x8b68
movq %rbx, %r15
movl %r10d, %ecx
movl %ebp, %r12d
movq %rdi, %r13
movl %ecx, %eax
xorl %edx, %edx
divl %r9d
testq %r15, %r15
je 0x8b59
imull $0x19, %eax, %eax
movl %r12d, %edx
subl %eax, %edx
movb 0x19(%r11,%r15), %al
movb %al, (%r13,%rdx)
incq %r13
addl $0xf, %r12d
addl $0x3, %ecx
addq $0x5, %r15
jmp 0x8b2b
incq %r14
addl $0xa, %ebp
addl $0x2, %r10d
incq %r11
jmp 0x8b19
xorl %r10d, %r10d
movl $0x2, %r11d
xorl %ecx, %ecx
movl %ecx, %eax
xorl %edx, %edx
divl %r9d
cmpq $0x5, %rcx
je 0x8bfb
imull $0x19, %eax, %edx
movl %r10d, %eax
subl %edx, %eax
addq %rdi, %rax
leaq (%rcx,%rcx,4), %rdx
addq %rdi, %rdx
leaq (%rdi,%r10), %rbx
xorl %r14d, %r14d
cmpq $0x5, %r14
je 0x8bdb
leaq 0x1(%r14), %r15
cmpq $0x5, %r15
movl $0x0, %r12d
cmovneq %r15, %r12
movb (%rdx,%r12), %bpl
notb %bpl
cmpq $0x3, %r14
movl %r11d, %r12d
cmovael %r8d, %r12d
addl %r14d, %r12d
addl %r10d, %r12d
andb (%rdi,%r12), %bpl
xorb (%rbx,%r14), %bpl
movb %bpl, -0x28(%rsp,%r14)
movq %r15, %r14
jmp 0x8b99
xorl %edx, %edx
cmpq $0x5, %rdx
je 0x8bef
movb -0x28(%rsp,%rdx), %bl
movb %bl, (%rax,%rdx)
incq %rdx
jmp 0x8bdd
incq %rcx
addq $0x5, %r10
jmp 0x8b73
movl %esi, %eax
leaq 0x893c(%rip), %rcx      # 0x11540
movb (%rax,%rcx), %al
xorb %al, (%rdi)
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq