// File: /workspace/github_c_makefile_star2_O0/ww9210[P]xnuca_final_ssp/sha3.c
// Function: rhash_sha3_permutation
static void rhash_sha3_permutation(uint64_t *state)
{
	int round;
	for (round = 0; round < NumberOfRounds; round++)
	{
		keccak_theta(state);

		/* apply Keccak rho() transformation */
		state[ 1] = ROTL64(state[ 1],  1);
		state[ 2] = ROTL64(state[ 2], 62);
		state[ 3] = ROTL64(state[ 3], 28);
		state[ 4] = ROTL64(state[ 4], 27);
		state[ 5] = ROTL64(state[ 5], 36);
		state[ 6] = ROTL64(state[ 6], 44);
		state[ 7] = ROTL64(state[ 7],  6);
		state[ 8] = ROTL64(state[ 8], 55);
		state[ 9] = ROTL64(state[ 9], 20);
		state[10] = ROTL64(state[10],  3);
		state[11] = ROTL64(state[11], 10);
		state[12] = ROTL64(state[12], 43);
		state[13] = ROTL64(state[13], 25);
		state[14] = ROTL64(state[14], 39);
		state[15] = ROTL64(state[15], 41);
		state[16] = ROTL64(state[16], 45);
		state[17] = ROTL64(state[17], 15);
		state[18] = ROTL64(state[18], 21);
		state[19] = ROTL64(state[19],  8);
		state[20] = ROTL64(state[20], 18);
		state[21] = ROTL64(state[21],  2);
		state[22] = ROTL64(state[22], 61);
		state[23] = ROTL64(state[23], 56);
		state[24] = ROTL64(state[24], 14);

		keccak_pi(state);
		keccak_chi(state);

		/* apply iota(state, round) */
		*state ^= keccak_round_constants[round];
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movl $0x0, -0xc(%rbp)
cmpl $0x18, -0xc(%rbp)
jge 0x33f7
movq -0x8(%rbp), %rdi
callq 0x3400
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rcx
shlq %rcx
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
shrq $0x3f, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rcx
shlq $0x3e, %rcx
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
shrq $0x2, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rcx
shlq $0x1c, %rcx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
shrq $0x24, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rcx
shlq $0x1b, %rcx
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
shrq $0x25, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rcx
shlq $0x24, %rcx
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
shrq $0x1c, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rcx
shlq $0x2c, %rcx
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
shrq $0x14, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rcx
shlq $0x6, %rcx
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
shrq $0x3a, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rcx
shlq $0x37, %rcx
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rax
shrq $0x9, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x40(%rax)
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rcx
shlq $0x14, %rcx
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
shrq $0x2c, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x48(%rax)
movq -0x8(%rbp), %rax
movq 0x50(%rax), %rcx
shlq $0x3, %rcx
movq -0x8(%rbp), %rax
movq 0x50(%rax), %rax
shrq $0x3d, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x50(%rax)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rcx
shlq $0xa, %rcx
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
shrq $0x36, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x58(%rax)
movq -0x8(%rbp), %rax
movq 0x60(%rax), %rcx
shlq $0x2b, %rcx
movq -0x8(%rbp), %rax
movq 0x60(%rax), %rax
shrq $0x15, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x60(%rax)
movq -0x8(%rbp), %rax
movq 0x68(%rax), %rcx
shlq $0x19, %rcx
movq -0x8(%rbp), %rax
movq 0x68(%rax), %rax
shrq $0x27, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x68(%rax)
movq -0x8(%rbp), %rax
movq 0x70(%rax), %rcx
shlq $0x27, %rcx
movq -0x8(%rbp), %rax
movq 0x70(%rax), %rax
shrq $0x19, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x70(%rax)
movq -0x8(%rbp), %rax
movq 0x78(%rax), %rcx
shlq $0x29, %rcx
movq -0x8(%rbp), %rax
movq 0x78(%rax), %rax
shrq $0x17, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x78(%rax)
movq -0x8(%rbp), %rax
movq 0x80(%rax), %rcx
shlq $0x2d, %rcx
movq -0x8(%rbp), %rax
movq 0x80(%rax), %rax
shrq $0x13, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x80(%rax)
movq -0x8(%rbp), %rax
movq 0x88(%rax), %rcx
shlq $0xf, %rcx
movq -0x8(%rbp), %rax
movq 0x88(%rax), %rax
shrq $0x31, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x88(%rax)
movq -0x8(%rbp), %rax
movq 0x90(%rax), %rcx
shlq $0x15, %rcx
movq -0x8(%rbp), %rax
movq 0x90(%rax), %rax
shrq $0x2b, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x90(%rax)
movq -0x8(%rbp), %rax
movq 0x98(%rax), %rcx
shlq $0x8, %rcx
movq -0x8(%rbp), %rax
movq 0x98(%rax), %rax
shrq $0x38, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x98(%rax)
movq -0x8(%rbp), %rax
movq 0xa0(%rax), %rcx
shlq $0x12, %rcx
movq -0x8(%rbp), %rax
movq 0xa0(%rax), %rax
shrq $0x2e, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0xa0(%rax)
movq -0x8(%rbp), %rax
movq 0xa8(%rax), %rcx
shlq $0x2, %rcx
movq -0x8(%rbp), %rax
movq 0xa8(%rax), %rax
shrq $0x3e, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0xa8(%rax)
movq -0x8(%rbp), %rax
movq 0xb0(%rax), %rcx
shlq $0x3d, %rcx
movq -0x8(%rbp), %rax
movq 0xb0(%rax), %rax
shrq $0x3, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0xb0(%rax)
movq -0x8(%rbp), %rax
movq 0xb8(%rax), %rcx
shlq $0x38, %rcx
movq -0x8(%rbp), %rax
movq 0xb8(%rax), %rax
shrq $0x8, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0xb8(%rax)
movq -0x8(%rbp), %rax
movq 0xc0(%rax), %rcx
shlq $0xe, %rcx
movq -0x8(%rbp), %rax
movq 0xc0(%rax), %rax
shrq $0x32, %rax
xorq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0xc0(%rax)
movq -0x8(%rbp), %rdi
callq 0x35a0
movq -0x8(%rbp), %rdi
callq 0x3770
movslq -0xc(%rbp), %rcx
leaq 0x6d55(%rip), %rax      # 0xa130
movq (%rax,%rcx,8), %rcx
movq -0x8(%rbp), %rax
xorq (%rax), %rcx
movq %rcx, (%rax)
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x3013
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)