// File: /workspace/github_cpp_makefile_star2_O1/bakeunbin[P]inverse_mix_column_precalculated/invmc.cpp
// Function: aes::soft::inv_mc_gmul(unsigned char*)
void inv_mc_gmul (uint8_t * data) noexcept
	{
		for (int i = 0 ; i < 4 ; i ++)
		{
			uint8_t a [4];

			memcpy (a, data + i * 4, 4);
			
			data [i * 4 + 0] = gmul (14, a [0]) ^ gmul (11, a [1]) ^ gmul (13, a [2]) ^ gmul (9, a [3]);
			data [i * 4 + 1] = gmul (9, a [0]) ^ gmul (14, a [1]) ^ gmul (11, a [2]) ^ gmul (13, a [3]);
			data [i * 4 + 2] = gmul (13, a [0]) ^ gmul (9, a [1]) ^ gmul (14, a [2]) ^ gmul (11, a [3]);
			data [i * 4 + 3] = gmul (11, a [0]) ^ gmul (13, a [1]) ^ gmul (9, a [2]) ^ gmul (14, a [3]);
		}
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
xorl %eax, %eax
leaq (,%rax,4), %rcx
movb (%rdi,%rax,4), %r9b
movb 0x1(%rdi,%rax,4), %r8b
movb 0x2(%rdi,%rax,4), %sil
movb 0x3(%rdi,%rax,4), %dl
movb $0xe, %r10b
movl $0x8, %ebx
xorl %r11d, %r11d
movl %r9d, %ebp
movl %ebp, %r14d
andb $0x1, %r14b
negb %r14b
andb %r10b, %r14b
xorb %r14b, %r11b
leal (%r10,%r10), %r14d
sarb $0x7, %r10b
andb $0x1b, %r10b
xorb %r14b, %r10b
shrb %bpl
decl %ebx
jne 0x14cc
movb $0xb, %bl
movl $0x8, %ebp
xorl %r10d, %r10d
movl %r8d, %r14d
movl %r14d, %r15d
andb $0x1, %r15b
negb %r15b
andb %bl, %r15b
xorb %r15b, %r10b
leal (%rbx,%rbx), %r15d
sarb $0x7, %bl
andb $0x1b, %bl
xorb %r15b, %bl
shrb %r14b
decl %ebp
jne 0x14ff
movb $0xd, %r14b
movl $0x8, %ebp
xorl %ebx, %ebx
movl %esi, %r15d
movl %r15d, %r12d
andb $0x1, %r12b
negb %r12b
andb %r14b, %r12b
xorb %r12b, %bl
leal (%r14,%r14), %r12d
sarb $0x7, %r14b
andb $0x1b, %r14b
xorb %r12b, %r14b
shrb %r15b
decl %ebp
jne 0x1530
xorb %r11b, %r10b
movb $0x9, %r14b
movl $0x8, %ebp
xorl %r11d, %r11d
movl %edx, %r15d
movl %r15d, %r12d
andb $0x1, %r12b
negb %r12b
andb %r14b, %r12b
xorb %r12b, %r11b
leal (%r14,%r14), %r12d
sarb $0x7, %r14b
andb $0x1b, %r14b
xorb %r12b, %r14b
shrb %r15b
decl %ebp
jne 0x1567
xorb %bl, %r10b
xorb %r11b, %r10b
movb %r10b, (%rdi,%rcx)
movb $0x9, %r10b
movl $0x8, %ebx
xorl %r11d, %r11d
movl %r9d, %ebp
movl %ebp, %r14d
andb $0x1, %r14b
negb %r14b
andb %r10b, %r14b
xorb %r14b, %r11b
leal (%r10,%r10), %r14d
sarb $0x7, %r10b
andb $0x1b, %r10b
xorb %r14b, %r10b
shrb %bpl
decl %ebx
jne 0x15a5
movb $0xe, %bl
movl $0x8, %ebp
xorl %r10d, %r10d
movl %r8d, %r14d
movl %r14d, %r15d
andb $0x1, %r15b
negb %r15b
andb %bl, %r15b
xorb %r15b, %r10b
leal (%rbx,%rbx), %r15d
sarb $0x7, %bl
andb $0x1b, %bl
xorb %r15b, %bl
shrb %r14b
decl %ebp
jne 0x15d8
movb $0xb, %r14b
movl $0x8, %ebp
xorl %ebx, %ebx
movl %esi, %r15d
movl %r15d, %r12d
andb $0x1, %r12b
negb %r12b
andb %r14b, %r12b
xorb %r12b, %bl
leal (%r14,%r14), %r12d
sarb $0x7, %r14b
andb $0x1b, %r14b
xorb %r12b, %r14b
shrb %r15b
decl %ebp
jne 0x1609
xorb %r11b, %r10b
movb $0xd, %r14b
movl $0x8, %ebp
xorl %r11d, %r11d
movl %edx, %r15d
movl %r15d, %r12d
andb $0x1, %r12b
negb %r12b
andb %r14b, %r12b
xorb %r12b, %r11b
leal (%r14,%r14), %r12d
sarb $0x7, %r14b
andb $0x1b, %r14b
xorb %r12b, %r14b
shrb %r15b
decl %ebp
jne 0x1640
xorb %bl, %r10b
xorb %r11b, %r10b
movb %r10b, 0x1(%rdi,%rcx)
movb $0xd, %r10b
movl $0x8, %ebx
xorl %r11d, %r11d
movl %r9d, %ebp
movl %ebp, %r14d
andb $0x1, %r14b
negb %r14b
andb %r10b, %r14b
xorb %r14b, %r11b
leal (%r10,%r10), %r14d
sarb $0x7, %r10b
andb $0x1b, %r10b
xorb %r14b, %r10b
shrb %bpl
decl %ebx
jne 0x167f
movb $0x9, %bl
movl $0x8, %ebp
xorl %r10d, %r10d
movl %r8d, %r14d
movl %r14d, %r15d
andb $0x1, %r15b
negb %r15b
andb %bl, %r15b
xorb %r15b, %r10b
leal (%rbx,%rbx), %r15d
sarb $0x7, %bl
andb $0x1b, %bl
xorb %r15b, %bl
shrb %r14b
decl %ebp
jne 0x16b2
movb $0xe, %r14b
movl $0x8, %ebp
xorl %ebx, %ebx
movl %esi, %r15d
movl %r15d, %r12d
andb $0x1, %r12b
negb %r12b
andb %r14b, %r12b
xorb %r12b, %bl
leal (%r14,%r14), %r12d
sarb $0x7, %r14b
andb $0x1b, %r14b
xorb %r12b, %r14b
shrb %r15b
decl %ebp
jne 0x16e3
xorb %r11b, %r10b
movb $0xb, %r14b
movl $0x8, %ebp
xorl %r11d, %r11d
movl %edx, %r15d
movl %r15d, %r12d
andb $0x1, %r12b
negb %r12b
andb %r14b, %r12b
xorb %r12b, %r11b
leal (%r14,%r14), %r12d
sarb $0x7, %r14b
andb $0x1b, %r14b
xorb %r12b, %r14b
shrb %r15b
decl %ebp
jne 0x171a
xorb %bl, %r10b
xorb %r11b, %r10b
movb %r10b, 0x2(%rdi,%rcx)
movb $0xb, %r11b
movl $0x8, %ebx
xorl %r10d, %r10d
movl %r9d, %ebp
andb $0x1, %bpl
negb %bpl
andb %r11b, %bpl
xorb %bpl, %r10b
leal (%r11,%r11), %ebp
sarb $0x7, %r11b
andb $0x1b, %r11b
xorb %bpl, %r11b
shrb %r9b
decl %ebx
jne 0x1756
movb $0xd, %r11b
movl $0x8, %ebx
xorl %r9d, %r9d
movl %r8d, %ebp
andb $0x1, %bpl
negb %bpl
andb %r11b, %bpl
xorb %bpl, %r9b
leal (%r11,%r11), %ebp
sarb $0x7, %r11b
andb $0x1b, %r11b
xorb %bpl, %r11b
shrb %r8b
decl %ebx
jne 0x1787
movb $0x9, %r11b
movl $0x8, %ebx
xorl %r8d, %r8d
movl %esi, %ebp
andb $0x1, %bpl
negb %bpl
andb %r11b, %bpl
xorb %bpl, %r8b
leal (%r11,%r11), %ebp
sarb $0x7, %r11b
andb $0x1b, %r11b
xorb %bpl, %r11b
shrb %sil
decl %ebx
jne 0x17b8
xorb %r10b, %r9b
movb $0xe, %r10b
movl $0x8, %r11d
xorl %esi, %esi
movl %edx, %ebx
andb $0x1, %bl
negb %bl
andb %r10b, %bl
xorb %bl, %sil
leal (%r10,%r10), %ebx
sarb $0x7, %r10b
andb $0x1b, %r10b
xorb %bl, %r10b
shrb %dl
decl %r11d
jne 0x17eb
xorb %r8b, %r9b
xorb %sil, %r9b
movb %r9b, 0x3(%rdi,%rcx)
incq %rax
cmpq $0x4, %rax
jne 0x14a4
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq