// File: /workspace/github_cpp_makefile_star2_O3/Merulo[P]CompilerJFTT/src/Calculators/MathOperations.cpp
// Function: MathOperations::generateModuloTwo(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, Line)
std::vector<Line> MathOperations::generateModuloTwo(
    std::string registerB, Line l
)
{
    std::vector<Line> lines;
    std::string label4 = generateLabel();
    lines.push_back({"JODD", registerB, label4});
    lines.push_back({"SUB", registerB, registerB});
    std::string label6 = generateLabel();

    lines.push_back({"JUMP", "", label6}); 

    lines.push_back({label4});  
    lines.push_back({"SUB", registerB, registerB});
    lines.push_back({"INC", registerB});
    lines.push_back({label6});

    return lines;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x348, %rsp            # imm = 0x348
movq %rsi, %r14
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
leaq 0x88(%rsp), %rdi
callq 0xfe30
leaq 0x338(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x1f8e3(%rip), %rsi     # 0x37182
leaq 0x1f8e0(%rip), %rdx     # 0x37186
leaq 0x328(%rsp), %rdi
callq 0x53cc
leaq 0x318(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x308(%rsp), %rdi
callq 0xc7aa
leaq 0x2f8(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2e8(%rsp), %rdi
callq 0xc7aa
movq %rsp, %rdi
leaq 0x328(%rsp), %rsi
leaq 0x308(%rsp), %rdx
leaq 0x2e8(%rsp), %rcx
callq 0xbbea
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xccac
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x17949
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x17964
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0x10(%rsp), %r13
movq -0x10(%r13), %rdi
cmpq %r13, %rdi
je 0x1797f
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x2e8(%rsp), %rdi
cmpq %r12, %rdi
je 0x1799c
movq 0x2f8(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x308(%rsp), %rdi
cmpq %r15, %rdi
je 0x179b9
movq 0x318(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x328(%rsp), %rdi
cmpq %rbp, %rdi
je 0x179d6
movq 0x338(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0x2d8(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x1f6ad(%rip), %rsi     # 0x37096
leaq 0x1f6a9(%rip), %rdx     # 0x37099
leaq 0x2c8(%rsp), %rdi
callq 0x53cc
leaq 0x2b8(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x2a8(%rsp), %rdi
callq 0xc7aa
leaq 0x298(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x288(%rsp), %rdi
callq 0xc7aa
movq %rsp, %rdi
leaq 0x2c8(%rsp), %rsi
leaq 0x2a8(%rsp), %rdx
leaq 0x288(%rsp), %rcx
callq 0xbbea
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xccac
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x17a8b
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x17aa7
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42a0
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x17abd
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x288(%rsp), %rdi
cmpq %r12, %rdi
je 0x17ada
movq 0x298(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x2a8(%rsp), %rdi
cmpq %r15, %rdi
je 0x17af7
movq 0x2b8(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x2c8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x17b14
movq 0x2d8(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0x68(%rsp), %rdi
callq 0xfe30
leaq 0x278(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x1f65b(%rip), %rsi     # 0x3718c
leaq 0x1f658(%rip), %rdx     # 0x37190
leaq 0x268(%rsp), %rdi
callq 0x53cc
leaq 0x258(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x1f58b(%rip), %rdx     # 0x370e3
leaq 0x248(%rsp), %rdi
movq %rdx, %rsi
callq 0x53cc
leaq 0x238(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
addq %rsi, %rdx
leaq 0x228(%rsp), %rdi
callq 0xc7aa
movq %rsp, %rdi
leaq 0x268(%rsp), %rsi
leaq 0x248(%rsp), %rdx
leaq 0x228(%rsp), %rcx
callq 0xbbea
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xccac
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x17bd6
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x17bf2
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42a0
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x17c08
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x228(%rsp), %rdi
cmpq %r12, %rdi
je 0x17c25
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x248(%rsp), %rdi
cmpq %r15, %rdi
je 0x17c42
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x268(%rsp), %rdi
cmpq %rbp, %rdi
je 0x17c5f
movq 0x278(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0x218(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
leaq 0x208(%rsp), %rdi
callq 0xc7aa
leaq 0x1f8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x1f445(%rip), %rdx     # 0x370e3
leaq 0x1e8(%rsp), %rdi
movq %rdx, %rsi
callq 0x53cc
leaq 0x1d8(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x1f421(%rip), %rdx     # 0x370e3
leaq 0x1c8(%rsp), %rdi
movq %rdx, %rsi
callq 0x53cc
movq %rsp, %rdi
leaq 0x208(%rsp), %rsi
leaq 0x1e8(%rsp), %rdx
leaq 0x1c8(%rsp), %rcx
callq 0xbbea
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xccac
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x17d19
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x17d35
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42a0
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x17d4b
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x1c8(%rsp), %rdi
cmpq %r12, %rdi
je 0x17d68
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x1e8(%rsp), %rdi
cmpq %r15, %rdi
je 0x17d85
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x208(%rsp), %rdi
cmpq %rbp, %rdi
je 0x17da2
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0x1b8(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x1f2e1(%rip), %rsi     # 0x37096
leaq 0x1f2dd(%rip), %rdx     # 0x37099
leaq 0x1a8(%rsp), %rdi
callq 0x53cc
leaq 0x198(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x188(%rsp), %rdi
callq 0xc7aa
leaq 0x178(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x168(%rsp), %rdi
callq 0xc7aa
movq %rsp, %rdi
leaq 0x1a8(%rsp), %rsi
leaq 0x188(%rsp), %rdx
leaq 0x168(%rsp), %rcx
callq 0xbbea
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xccac
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x17e57
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x17e73
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42a0
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x17e89
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x168(%rsp), %rdi
cmpq %r12, %rdi
je 0x17ea6
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x188(%rsp), %rdi
cmpq %r15, %rdi
je 0x17ec3
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x1a8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x17ee0
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0x158(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x1f1ab(%rip), %rsi     # 0x3709e
leaq 0x1f1a7(%rip), %rdx     # 0x370a1
leaq 0x148(%rsp), %rdi
callq 0x53cc
leaq 0x138(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x128(%rsp), %rdi
callq 0xc7aa
leaq 0x118(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x1f1a5(%rip), %rdx     # 0x370e3
leaq 0x108(%rsp), %rdi
movq %rdx, %rsi
callq 0x53cc
movq %rsp, %rdi
leaq 0x148(%rsp), %rsi
leaq 0x128(%rsp), %rdx
leaq 0x108(%rsp), %rcx
callq 0xbbea
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xccac
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x17f95
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x17fb1
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42a0
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x17fc7
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x108(%rsp), %rdi
cmpq %r12, %rdi
je 0x17fe4
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x128(%rsp), %rdi
cmpq %r15, %rdi
je 0x18001
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x148(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1801e
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0xf8(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
addq %rsi, %rdx
leaq 0xe8(%rsp), %rdi
callq 0xc7aa
leaq 0xd8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x1f08c(%rip), %rdx     # 0x370e3
leaq 0xc8(%rsp), %rdi
movq %rdx, %rsi
callq 0x53cc
leaq 0xb8(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x1f068(%rip), %rdx     # 0x370e3
leaq 0xa8(%rsp), %rdi
movq %rdx, %rsi
callq 0x53cc
movq %rsp, %rdi
leaq 0xe8(%rsp), %rsi
leaq 0xc8(%rsp), %rdx
leaq 0xa8(%rsp), %rcx
callq 0xbbea
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xccac
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x180d2
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x180ee
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42a0
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x18104
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x18121
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0xc8(%rsp), %rdi
cmpq %r15, %rdi
je 0x1813e
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0xe8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1815b
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x18176
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x18197
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x42a0
movq %rbx, %rax
addq $0x348, %rsp            # imm = 0x348
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq %rsp, %rdi
callq 0xbca2
jmp 0x181bc
movq %rax, %r14
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x181de
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x181de
movq %rax, %r14
movq 0xc8(%rsp), %rdi
cmpq %r15, %rdi
je 0x18200
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x18200
movq %rax, %r14
movq 0xe8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x183f8
movq 0xf8(%rsp), %rsi
jmp 0x183eb
jmp 0x183f5
movq %rax, %r14
movq %rsp, %rdi
callq 0xbca2
jmp 0x18233
movq %rax, %r14
movq 0x108(%rsp), %rdi
cmpq %r12, %rdi
je 0x18255
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x18255
movq %rax, %r14
movq 0x128(%rsp), %rdi
cmpq %r15, %rdi
je 0x18277
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x18277
movq %rax, %r14
movq 0x148(%rsp), %rdi
cmpq %rbp, %rdi
je 0x183f8
movq 0x158(%rsp), %rsi
jmp 0x183eb
jmp 0x183f5
movq %rax, %r14
movq %rsp, %rdi
callq 0xbca2
jmp 0x182aa
movq %rax, %r14
movq 0x168(%rsp), %rdi
cmpq %r12, %rdi
je 0x182cc
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x182cc
movq %rax, %r14
movq 0x188(%rsp), %rdi
cmpq %r15, %rdi
je 0x182ee
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x182ee
movq %rax, %r14
movq 0x1a8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x183f8
movq 0x1b8(%rsp), %rsi
jmp 0x183eb
jmp 0x183f5
movq %rax, %r14
movq %rsp, %rdi
callq 0xbca2
jmp 0x18321
movq %rax, %r14
movq 0x1c8(%rsp), %rdi
cmpq %r12, %rdi
je 0x18343
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x18343
movq %rax, %r14
movq 0x1e8(%rsp), %rdi
cmpq %r15, %rdi
je 0x18365
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x18365
movq %rax, %r14
movq 0x208(%rsp), %rdi
cmpq %rbp, %rdi
je 0x183f8
movq 0x218(%rsp), %rsi
jmp 0x183eb
jmp 0x183f5
movq %rax, %r14
movq %rsp, %rdi
callq 0xbca2
jmp 0x18392
movq %rax, %r14
movq 0x228(%rsp), %rdi
cmpq %r12, %rdi
je 0x183b4
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x183b4
movq %rax, %r14
movq 0x248(%rsp), %rdi
cmpq %r15, %rdi
je 0x183d6
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x183d6
movq %rax, %r14
movq 0x268(%rsp), %rdi
cmpq %rbp, %rdi
je 0x183f8
movq 0x278(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x183f8
movq %rax, %r14
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x18413
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x18434
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x42a0
movq %rbx, %rdi
callq 0xbcf0
movq %r14, %rdi
callq 0x44c0
jmp 0x1852f
movq %rax, %r14
movq %rsp, %rdi
callq 0xbca2
jmp 0x18459
movq %rax, %r14
movq 0x288(%rsp), %rdi
cmpq %r12, %rdi
je 0x1847b
movq 0x298(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x1847b
movq %rax, %r14
movq 0x2a8(%rsp), %rdi
cmpq %r15, %rdi
je 0x1849d
movq 0x2b8(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x1849d
movq %rax, %r14
movq 0x2c8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x18413
movq 0x2d8(%rsp), %rsi
jmp 0x1840b
jmp 0x1852f
movq %rax, %r14
movq %rsp, %rdi
callq 0xbca2
jmp 0x184cd
movq %rax, %r14
movq 0x2e8(%rsp), %rdi
cmpq %r12, %rdi
je 0x184ef
movq 0x2f8(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x184ef
movq %rax, %r14
movq 0x308(%rsp), %rdi
cmpq %r15, %rdi
je 0x18511
movq 0x318(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x18511
movq %rax, %r14
movq 0x328(%rsp), %rdi
cmpq %rbp, %rdi
je 0x18413
movq 0x338(%rsp), %rsi
jmp 0x1840b
movq %rax, %r14
jmp 0x18413
movq %rax, %r14
jmp 0x18434