// File: /workspace/github_c_makefile_star2_O3/mjosaarinen[P]brutus/crypto_aead/aescopav2/ref/aes-core.c
// Function: aes_isubbyte_ishiftrows_imixcols
void aes_isubbyte_ishiftrows_imixcols(uint8_t state[])
{
	uint8_t tmp[16];
	
	block_copy(tmp, state);
	
	state[0] = isbox(xtimee(tmp[0]) ^ xtimeb(tmp[1]) ^ xtimed(tmp[2]) ^ xtime9(tmp[3]));
	state[5] = isbox(xtime9(tmp[0]) ^ xtimee(tmp[1]) ^ xtimeb(tmp[2]) ^ xtimed(tmp[3]));
	state[10] = isbox(xtimed(tmp[0]) ^ xtime9(tmp[1]) ^ xtimee(tmp[2]) ^ xtimeb(tmp[3]));
	state[15] = isbox(xtimeb(tmp[0]) ^ xtimed(tmp[1]) ^ xtime9(tmp[2]) ^ xtimee(tmp[3]));
	
	state[4] = isbox(xtimee(tmp[4]) ^ xtimeb(tmp[5]) ^ xtimed(tmp[6]) ^ xtime9(tmp[7]));
	state[9] = isbox(xtime9(tmp[4]) ^ xtimee(tmp[5]) ^ xtimeb(tmp[6]) ^ xtimed(tmp[7]));
	state[14] = isbox(xtimed(tmp[4]) ^ xtime9(tmp[5]) ^ xtimee(tmp[6]) ^ xtimeb(tmp[7]));
	state[3] = isbox(xtimeb(tmp[4]) ^ xtimed(tmp[5]) ^ xtime9(tmp[6]) ^ xtimee(tmp[7]));
	
	state[8] = isbox(xtimee(tmp[8]) ^ xtimeb(tmp[9]) ^ xtimed(tmp[10]) ^ xtime9(tmp[11]));
	state[13] = isbox(xtime9(tmp[8]) ^ xtimee(tmp[9]) ^ xtimeb(tmp[10]) ^ xtimed(tmp[11]));
	state[2] = isbox(xtimed(tmp[8]) ^ xtime9(tmp[9]) ^ xtimee(tmp[10]) ^ xtimeb(tmp[11]));
	state[7] = isbox(xtimeb(tmp[8]) ^ xtimed(tmp[9]) ^ xtime9(tmp[10]) ^ xtimee(tmp[11]));
	
	state[12] = isbox(xtimee(tmp[12]) ^ xtimeb(tmp[13]) ^ xtimed(tmp[14]) ^ xtime9(tmp[15]));
	state[1] = isbox(xtime9(tmp[12]) ^ xtimee(tmp[13]) ^ xtimeb(tmp[14]) ^ xtimed(tmp[15]));
	state[6] = isbox(xtimed(tmp[12]) ^ xtime9(tmp[13]) ^ xtimee(tmp[14]) ^ xtimeb(tmp[15]));
	state[11] = isbox(xtimeb(tmp[12]) ^ xtimed(tmp[13]) ^ xtime9(tmp[14]) ^ xtimee(tmp[15]));
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movzbl (%rdi), %r8d
movzbl 0x1(%rdi), %ecx
movzbl 0x2(%rdi), %edx
movzbl 0x3(%rdi), %esi
movzbl 0x4(%rdi), %eax
movq %rax, -0x48(%rsp)
movzbl 0x5(%rdi), %r15d
movzbl 0x6(%rdi), %r12d
movzbl 0x7(%rdi), %ebp
leaq 0x1c6e(%rip), %r14      # 0x3430
leaq 0x1d67(%rip), %rbx      # 0x3530
movb (%rcx,%rbx), %r10b
xorb (%r8,%r14), %r10b
leaq 0x1e58(%rip), %r9       # 0x3630
xorb (%rdx,%r9), %r10b
leaq 0x1f4d(%rip), %r11      # 0x3730
xorb (%rsi,%r11), %r10b
movzbl %r10b, %r13d
leaq 0x1b3e(%rip), %r10      # 0x3330
movb (%r13,%r10), %al
movzbl 0x8(%rdi), %r13d
movq %r13, -0x30(%rsp)
movzbl 0x9(%rdi), %r13d
movq %r13, -0x40(%rsp)
movzbl 0xa(%rdi), %r13d
movq %r13, -0x38(%rsp)
movzbl 0xb(%rdi), %r13d
movq %r13, -0x28(%rsp)
movzbl 0xc(%rdi), %r13d
movq %r13, -0x10(%rsp)
movzbl 0xd(%rdi), %r13d
movq %r13, -0x20(%rsp)
movzbl 0xe(%rdi), %r13d
movq %r13, -0x18(%rsp)
movzbl 0xf(%rdi), %r13d
movq %r13, -0x8(%rsp)
movb %al, (%rdi)
movb (%rcx,%r14), %al
xorb (%r8,%r11), %al
xorb (%rdx,%rbx), %al
xorb (%rsi,%r9), %al
movzbl %al, %eax
movb (%rax,%r10), %al
movb %al, 0x5(%rdi)
movb (%rcx,%r11), %al
xorb (%r8,%r9), %al
xorb (%rdx,%r14), %al
xorb (%rsi,%rbx), %al
movzbl %al, %eax
movb (%rax,%r10), %al
movb %al, 0xa(%rdi)
movb (%rcx,%r9), %al
xorb (%r8,%rbx), %al
xorb (%rdx,%r11), %al
xorb (%rsi,%r14), %al
movzbl %al, %eax
movb (%rax,%r10), %al
movb %al, 0xf(%rdi)
movb (%r15,%rbx), %al
movq -0x48(%rsp), %rcx
xorb (%rcx,%r14), %al
xorb (%r12,%r9), %al
xorb (%rbp,%r11), %al
movzbl %al, %eax
movb (%rax,%r10), %al
movb %al, 0x4(%rdi)
movb (%r15,%r14), %al
xorb (%rcx,%r11), %al
xorb (%r12,%rbx), %al
xorb (%rbp,%r9), %al
movzbl %al, %eax
movb (%rax,%r10), %al
movb %al, 0x9(%rdi)
movb (%r15,%r11), %al
xorb (%rcx,%r9), %al
xorb (%r12,%r14), %al
xorb (%rbp,%rbx), %al
movzbl %al, %eax
movb (%rax,%r10), %al
movb %al, 0xe(%rdi)
movb (%r15,%r9), %al
xorb (%rcx,%rbx), %al
xorb (%r12,%r11), %al
xorb (%rbp,%r14), %al
movzbl %al, %eax
movb (%rax,%r10), %al
movb %al, 0x3(%rdi)
movq -0x40(%rsp), %r8
movb (%r8,%rbx), %al
movq -0x30(%rsp), %rdx
xorb (%rdx,%r14), %al
movq -0x38(%rsp), %rsi
xorb (%rsi,%r9), %al
movq -0x28(%rsp), %rcx
xorb (%rcx,%r11), %al
movzbl %al, %eax
movb (%rax,%r10), %al
movb %al, 0x8(%rdi)
movb (%r8,%r14), %al
xorb (%rdx,%r11), %al
xorb (%rsi,%rbx), %al
xorb (%rcx,%r9), %al
movzbl %al, %eax
movb (%rax,%r10), %al
movb %al, 0xd(%rdi)
movb (%r8,%r11), %al
xorb (%rdx,%r9), %al
xorb (%rsi,%r14), %al
xorb (%rcx,%rbx), %al
movzbl %al, %eax
movb (%rax,%r10), %al
movb %al, 0x2(%rdi)
movb (%r8,%r9), %al
xorb (%rdx,%rbx), %al
xorb (%rsi,%r11), %al
xorb (%rcx,%r14), %al
movzbl %al, %eax
movb (%rax,%r10), %al
movb %al, 0x7(%rdi)
movq -0x20(%rsp), %r8
movb (%r8,%rbx), %al
movq -0x10(%rsp), %rdx
xorb (%rdx,%r14), %al
movq -0x18(%rsp), %rsi
xorb (%rsi,%r9), %al
movq -0x8(%rsp), %rcx
xorb (%rcx,%r11), %al
movzbl %al, %eax
movb (%rax,%r10), %al
movb %al, 0xc(%rdi)
movb (%r8,%r14), %al
xorb (%rdx,%r11), %al
xorb (%rsi,%rbx), %al
xorb (%rcx,%r9), %al
movzbl %al, %eax
movb (%rax,%r10), %al
movb %al, 0x1(%rdi)
movb (%r8,%r11), %al
xorb (%rdx,%r9), %al
xorb (%rsi,%r14), %al
xorb (%rcx,%rbx), %al
movzbl %al, %eax
movb (%rax,%r10), %al
movb %al, 0x6(%rdi)
movb (%r8,%r9), %al
xorb (%rdx,%rbx), %al
xorb (%rsi,%r11), %al
xorb (%rcx,%r14), %al
movzbl %al, %eax
movb (%rax,%r10), %al
movb %al, 0xb(%rdi)
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq