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

// Assembly:
movq %rdi, -0x8(%rsp)
movq -0x8(%rsp), %rax
movq (%rax), %rcx
movq %rcx, -0x18(%rsp)
movq 0x8(%rax), %rax
movq %rax, -0x10(%rsp)
movzbl -0x18(%rsp), %eax
movl %eax, %ecx
leaq 0x29b7(%rip), %rax      # 0x4110
movzbl (%rax,%rcx), %eax
movzbl -0x13(%rsp), %ecx
movl %ecx, %edx
leaq 0x2aa5(%rip), %rcx      # 0x4210
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0xe(%rsp), %ecx
movl %ecx, %edx
leaq 0x2881(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x9(%rsp), %ecx
movl %ecx, %edx
leaq 0x286d(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movb %al, %cl
movq -0x8(%rsp), %rax
movb %cl, (%rax)
movzbl -0x18(%rsp), %eax
movl %eax, %ecx
leaq 0x2850(%rip), %rax      # 0x4000
movzbl (%rax,%rcx), %eax
movzbl -0x13(%rsp), %ecx
movl %ecx, %edx
leaq 0x294e(%rip), %rcx      # 0x4110
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0xe(%rsp), %ecx
movl %ecx, %edx
leaq 0x2a3a(%rip), %rcx      # 0x4210
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x9(%rsp), %ecx
movl %ecx, %edx
leaq 0x2816(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movb %al, %cl
movq -0x8(%rsp), %rax
movb %cl, 0x1(%rax)
movzbl -0x18(%rsp), %eax
movl %eax, %ecx
leaq 0x27f8(%rip), %rax      # 0x4000
movzbl (%rax,%rcx), %eax
movzbl -0x13(%rsp), %ecx
movl %ecx, %edx
leaq 0x27e6(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0xe(%rsp), %ecx
movl %ecx, %edx
leaq 0x28e2(%rip), %rcx      # 0x4110
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x9(%rsp), %ecx
movl %ecx, %edx
leaq 0x29ce(%rip), %rcx      # 0x4210
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movb %al, %cl
movq -0x8(%rsp), %rax
movb %cl, 0x2(%rax)
movzbl -0x18(%rsp), %eax
movl %eax, %ecx
leaq 0x29b0(%rip), %rax      # 0x4210
movzbl (%rax,%rcx), %eax
movzbl -0x13(%rsp), %ecx
movl %ecx, %edx
leaq 0x278e(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0xe(%rsp), %ecx
movl %ecx, %edx
leaq 0x277a(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x9(%rsp), %ecx
movl %ecx, %edx
leaq 0x2876(%rip), %rcx      # 0x4110
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movb %al, %cl
movq -0x8(%rsp), %rax
movb %cl, 0x3(%rax)
movzbl -0x14(%rsp), %eax
movl %eax, %ecx
leaq 0x2858(%rip), %rax      # 0x4110
movzbl (%rax,%rcx), %eax
movzbl -0xf(%rsp), %ecx
movl %ecx, %edx
leaq 0x2946(%rip), %rcx      # 0x4210
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0xa(%rsp), %ecx
movl %ecx, %edx
leaq 0x2722(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x15(%rsp), %ecx
movl %ecx, %edx
leaq 0x270e(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movb %al, %cl
movq -0x8(%rsp), %rax
movb %cl, 0x4(%rax)
movzbl -0x14(%rsp), %eax
movl %eax, %ecx
leaq 0x26f0(%rip), %rax      # 0x4000
movzbl (%rax,%rcx), %eax
movzbl -0xf(%rsp), %ecx
movl %ecx, %edx
leaq 0x27ee(%rip), %rcx      # 0x4110
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0xa(%rsp), %ecx
movl %ecx, %edx
leaq 0x28da(%rip), %rcx      # 0x4210
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x15(%rsp), %ecx
movl %ecx, %edx
leaq 0x26b6(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movb %al, %cl
movq -0x8(%rsp), %rax
movb %cl, 0x5(%rax)
movzbl -0x14(%rsp), %eax
movl %eax, %ecx
leaq 0x2698(%rip), %rax      # 0x4000
movzbl (%rax,%rcx), %eax
movzbl -0xf(%rsp), %ecx
movl %ecx, %edx
leaq 0x2686(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0xa(%rsp), %ecx
movl %ecx, %edx
leaq 0x2782(%rip), %rcx      # 0x4110
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x15(%rsp), %ecx
movl %ecx, %edx
leaq 0x286e(%rip), %rcx      # 0x4210
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movb %al, %cl
movq -0x8(%rsp), %rax
movb %cl, 0x6(%rax)
movzbl -0x14(%rsp), %eax
movl %eax, %ecx
leaq 0x2850(%rip), %rax      # 0x4210
movzbl (%rax,%rcx), %eax
movzbl -0xf(%rsp), %ecx
movl %ecx, %edx
leaq 0x262e(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0xa(%rsp), %ecx
movl %ecx, %edx
leaq 0x261a(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x15(%rsp), %ecx
movl %ecx, %edx
leaq 0x2716(%rip), %rcx      # 0x4110
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movb %al, %cl
movq -0x8(%rsp), %rax
movb %cl, 0x7(%rax)
movzbl -0x10(%rsp), %eax
movl %eax, %ecx
leaq 0x26f8(%rip), %rax      # 0x4110
movzbl (%rax,%rcx), %eax
movzbl -0xb(%rsp), %ecx
movl %ecx, %edx
leaq 0x27e6(%rip), %rcx      # 0x4210
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x16(%rsp), %ecx
movl %ecx, %edx
leaq 0x25c2(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x11(%rsp), %ecx
movl %ecx, %edx
leaq 0x25ae(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movb %al, %cl
movq -0x8(%rsp), %rax
movb %cl, 0x8(%rax)
movzbl -0x10(%rsp), %eax
movl %eax, %ecx
leaq 0x2590(%rip), %rax      # 0x4000
movzbl (%rax,%rcx), %eax
movzbl -0xb(%rsp), %ecx
movl %ecx, %edx
leaq 0x268e(%rip), %rcx      # 0x4110
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x16(%rsp), %ecx
movl %ecx, %edx
leaq 0x277a(%rip), %rcx      # 0x4210
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x11(%rsp), %ecx
movl %ecx, %edx
leaq 0x2556(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movb %al, %cl
movq -0x8(%rsp), %rax
movb %cl, 0x9(%rax)
movzbl -0x10(%rsp), %eax
movl %eax, %ecx
leaq 0x2538(%rip), %rax      # 0x4000
movzbl (%rax,%rcx), %eax
movzbl -0xb(%rsp), %ecx
movl %ecx, %edx
leaq 0x2526(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x16(%rsp), %ecx
movl %ecx, %edx
leaq 0x2622(%rip), %rcx      # 0x4110
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x11(%rsp), %ecx
movl %ecx, %edx
leaq 0x270e(%rip), %rcx      # 0x4210
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movb %al, %cl
movq -0x8(%rsp), %rax
movb %cl, 0xa(%rax)
movzbl -0x10(%rsp), %eax
movl %eax, %ecx
leaq 0x26f0(%rip), %rax      # 0x4210
movzbl (%rax,%rcx), %eax
movzbl -0xb(%rsp), %ecx
movl %ecx, %edx
leaq 0x24ce(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x16(%rsp), %ecx
movl %ecx, %edx
leaq 0x24ba(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x11(%rsp), %ecx
movl %ecx, %edx
leaq 0x25b6(%rip), %rcx      # 0x4110
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movb %al, %cl
movq -0x8(%rsp), %rax
movb %cl, 0xb(%rax)
movzbl -0xc(%rsp), %eax
movl %eax, %ecx
leaq 0x2598(%rip), %rax      # 0x4110
movzbl (%rax,%rcx), %eax
movzbl -0x17(%rsp), %ecx
movl %ecx, %edx
leaq 0x2686(%rip), %rcx      # 0x4210
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x12(%rsp), %ecx
movl %ecx, %edx
leaq 0x2462(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0xd(%rsp), %ecx
movl %ecx, %edx
leaq 0x244e(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movb %al, %cl
movq -0x8(%rsp), %rax
movb %cl, 0xc(%rax)
movzbl -0xc(%rsp), %eax
movl %eax, %ecx
leaq 0x2430(%rip), %rax      # 0x4000
movzbl (%rax,%rcx), %eax
movzbl -0x17(%rsp), %ecx
movl %ecx, %edx
leaq 0x252e(%rip), %rcx      # 0x4110
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x12(%rsp), %ecx
movl %ecx, %edx
leaq 0x261a(%rip), %rcx      # 0x4210
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0xd(%rsp), %ecx
movl %ecx, %edx
leaq 0x23f6(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movb %al, %cl
movq -0x8(%rsp), %rax
movb %cl, 0xd(%rax)
movzbl -0xc(%rsp), %eax
movl %eax, %ecx
leaq 0x23d8(%rip), %rax      # 0x4000
movzbl (%rax,%rcx), %eax
movzbl -0x17(%rsp), %ecx
movl %ecx, %edx
leaq 0x23c6(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x12(%rsp), %ecx
movl %ecx, %edx
leaq 0x24c2(%rip), %rcx      # 0x4110
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0xd(%rsp), %ecx
movl %ecx, %edx
leaq 0x25ae(%rip), %rcx      # 0x4210
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movb %al, %cl
movq -0x8(%rsp), %rax
movb %cl, 0xe(%rax)
movzbl -0xc(%rsp), %eax
movl %eax, %ecx
leaq 0x2590(%rip), %rax      # 0x4210
movzbl (%rax,%rcx), %eax
movzbl -0x17(%rsp), %ecx
movl %ecx, %edx
leaq 0x236e(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0x12(%rsp), %ecx
movl %ecx, %edx
leaq 0x235a(%rip), %rcx      # 0x4000
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movzbl -0xd(%rsp), %ecx
movl %ecx, %edx
leaq 0x2456(%rip), %rcx      # 0x4110
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movb %al, %cl
movq -0x8(%rsp), %rax
movb %cl, 0xf(%rax)
retq
nopl (%rax,%rax)