// File: /workspace/github_c_makefile_star2_O0/maandree[P]libkeccak/./800.c
// Function: libkeccak_f_round32
LIBKECCAK_GCC_ONLY(__attribute__((__nonnull__, __nothrow__, __hot__)))
static void
libkeccak_f_round32(register struct libkeccak_state *state, register uint32_t rc)
{
	uint32_t *restrict A = state->S.w32;
	uint32_t B[25], C[5], da, db, dc, dd, de;

	/* θ step (step 1 of 3). */
#define X(N) C[N] = A[N * 5] ^ A[N * 5 + 1] ^ A[N * 5 + 2] ^ A[N * 5 + 3] ^ A[N * 5 + 4]
	LIST_5(X, ;);
#undef X

	/* θ step (step 2 of 3). */
	da = C[4] ^ rotate32(C[1], 1);
	dd = C[2] ^ rotate32(C[4], 1);
	db = C[0] ^ rotate32(C[2], 1);
	de = C[3] ^ rotate32(C[0], 1);
	dc = C[1] ^ rotate32(C[3], 1);

	/* ρ and π steps, with last two part of θ. */
#define X(bi, ai, dv, r) B[bi] = rotate32(A[ai] ^ dv, r)
	B[0] = A[0] ^ da;   X( 1, 15, dd, 28);  X( 2,  5, db,  1);  X( 3, 20, de, 27);  X( 4, 10, dc, 30);
	X( 5,  6, db, 12);  X( 6, 21, de, 20);  X( 7, 11, dc,  6);  X( 8,  1, da,  4);  X( 9, 16, dd, 23);
	X(10, 12, dc, 11);  X(11,  2, da,  3);  X(12, 17, dd, 25);  X(13,  7, db, 10);  X(14, 22, de,  7);
	X(15, 18, dd, 21);  X(16,  8, db, 13);  X(17, 23, de,  8);  X(18, 13, dc, 15);  X(19,  3, da,  9);
	X(20, 24, de, 14);  X(21, 14, dc, 29);  X(22,  4, da, 18);  X(23, 19, dd, 24);  X(24,  9, db,  2);
#undef X

	/* ξ step. */
#define X(N) A[N] = (uint32_t)(B[N] ^ ((~(B[(N + 5) % 25])) & B[(N + 10) % 25]))
	LIST_25(X, ;);
#undef X

	/* ι step. */
	A[0] ^= rc;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movl (%rax), %eax
movq -0x18(%rbp), %rcx
xorl 0x4(%rcx), %eax
movq -0x18(%rbp), %rcx
xorl 0x8(%rcx), %eax
movq -0x18(%rbp), %rcx
xorl 0xc(%rcx), %eax
movq -0x18(%rbp), %rcx
xorl 0x10(%rcx), %eax
movl %eax, -0xa0(%rbp)
movq -0x18(%rbp), %rax
movl 0x14(%rax), %eax
movq -0x18(%rbp), %rcx
xorl 0x18(%rcx), %eax
movq -0x18(%rbp), %rcx
xorl 0x1c(%rcx), %eax
movq -0x18(%rbp), %rcx
xorl 0x20(%rcx), %eax
movq -0x18(%rbp), %rcx
xorl 0x24(%rcx), %eax
movl %eax, -0x9c(%rbp)
movq -0x18(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x18(%rbp), %rcx
xorl 0x2c(%rcx), %eax
movq -0x18(%rbp), %rcx
xorl 0x30(%rcx), %eax
movq -0x18(%rbp), %rcx
xorl 0x34(%rcx), %eax
movq -0x18(%rbp), %rcx
xorl 0x38(%rcx), %eax
movl %eax, -0x98(%rbp)
movq -0x18(%rbp), %rax
movl 0x3c(%rax), %eax
movq -0x18(%rbp), %rcx
xorl 0x40(%rcx), %eax
movq -0x18(%rbp), %rcx
xorl 0x44(%rcx), %eax
movq -0x18(%rbp), %rcx
xorl 0x48(%rcx), %eax
movq -0x18(%rbp), %rcx
xorl 0x4c(%rcx), %eax
movl %eax, -0x94(%rbp)
movq -0x18(%rbp), %rax
movl 0x50(%rax), %eax
movq -0x18(%rbp), %rcx
xorl 0x54(%rcx), %eax
movq -0x18(%rbp), %rcx
xorl 0x58(%rcx), %eax
movq -0x18(%rbp), %rcx
xorl 0x5c(%rcx), %eax
movq -0x18(%rbp), %rcx
xorl 0x60(%rcx), %eax
movl %eax, -0x90(%rbp)
movl -0x90(%rbp), %eax
movl -0x9c(%rbp), %ecx
shrl $0x1f, %ecx
movl -0x9c(%rbp), %edx
shll %edx
orl %edx, %ecx
xorl %ecx, %eax
movl %eax, -0xa4(%rbp)
movl -0x98(%rbp), %eax
movl -0x90(%rbp), %ecx
shrl $0x1f, %ecx
movl -0x90(%rbp), %edx
shll %edx
orl %edx, %ecx
xorl %ecx, %eax
movl %eax, -0xb0(%rbp)
movl -0xa0(%rbp), %eax
movl -0x98(%rbp), %ecx
shrl $0x1f, %ecx
movl -0x98(%rbp), %edx
shll %edx
orl %edx, %ecx
xorl %ecx, %eax
movl %eax, -0xa8(%rbp)
movl -0x94(%rbp), %eax
movl -0xa0(%rbp), %ecx
shrl $0x1f, %ecx
movl -0xa0(%rbp), %edx
shll %edx
orl %edx, %ecx
xorl %ecx, %eax
movl %eax, -0xb4(%rbp)
movl -0x9c(%rbp), %eax
movl -0x94(%rbp), %ecx
shrl $0x1f, %ecx
movl -0x94(%rbp), %edx
shll %edx
orl %edx, %ecx
xorl %ecx, %eax
movl %eax, -0xac(%rbp)
movq -0x18(%rbp), %rax
movl (%rax), %eax
xorl -0xa4(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x18(%rbp), %rax
movl 0x3c(%rax), %eax
xorl -0xb0(%rbp), %eax
shrl $0x4, %eax
movq -0x18(%rbp), %rcx
movl 0x3c(%rcx), %ecx
xorl -0xb0(%rbp), %ecx
shll $0x1c, %ecx
orl %ecx, %eax
movl %eax, -0x7c(%rbp)
movq -0x18(%rbp), %rax
movl 0x14(%rax), %eax
xorl -0xa8(%rbp), %eax
shrl $0x1f, %eax
movq -0x18(%rbp), %rcx
movl 0x14(%rcx), %ecx
xorl -0xa8(%rbp), %ecx
shll %ecx
orl %ecx, %eax
movl %eax, -0x78(%rbp)
movq -0x18(%rbp), %rax
movl 0x50(%rax), %eax
xorl -0xb4(%rbp), %eax
shrl $0x5, %eax
movq -0x18(%rbp), %rcx
movl 0x50(%rcx), %ecx
xorl -0xb4(%rbp), %ecx
shll $0x1b, %ecx
orl %ecx, %eax
movl %eax, -0x74(%rbp)
movq -0x18(%rbp), %rax
movl 0x28(%rax), %eax
xorl -0xac(%rbp), %eax
shrl $0x2, %eax
movq -0x18(%rbp), %rcx
movl 0x28(%rcx), %ecx
xorl -0xac(%rbp), %ecx
shll $0x1e, %ecx
orl %ecx, %eax
movl %eax, -0x70(%rbp)
movq -0x18(%rbp), %rax
movl 0x18(%rax), %eax
xorl -0xa8(%rbp), %eax
shrl $0x14, %eax
movq -0x18(%rbp), %rcx
movl 0x18(%rcx), %ecx
xorl -0xa8(%rbp), %ecx
shll $0xc, %ecx
orl %ecx, %eax
movl %eax, -0x6c(%rbp)
movq -0x18(%rbp), %rax
movl 0x54(%rax), %eax
xorl -0xb4(%rbp), %eax
shrl $0xc, %eax
movq -0x18(%rbp), %rcx
movl 0x54(%rcx), %ecx
xorl -0xb4(%rbp), %ecx
shll $0x14, %ecx
orl %ecx, %eax
movl %eax, -0x68(%rbp)
movq -0x18(%rbp), %rax
movl 0x2c(%rax), %eax
xorl -0xac(%rbp), %eax
shrl $0x1a, %eax
movq -0x18(%rbp), %rcx
movl 0x2c(%rcx), %ecx
xorl -0xac(%rbp), %ecx
shll $0x6, %ecx
orl %ecx, %eax
movl %eax, -0x64(%rbp)
movq -0x18(%rbp), %rax
movl 0x4(%rax), %eax
xorl -0xa4(%rbp), %eax
shrl $0x1c, %eax
movq -0x18(%rbp), %rcx
movl 0x4(%rcx), %ecx
xorl -0xa4(%rbp), %ecx
shll $0x4, %ecx
orl %ecx, %eax
movl %eax, -0x60(%rbp)
movq -0x18(%rbp), %rax
movl 0x40(%rax), %eax
xorl -0xb0(%rbp), %eax
shrl $0x9, %eax
movq -0x18(%rbp), %rcx
movl 0x40(%rcx), %ecx
xorl -0xb0(%rbp), %ecx
shll $0x17, %ecx
orl %ecx, %eax
movl %eax, -0x5c(%rbp)
movq -0x18(%rbp), %rax
movl 0x30(%rax), %eax
xorl -0xac(%rbp), %eax
shrl $0x15, %eax
movq -0x18(%rbp), %rcx
movl 0x30(%rcx), %ecx
xorl -0xac(%rbp), %ecx
shll $0xb, %ecx
orl %ecx, %eax
movl %eax, -0x58(%rbp)
movq -0x18(%rbp), %rax
movl 0x8(%rax), %eax
xorl -0xa4(%rbp), %eax
shrl $0x1d, %eax
movq -0x18(%rbp), %rcx
movl 0x8(%rcx), %ecx
xorl -0xa4(%rbp), %ecx
shll $0x3, %ecx
orl %ecx, %eax
movl %eax, -0x54(%rbp)
movq -0x18(%rbp), %rax
movl 0x44(%rax), %eax
xorl -0xb0(%rbp), %eax
shrl $0x7, %eax
movq -0x18(%rbp), %rcx
movl 0x44(%rcx), %ecx
xorl -0xb0(%rbp), %ecx
shll $0x19, %ecx
orl %ecx, %eax
movl %eax, -0x50(%rbp)
movq -0x18(%rbp), %rax
movl 0x1c(%rax), %eax
xorl -0xa8(%rbp), %eax
shrl $0x16, %eax
movq -0x18(%rbp), %rcx
movl 0x1c(%rcx), %ecx
xorl -0xa8(%rbp), %ecx
shll $0xa, %ecx
orl %ecx, %eax
movl %eax, -0x4c(%rbp)
movq -0x18(%rbp), %rax
movl 0x58(%rax), %eax
xorl -0xb4(%rbp), %eax
shrl $0x19, %eax
movq -0x18(%rbp), %rcx
movl 0x58(%rcx), %ecx
xorl -0xb4(%rbp), %ecx
shll $0x7, %ecx
orl %ecx, %eax
movl %eax, -0x48(%rbp)
movq -0x18(%rbp), %rax
movl 0x48(%rax), %eax
xorl -0xb0(%rbp), %eax
shrl $0xb, %eax
movq -0x18(%rbp), %rcx
movl 0x48(%rcx), %ecx
xorl -0xb0(%rbp), %ecx
shll $0x15, %ecx
orl %ecx, %eax
movl %eax, -0x44(%rbp)
movq -0x18(%rbp), %rax
movl 0x20(%rax), %eax
xorl -0xa8(%rbp), %eax
shrl $0x13, %eax
movq -0x18(%rbp), %rcx
movl 0x20(%rcx), %ecx
xorl -0xa8(%rbp), %ecx
shll $0xd, %ecx
orl %ecx, %eax
movl %eax, -0x40(%rbp)
movq -0x18(%rbp), %rax
movl 0x5c(%rax), %eax
xorl -0xb4(%rbp), %eax
shrl $0x18, %eax
movq -0x18(%rbp), %rcx
movl 0x5c(%rcx), %ecx
xorl -0xb4(%rbp), %ecx
shll $0x8, %ecx
orl %ecx, %eax
movl %eax, -0x3c(%rbp)
movq -0x18(%rbp), %rax
movl 0x34(%rax), %eax
xorl -0xac(%rbp), %eax
shrl $0x11, %eax
movq -0x18(%rbp), %rcx
movl 0x34(%rcx), %ecx
xorl -0xac(%rbp), %ecx
shll $0xf, %ecx
orl %ecx, %eax
movl %eax, -0x38(%rbp)
movq -0x18(%rbp), %rax
movl 0xc(%rax), %eax
xorl -0xa4(%rbp), %eax
shrl $0x17, %eax
movq -0x18(%rbp), %rcx
movl 0xc(%rcx), %ecx
xorl -0xa4(%rbp), %ecx
shll $0x9, %ecx
orl %ecx, %eax
movl %eax, -0x34(%rbp)
movq -0x18(%rbp), %rax
movl 0x60(%rax), %eax
xorl -0xb4(%rbp), %eax
shrl $0x12, %eax
movq -0x18(%rbp), %rcx
movl 0x60(%rcx), %ecx
xorl -0xb4(%rbp), %ecx
shll $0xe, %ecx
orl %ecx, %eax
movl %eax, -0x30(%rbp)
movq -0x18(%rbp), %rax
movl 0x38(%rax), %eax
xorl -0xac(%rbp), %eax
shrl $0x3, %eax
movq -0x18(%rbp), %rcx
movl 0x38(%rcx), %ecx
xorl -0xac(%rbp), %ecx
shll $0x1d, %ecx
orl %ecx, %eax
movl %eax, -0x2c(%rbp)
movq -0x18(%rbp), %rax
movl 0x10(%rax), %eax
xorl -0xa4(%rbp), %eax
shrl $0xe, %eax
movq -0x18(%rbp), %rcx
movl 0x10(%rcx), %ecx
xorl -0xa4(%rbp), %ecx
shll $0x12, %ecx
orl %ecx, %eax
movl %eax, -0x28(%rbp)
movq -0x18(%rbp), %rax
movl 0x4c(%rax), %eax
xorl -0xb0(%rbp), %eax
shrl $0x8, %eax
movq -0x18(%rbp), %rcx
movl 0x4c(%rcx), %ecx
xorl -0xb0(%rbp), %ecx
shll $0x18, %ecx
orl %ecx, %eax
movl %eax, -0x24(%rbp)
movq -0x18(%rbp), %rax
movl 0x24(%rax), %eax
xorl -0xa8(%rbp), %eax
shrl $0x1e, %eax
movq -0x18(%rbp), %rcx
movl 0x24(%rcx), %ecx
xorl -0xa8(%rbp), %ecx
shll $0x2, %ecx
orl %ecx, %eax
movl %eax, -0x20(%rbp)
movl -0x80(%rbp), %ecx
movl -0x6c(%rbp), %eax
xorl $-0x1, %eax
andl -0x58(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, (%rax)
movl -0x7c(%rbp), %ecx
movl -0x68(%rbp), %eax
xorl $-0x1, %eax
andl -0x54(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x78(%rbp), %ecx
movl -0x64(%rbp), %eax
xorl $-0x1, %eax
andl -0x50(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x8(%rax)
movl -0x74(%rbp), %ecx
movl -0x60(%rbp), %eax
xorl $-0x1, %eax
andl -0x4c(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xc(%rax)
movl -0x70(%rbp), %ecx
movl -0x5c(%rbp), %eax
xorl $-0x1, %eax
andl -0x48(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x10(%rax)
movl -0x6c(%rbp), %ecx
movl -0x58(%rbp), %eax
xorl $-0x1, %eax
andl -0x44(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x14(%rax)
movl -0x68(%rbp), %ecx
movl -0x54(%rbp), %eax
xorl $-0x1, %eax
andl -0x40(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x18(%rax)
movl -0x64(%rbp), %ecx
movl -0x50(%rbp), %eax
xorl $-0x1, %eax
andl -0x3c(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x1c(%rax)
movl -0x60(%rbp), %ecx
movl -0x4c(%rbp), %eax
xorl $-0x1, %eax
andl -0x38(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x20(%rax)
movl -0x5c(%rbp), %ecx
movl -0x48(%rbp), %eax
xorl $-0x1, %eax
andl -0x34(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x24(%rax)
movl -0x58(%rbp), %ecx
movl -0x44(%rbp), %eax
xorl $-0x1, %eax
andl -0x30(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x28(%rax)
movl -0x54(%rbp), %ecx
movl -0x40(%rbp), %eax
xorl $-0x1, %eax
andl -0x2c(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x2c(%rax)
movl -0x50(%rbp), %ecx
movl -0x3c(%rbp), %eax
xorl $-0x1, %eax
andl -0x28(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x30(%rax)
movl -0x4c(%rbp), %ecx
movl -0x38(%rbp), %eax
xorl $-0x1, %eax
andl -0x24(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x34(%rax)
movl -0x48(%rbp), %ecx
movl -0x34(%rbp), %eax
xorl $-0x1, %eax
andl -0x20(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x38(%rax)
movl -0x44(%rbp), %ecx
movl -0x30(%rbp), %eax
xorl $-0x1, %eax
andl -0x80(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x3c(%rax)
movl -0x40(%rbp), %ecx
movl -0x2c(%rbp), %eax
xorl $-0x1, %eax
andl -0x7c(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x40(%rax)
movl -0x3c(%rbp), %ecx
movl -0x28(%rbp), %eax
xorl $-0x1, %eax
andl -0x78(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x44(%rax)
movl -0x38(%rbp), %ecx
movl -0x24(%rbp), %eax
xorl $-0x1, %eax
andl -0x74(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x48(%rax)
movl -0x34(%rbp), %ecx
movl -0x20(%rbp), %eax
xorl $-0x1, %eax
andl -0x70(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x4c(%rax)
movl -0x30(%rbp), %ecx
movl -0x80(%rbp), %eax
xorl $-0x1, %eax
andl -0x6c(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x50(%rax)
movl -0x2c(%rbp), %ecx
movl -0x7c(%rbp), %eax
xorl $-0x1, %eax
andl -0x68(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x54(%rax)
movl -0x28(%rbp), %ecx
movl -0x78(%rbp), %eax
xorl $-0x1, %eax
andl -0x64(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x58(%rax)
movl -0x24(%rbp), %ecx
movl -0x74(%rbp), %eax
xorl $-0x1, %eax
andl -0x60(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x5c(%rax)
movl -0x20(%rbp), %ecx
movl -0x70(%rbp), %eax
xorl $-0x1, %eax
andl -0x5c(%rbp), %eax
xorl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x60(%rax)
movl -0xc(%rbp), %ecx
movq -0x18(%rbp), %rax
xorl (%rax), %ecx
movl %ecx, (%rax)
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax,%rax)