// File: /workspace/github_c_makefile_star2_O3/janmojzis[P]mcencrypt/gf.c
// Function: gf_frac
gf gf_frac(gf den, gf num)
{
	gf tmp_11;
	gf tmp_1111;
	gf out;

	tmp_11 = gf_sqmul(den, den); /* // 11 */
	tmp_1111 = gf_sq2mul(tmp_11, tmp_11); /* // 1111 */
	out = gf_sq2(tmp_1111); 
	out = gf_sq2mul(out, tmp_1111); /* // 11111111 */
	out = gf_sq2(out);
	out = gf_sq2mul(out, tmp_1111); /* // 111111111111 */

	return gf_sqmul(out, num); /* // 1111111111110 */
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movl %esi, -0x3c(%rsp)
movl %edi, %eax
movl %edi, %ecx
andl $0x40, %ecx
imull %edi, %ecx
shll $0x6, %ecx
movl %edi, %edx
shll $0x7, %edx
xorl %edi, %edx
movl %edx, %esi
andl $0x4001, %esi           # imm = 0x4001
imulq %rax, %rsi
xorq %rcx, %rsi
movl %edx, %ecx
andl $0x8002, %ecx           # imm = 0x8002
imulq %rax, %rcx
addq %rcx, %rcx
xorq %rsi, %rcx
movl %edx, %esi
andl $0x10004, %esi          # imm = 0x10004
imulq %rax, %rsi
shlq $0x2, %rsi
movl %edx, %edi
andl $0x20008, %edi          # imm = 0x20008
imulq %rax, %rdi
shlq $0x3, %rdi
xorq %rsi, %rdi
xorq %rcx, %rdi
movl %edx, %ecx
andl $0x40010, %ecx          # imm = 0x40010
imulq %rax, %rcx
shlq $0x4, %rcx
andl $0x80020, %edx          # imm = 0x80020
imulq %rax, %rdx
shlq $0x5, %rdx
xorq %rcx, %rdx
xorq %rdi, %rdx
xorl %eax, %eax
leaq 0x3988(%rip), %rcx      # 0x8de0
movq %rdx, %rsi
movq (%rax,%rcx), %rdx
andq %rsi, %rdx
movq %rdx, %rdi
shrq $0x9, %rdi
movq %rdx, %r8
shrq $0xa, %r8
xorq %rdi, %r8
movq %rdx, %rdi
shrq $0xc, %rdi
shrq $0xd, %rdx
xorq %rdi, %rdx
xorq %r8, %rdx
xorq %rsi, %rdx
addq $0x8, %rax
cmpq $0x18, %rax
jne 0x5458
movabsq $0x1ff0000000000000, %rdi # imm = 0x1FF0000000000000
movabsq $0xff80000000000, %r8   # imm = 0xFF80000000000
movabsq $0x7fc00000000, %r9     # imm = 0x7FC00000000
movabsq $0x3fe000000, %r10      # imm = 0x3FE000000
movabsq $0x200000020, %r13      # imm = 0x200000020
movabsq $0x100000010, %rax      # imm = 0x100000010
movl %edx, %esi
andl $0x1fff, %esi           # imm = 0x1FFF
movq %rdi, -0x38(%rsp)
movq %r8, -0x30(%rsp)
movq %r9, -0x28(%rsp)
movq %r10, -0x20(%rsp)
movq $0x1fe0000, -0x18(%rsp) # imm = 0x1FE0000
movq $0x1e000, -0x10(%rsp)   # imm = 0x1E000
andl $0x40, %edx
imulq %rsi, %rdx
shlq $0x12, %rdx
movq %rsi, %r11
shlq $0x15, %r11
orq %rsi, %r11
movl %r11d, %edi
andl $0x10000001, %edi       # imm = 0x10000001
imulq %rsi, %rdi
xorq %rdx, %rdi
movl %r11d, %edx
andl $0x20000002, %edx       # imm = 0x20000002
imulq %rsi, %rdx
shlq $0x3, %rdx
xorq %rdi, %rdx
movl %r11d, %edi
andl $0x40000004, %edi       # imm = 0x40000004
imulq %rsi, %rdi
shlq $0x6, %rdi
movl %r11d, %r8d
andl $0x80000008, %r8d       # imm = 0x80000008
imulq %rsi, %r8
shlq $0x9, %r8
xorq %rdi, %r8
xorq %rdx, %r8
movq %r11, %rdx
andq %rax, %rdx
imulq %rsi, %rdx
shlq $0xc, %rdx
andq %r13, %r11
imulq %rsi, %r11
shlq $0xf, %r11
xorq %rdx, %r11
xorq %r8, %r11
xorl %edx, %edx
movq %r11, %rsi
movq -0x38(%rsp,%rdx,8), %r11
andq %rsi, %r11
movq %r11, %rdi
shrq $0x9, %rdi
movq %r11, %r8
shrq $0xa, %r8
xorq %rdi, %r8
movq %r11, %rdi
shrq $0xc, %rdi
shrq $0xd, %r11
xorq %rdi, %r11
xorq %r8, %r11
xorq %rsi, %r11
incq %rdx
cmpq $0x6, %rdx
jne 0x557e
movabsq $0x10101010101010, %r9  # imm = 0x10101010101010
movabsq $0x1010101010101, %r8   # imm = 0x1010101010101
movabsq $0x1000f000f000f, %rdi  # imm = 0x1000F000F000F
movabsq $0x1000001000, %r12     # imm = 0x1000001000
andl $0x1fff, %r11d          # imm = 0x1FFF
movq %r11, %rdx
shlq $0x18, %rdx
orq %r11, %rdx
movq %r11, %rsi
imulq %r12, %rsi
orq %rdx, %rsi
andq %rdi, %rsi
movq %rsi, %rdx
shlq $0x6, %rdx
orq %rsi, %rdx
movq %rsi, %rdi
shlq $0x9, %rdi
leaq (%rdi,%rsi,8), %rsi
andq %r9, %rsi
andq %r8, %rdx
orq %rsi, %rdx
xorl %esi, %esi
leaq 0x37dc(%rip), %rbx      # 0x8e00
movq %rdx, %rdi
movq (%rsi,%rbx), %rdx
andq %rdi, %rdx
movq %rdx, %r8
shrq $0x9, %r8
movq %rdx, %r9
shrq $0xa, %r9
xorq %r8, %r9
movq %rdx, %r8
shrq $0xc, %r8
shrq $0xd, %rdx
xorq %r8, %rdx
xorq %r9, %rdx
xorq %rdi, %rdx
addq $0x8, %rsi
cmpq $0x20, %rsi
jne 0x5624
movl %edx, %esi
andl $0x1fff, %esi           # imm = 0x1FFF
movl %r11d, %ebp
shll $0x12, %ebp
andl $0x40, %edx
imulq %rbp, %rdx
movq %rsi, %r10
shlq $0x15, %r10
orq %rsi, %r10
movl %r10d, %edi
andl $0x10000001, %edi       # imm = 0x10000001
imulq %r11, %rdi
xorq %rdx, %rdi
movl %r10d, %r8d
andl $0x20000002, %r8d       # imm = 0x20000002
leal (,%r11,8), %edx
movq %rdx, -0x8(%rsp)
imulq %rdx, %r8
movl %r10d, %r14d
andl $0x40000004, %r14d      # imm = 0x40000004
movl %r11d, %esi
shll $0x6, %esi
imulq %rsi, %r14
xorq %r8, %r14
xorq %rdi, %r14
movl %r10d, %r9d
andl $0x80000008, %r9d       # imm = 0x80000008
movl %r11d, %edi
shll $0x9, %edi
imulq %rdi, %r9
movq %r10, %r15
andq %rax, %r15
movl %r11d, %r8d
shll $0xc, %r8d
imulq %r8, %r15
xorq %r9, %r15
andq %r13, %r10
movl %r11d, %r9d
shll $0xf, %r9d
imulq %r9, %r10
xorq %r15, %r10
movabsq $0x1ff0000000000000, %rdx # imm = 0x1FF0000000000000
movq %rdx, -0x38(%rsp)
movabsq $0xff80000000000, %rdx  # imm = 0xFF80000000000
movq %rdx, -0x30(%rsp)
movabsq $0x7fc00000000, %rdx    # imm = 0x7FC00000000
movq %rdx, -0x28(%rsp)
movabsq $0x3fe000000, %rdx      # imm = 0x3FE000000
movq %rdx, -0x20(%rsp)
movq $0x1fe0000, -0x18(%rsp) # imm = 0x1FE0000
movq $0x1e000, -0x10(%rsp)   # imm = 0x1E000
xorq %r14, %r10
xorl %r14d, %r14d
movq %r10, %r15
movq -0x38(%rsp,%r14,8), %r10
andq %r15, %r10
movq %r10, %r13
shrq $0x9, %r13
movq %r10, %rdx
shrq $0xa, %rdx
xorq %r13, %rdx
movq %r10, %r13
shrq $0xc, %r13
shrq $0xd, %r10
xorq %r13, %r10
xorq %rdx, %r10
xorq %r15, %r10
incq %r14
cmpq $0x6, %r14
jne 0x574e
andl $0x1fff, %r10d          # imm = 0x1FFF
movq %r10, %rdx
shlq $0x18, %rdx
orq %r10, %rdx
imulq %r10, %r12
orq %rdx, %r12
movabsq $0x1000f000f000f, %rdx  # imm = 0x1000F000F000F
andq %rdx, %r12
movq %r12, %r13
shlq $0x6, %r13
addq %r12, %r13
movq %r12, %rdx
shlq $0x9, %rdx
leaq (%rdx,%r12,8), %rdx
movabsq $0x10101010101010, %r10 # imm = 0x10101010101010
andq %r10, %rdx
movabsq $0x1010101010101, %r10  # imm = 0x1010101010101
andq %r10, %r13
orq %rdx, %r13
xorl %r10d, %r10d
movq %r13, %rdx
movq (%r10,%rbx), %r13
andq %rdx, %r13
movq %r13, %r14
shrq $0x9, %r14
movq %r13, %r15
shrq $0xa, %r15
xorq %r14, %r15
movq %r13, %r14
shrq $0xc, %r14
shrq $0xd, %r13
xorq %r14, %r13
xorq %r15, %r13
xorq %rdx, %r13
addq $0x8, %r10
cmpq $0x20, %r10
jne 0x57e1
movl %r13d, %edx
andl $0x1fff, %edx           # imm = 0x1FFF
movabsq $0x1ff0000000000000, %r10 # imm = 0x1FF0000000000000
movq %r10, -0x38(%rsp)
movabsq $0xff80000000000, %r10  # imm = 0xFF80000000000
movq %r10, -0x30(%rsp)
movabsq $0x7fc00000000, %r10    # imm = 0x7FC00000000
movq %r10, -0x28(%rsp)
movabsq $0x3fe000000, %r10      # imm = 0x3FE000000
movq %r10, -0x20(%rsp)
movq $0x1fe0000, -0x18(%rsp) # imm = 0x1FE0000
movq $0x1e000, -0x10(%rsp)   # imm = 0x1E000
andl $0x40, %r13d
imulq %rbp, %r13
movq %rdx, %r10
shlq $0x15, %r10
orq %rdx, %r10
movl %r10d, %edx
andl $0x10000001, %edx       # imm = 0x10000001
imulq %r11, %rdx
xorq %r13, %rdx
movl %r10d, %r11d
andl $0x20000002, %r11d      # imm = 0x20000002
imulq -0x8(%rsp), %r11
movl %r10d, %ebx
andl $0x40000004, %ebx       # imm = 0x40000004
imulq %rsi, %rbx
xorq %r11, %rbx
xorq %rdx, %rbx
movl %r10d, %edx
andl $0x80000008, %edx       # imm = 0x80000008
imulq %rdi, %rdx
andq %r10, %rax
imulq %r8, %rax
xorq %rdx, %rax
movabsq $0x200000020, %rdx      # imm = 0x200000020
andq %rdx, %r10
imulq %r9, %r10
xorq %rax, %r10
xorq %rbx, %r10
xorl %eax, %eax
movq %r10, %rdx
movq -0x38(%rsp,%rax,8), %r10
andq %rdx, %r10
movq %r10, %rsi
shrq $0x9, %rsi
movq %r10, %rdi
shrq $0xa, %rdi
xorq %rsi, %rdi
movq %r10, %rsi
shrq $0xc, %rsi
shrq $0xd, %r10
xorq %rsi, %r10
xorq %rdi, %r10
xorq %rdx, %r10
incq %rax
cmpq $0x6, %rax
jne 0x58e6
movl %r10d, %esi
andl $0x1fff, %esi           # imm = 0x1FFF
movzwl -0x3c(%rsp), %edx
andl $0x40, %r10d
imull %edx, %r10d
shll $0x6, %r10d
movl %esi, %eax
shll $0x7, %eax
xorq %rsi, %rax
movl %eax, %esi
andl $0x4001, %esi           # imm = 0x4001
imulq %rdx, %rsi
xorq %r10, %rsi
movl %eax, %edi
andl $0x8002, %edi           # imm = 0x8002
imulq %rdx, %rdi
addq %rdi, %rdi
xorq %rsi, %rdi
movl %eax, %esi
andl $0x10004, %esi          # imm = 0x10004
imulq %rdx, %rsi
shlq $0x2, %rsi
movl %eax, %r8d
andl $0x20008, %r8d          # imm = 0x20008
imulq %rdx, %r8
shlq $0x3, %r8
xorq %rsi, %r8
xorq %rdi, %r8
movl %eax, %esi
andl $0x40010, %esi          # imm = 0x40010
imulq %rdx, %rsi
shlq $0x4, %rsi
andl $0x80020, %eax          # imm = 0x80020
imulq %rdx, %rax
shlq $0x5, %rax
xorq %rsi, %rax
xorq %r8, %rax
xorl %edx, %edx
movq %rax, %rsi
movq (%rdx,%rcx), %rax
andq %rsi, %rax
movq %rax, %rdi
shrq $0x9, %rdi
movq %rax, %r8
shrq $0xa, %r8
xorq %rdi, %r8
movq %rax, %rdi
shrq $0xc, %rdi
shrq $0xd, %rax
xorq %rdi, %rax
xorq %r8, %rax
xorq %rsi, %rax
addq $0x8, %rdx
cmpq $0x18, %rdx
jne 0x59af
andl $0x1fff, %eax           # imm = 0x1FFF
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq