// File: /workspace/github_cpp_makefile_star2_O1/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 0x10080
leaq 0x338(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x20693(%rip), %rsi     # 0x38182
leaq 0x20690(%rip), %rdx     # 0x38186
leaq 0x328(%rsp), %rdi
callq 0x54fc
leaq 0x318(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x308(%rsp), %rdi
callq 0xca12
leaq 0x2f8(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2e8(%rsp), %rdi
callq 0xca12
movq %rsp, %rdi
leaq 0x328(%rsp), %rsi
leaq 0x308(%rsp), %rdx
leaq 0x2e8(%rsp), %rcx
callq 0xbe58
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xcf0e
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x17b99
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x17bb4
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0x10(%rsp), %r13
movq -0x10(%r13), %rdi
cmpq %r13, %rdi
je 0x17bcf
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x2e8(%rsp), %rdi
cmpq %r12, %rdi
je 0x17bec
movq 0x2f8(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x308(%rsp), %rdi
cmpq %r15, %rdi
je 0x17c09
movq 0x318(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x328(%rsp), %rdi
cmpq %rbp, %rdi
je 0x17c26
movq 0x338(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0x2d8(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x2045d(%rip), %rsi     # 0x38096
leaq 0x20459(%rip), %rdx     # 0x38099
leaq 0x2c8(%rsp), %rdi
callq 0x54fc
leaq 0x2b8(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x2a8(%rsp), %rdi
callq 0xca12
leaq 0x298(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x288(%rsp), %rdi
callq 0xca12
movq %rsp, %rdi
leaq 0x2c8(%rsp), %rsi
leaq 0x2a8(%rsp), %rdx
leaq 0x288(%rsp), %rcx
callq 0xbe58
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xcf0e
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x17cdb
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x17cf7
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42a0
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x17d0d
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x288(%rsp), %rdi
cmpq %r12, %rdi
je 0x17d2a
movq 0x298(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x2a8(%rsp), %rdi
cmpq %r15, %rdi
je 0x17d47
movq 0x2b8(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x2c8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x17d64
movq 0x2d8(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0x68(%rsp), %rdi
callq 0x10080
leaq 0x278(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x2040b(%rip), %rsi     # 0x3818c
leaq 0x20408(%rip), %rdx     # 0x38190
leaq 0x268(%rsp), %rdi
callq 0x54fc
leaq 0x258(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x2033b(%rip), %rdx     # 0x380e3
leaq 0x248(%rsp), %rdi
movq %rdx, %rsi
callq 0x54fc
leaq 0x238(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
addq %rsi, %rdx
leaq 0x228(%rsp), %rdi
callq 0xca12
movq %rsp, %rdi
leaq 0x268(%rsp), %rsi
leaq 0x248(%rsp), %rdx
leaq 0x228(%rsp), %rcx
callq 0xbe58
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xcf0e
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x17e26
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x17e42
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42a0
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x17e58
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x228(%rsp), %rdi
cmpq %r12, %rdi
je 0x17e75
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x248(%rsp), %rdi
cmpq %r15, %rdi
je 0x17e92
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x268(%rsp), %rdi
cmpq %rbp, %rdi
je 0x17eaf
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 0xca12
leaq 0x1f8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x201f5(%rip), %rdx     # 0x380e3
leaq 0x1e8(%rsp), %rdi
movq %rdx, %rsi
callq 0x54fc
leaq 0x1d8(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x201d1(%rip), %rdx     # 0x380e3
leaq 0x1c8(%rsp), %rdi
movq %rdx, %rsi
callq 0x54fc
movq %rsp, %rdi
leaq 0x208(%rsp), %rsi
leaq 0x1e8(%rsp), %rdx
leaq 0x1c8(%rsp), %rcx
callq 0xbe58
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xcf0e
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x17f69
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x17f85
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42a0
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x17f9b
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x1c8(%rsp), %rdi
cmpq %r12, %rdi
je 0x17fb8
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x1e8(%rsp), %rdi
cmpq %r15, %rdi
je 0x17fd5
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x208(%rsp), %rdi
cmpq %rbp, %rdi
je 0x17ff2
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0x1b8(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x20091(%rip), %rsi     # 0x38096
leaq 0x2008d(%rip), %rdx     # 0x38099
leaq 0x1a8(%rsp), %rdi
callq 0x54fc
leaq 0x198(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x188(%rsp), %rdi
callq 0xca12
leaq 0x178(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x168(%rsp), %rdi
callq 0xca12
movq %rsp, %rdi
leaq 0x1a8(%rsp), %rsi
leaq 0x188(%rsp), %rdx
leaq 0x168(%rsp), %rcx
callq 0xbe58
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xcf0e
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x180a7
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x180c3
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42a0
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x180d9
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x168(%rsp), %rdi
cmpq %r12, %rdi
je 0x180f6
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x188(%rsp), %rdi
cmpq %r15, %rdi
je 0x18113
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x1a8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x18130
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0x158(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x1ff5b(%rip), %rsi     # 0x3809e
leaq 0x1ff57(%rip), %rdx     # 0x380a1
leaq 0x148(%rsp), %rdi
callq 0x54fc
leaq 0x138(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x128(%rsp), %rdi
callq 0xca12
leaq 0x118(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x1ff55(%rip), %rdx     # 0x380e3
leaq 0x108(%rsp), %rdi
movq %rdx, %rsi
callq 0x54fc
movq %rsp, %rdi
leaq 0x148(%rsp), %rsi
leaq 0x128(%rsp), %rdx
leaq 0x108(%rsp), %rcx
callq 0xbe58
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xcf0e
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x181e5
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x18201
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42a0
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x18217
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x108(%rsp), %rdi
cmpq %r12, %rdi
je 0x18234
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x128(%rsp), %rdi
cmpq %r15, %rdi
je 0x18251
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x148(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1826e
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 0xca12
leaq 0xd8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x1fe3c(%rip), %rdx     # 0x380e3
leaq 0xc8(%rsp), %rdi
movq %rdx, %rsi
callq 0x54fc
leaq 0xb8(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x1fe18(%rip), %rdx     # 0x380e3
leaq 0xa8(%rsp), %rdi
movq %rdx, %rsi
callq 0x54fc
movq %rsp, %rdi
leaq 0xe8(%rsp), %rsi
leaq 0xc8(%rsp), %rdx
leaq 0xa8(%rsp), %rcx
callq 0xbe58
movq %rsp, %rsi
movq %rbx, %rdi
callq 0xcf0e
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x18322
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x1833e
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42a0
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x18354
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x18371
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0xc8(%rsp), %rdi
cmpq %r15, %rdi
je 0x1838e
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x42a0
movq 0xe8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x183ab
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x183c6
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x183e7
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 0xbf10
jmp 0x1840c
movq %rax, %r14
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x1842e
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x1842e
movq %rax, %r14
movq 0xc8(%rsp), %rdi
cmpq %r15, %rdi
je 0x18450
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x18450
movq %rax, %r14
movq 0xe8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x18648
movq 0xf8(%rsp), %rsi
jmp 0x1863b
jmp 0x18645
movq %rax, %r14
movq %rsp, %rdi
callq 0xbf10
jmp 0x18483
movq %rax, %r14
movq 0x108(%rsp), %rdi
cmpq %r12, %rdi
je 0x184a5
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x184a5
movq %rax, %r14
movq 0x128(%rsp), %rdi
cmpq %r15, %rdi
je 0x184c7
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x184c7
movq %rax, %r14
movq 0x148(%rsp), %rdi
cmpq %rbp, %rdi
je 0x18648
movq 0x158(%rsp), %rsi
jmp 0x1863b
jmp 0x18645
movq %rax, %r14
movq %rsp, %rdi
callq 0xbf10
jmp 0x184fa
movq %rax, %r14
movq 0x168(%rsp), %rdi
cmpq %r12, %rdi
je 0x1851c
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x1851c
movq %rax, %r14
movq 0x188(%rsp), %rdi
cmpq %r15, %rdi
je 0x1853e
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x1853e
movq %rax, %r14
movq 0x1a8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x18648
movq 0x1b8(%rsp), %rsi
jmp 0x1863b
jmp 0x18645
movq %rax, %r14
movq %rsp, %rdi
callq 0xbf10
jmp 0x18571
movq %rax, %r14
movq 0x1c8(%rsp), %rdi
cmpq %r12, %rdi
je 0x18593
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x18593
movq %rax, %r14
movq 0x1e8(%rsp), %rdi
cmpq %r15, %rdi
je 0x185b5
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x185b5
movq %rax, %r14
movq 0x208(%rsp), %rdi
cmpq %rbp, %rdi
je 0x18648
movq 0x218(%rsp), %rsi
jmp 0x1863b
jmp 0x18645
movq %rax, %r14
movq %rsp, %rdi
callq 0xbf10
jmp 0x185e2
movq %rax, %r14
movq 0x228(%rsp), %rdi
cmpq %r12, %rdi
je 0x18604
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x18604
movq %rax, %r14
movq 0x248(%rsp), %rdi
cmpq %r15, %rdi
je 0x18626
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x18626
movq %rax, %r14
movq 0x268(%rsp), %rdi
cmpq %rbp, %rdi
je 0x18648
movq 0x278(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x18648
movq %rax, %r14
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x18663
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x42a0
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x18684
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x42a0
movq %rbx, %rdi
callq 0xbf5e
movq %r14, %rdi
callq 0x44c0
jmp 0x1877f
movq %rax, %r14
movq %rsp, %rdi
callq 0xbf10
jmp 0x186a9
movq %rax, %r14
movq 0x288(%rsp), %rdi
cmpq %r12, %rdi
je 0x186cb
movq 0x298(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x186cb
movq %rax, %r14
movq 0x2a8(%rsp), %rdi
cmpq %r15, %rdi
je 0x186ed
movq 0x2b8(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x186ed
movq %rax, %r14
movq 0x2c8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x18663
movq 0x2d8(%rsp), %rsi
jmp 0x1865b
jmp 0x1877f
movq %rax, %r14
movq %rsp, %rdi
callq 0xbf10
jmp 0x1871d
movq %rax, %r14
movq 0x2e8(%rsp), %rdi
cmpq %r12, %rdi
je 0x1873f
movq 0x2f8(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x1873f
movq %rax, %r14
movq 0x308(%rsp), %rdi
cmpq %r15, %rdi
je 0x18761
movq 0x318(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0x18761
movq %rax, %r14
movq 0x328(%rsp), %rdi
cmpq %rbp, %rdi
je 0x18663
movq 0x338(%rsp), %rsi
jmp 0x1865b
movq %rax, %r14
jmp 0x18663
movq %rax, %r14
jmp 0x18684