// File: /workspace/github_cpp_makefile_star2_O2/xdsopl[P]FEC/tables_generator.cc
// Function: TablesGenerator<8, 285, unsigned char>::generate(char const*)
static void generate(const char *type)
	{
		TYPE log[Q], exp[Q];
		log[exp[N] = 0] = N;
		TYPE a = 1;
		for (int i = 0; i < N; ++i, a = next(a))
			log[exp[i] = a] = i;
		assert(1 == a);
		TYPE Artin_Schreier_imap[Q];
		for (int i = 0; i < Q; ++i)
			Artin_Schreier_imap[i] = 0;
		for (int x = 2; x < N; x += 2) {
			int xxx = exp[(2*log[x])%N]^x;
			if (xxx == N)
				continue;
			assert(xxx);
			assert(!Artin_Schreier_imap[xxx]);
			Artin_Schreier_imap[xxx] = x;
		}
		std::cout << "template <>" << std::endl;
		std::cout << "struct Tables<" << M << ", " << POLY << ", " << type << ">\n{\n";
		print(log, "log", type, Q);
		print(exp, "exp", type, Q);
		print(Artin_Schreier_imap, "Artin_Schreier_imap", type, Q);
		std::cout << "};\n" << std::endl;
	}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x300, %rsp            # imm = 0x300
movq %rdi, %rbx
movb $0x0, 0x1ff(%rsp)
movb $-0x1, 0x200(%rsp)
movb $0x1, %cl
xorl %eax, %eax
cmpq $0xff, %rax
je 0x1450
movb %cl, 0x100(%rsp,%rax)
movzbl %cl, %ecx
movb %al, 0x200(%rsp,%rcx)
incq %rax
leal (%rcx,%rcx), %edx
movzbl %dl, %esi
xorb $0x1d, %dl
testb %cl, %cl
movzbl %dl, %ecx
cmovnsl %esi, %ecx
jmp 0x1421
cmpb $0x1, %cl
jne 0x15e4
xorl %eax, %eax
cmpq $0x100, %rax            # imm = 0x100
je 0x146c
movb $0x0, (%rsp,%rax)
incq %rax
jmp 0x145b
pushq $0x2
popq %rcx
movw $0xff, %si
cmpq $0xff, %rcx
jae 0x14bf
movzbl 0x200(%rsp,%rcx), %eax
addl %eax, %eax
xorl %edx, %edx
divw %si
movzwl %dx, %eax
movzbl 0x100(%rsp,%rax), %edx
movl %ecx, %eax
xorl %edx, %eax
cmpl $0xff, %eax
je 0x14b9
cmpq %rdx, %rcx
je 0x15ae
movl %eax, %eax
cmpb $0x0, (%rsp,%rax)
jne 0x15c7
movb %cl, (%rsp,%rax)
addq $0x2, %rcx
jmp 0x1473
movq 0x2b12(%rip), %r14      # 0x3fd8
leaq 0xc50(%rip), %rsi       # 0x211d
movq %r14, %rdi
callq 0x1060
movq %rax, %rdi
callq 0x1030
leaq 0xc45(%rip), %rsi       # 0x2129
movq %r14, %rdi
callq 0x1060
pushq $0x8
popq %rsi
movq %rax, %rdi
callq 0x1080
leaq 0xc3a(%rip), %r15       # 0x2138
movq %rax, %rdi
movq %r15, %rsi
callq 0x1060
movq %rax, %rdi
movl $0x11d, %esi            # imm = 0x11D
callq 0x1080
movq %rax, %rdi
movq %r15, %rsi
callq 0x1060
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1060
leaq 0xc08(%rip), %rsi       # 0x213b
movq %rax, %rdi
callq 0x1060
leaq 0xbfe(%rip), %rsi       # 0x2140
leaq 0x200(%rsp), %rdi
movq %rbx, %rdx
movl $0x100, %ecx            # imm = 0x100
callq 0x1b48
leaq 0xbe6(%rip), %rsi       # 0x2144
leaq 0x100(%rsp), %rdi
movq %rbx, %rdx
movl $0x100, %ecx            # imm = 0x100
callq 0x1b48
leaq 0xbce(%rip), %rsi       # 0x2148
movq %rsp, %rdi
movq %rbx, %rdx
movl $0x100, %ecx            # imm = 0x100
callq 0x1b48
leaq 0xbcb(%rip), %rsi       # 0x215c
movq %r14, %rdi
callq 0x1060
movq %rax, %rdi
callq 0x1030
addq $0x300, %rsp            # imm = 0x300
popq %rbx
popq %r14
popq %r15
retq
leaq 0xb4a(%rip), %rdi       # 0x20ff
leaq 0xabc(%rip), %rsi       # 0x2078
leaq 0xbeb(%rip), %rcx       # 0x21ae
pushq $0x22
jmp 0x15de
leaq 0xb35(%rip), %rdi       # 0x2103
leaq 0xaa3(%rip), %rsi       # 0x2078
leaq 0xbd2(%rip), %rcx       # 0x21ae
pushq $0x23
popq %rdx
callq 0x1040
leaq 0xa86(%rip), %rdi       # 0x2071
leaq 0xa86(%rip), %rsi       # 0x2078
leaq 0xbb5(%rip), %rcx       # 0x21ae
pushq $0x1a
jmp 0x15de
nop