// File: Merulo[P]CompilerJFTT/src/Calculators/NumberGenerator.cpp
// Function: NumberGenerator::generateWithIncAndAdd(unsigned long long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void NumberGenerator::generateWithIncAndAdd(unsigned long long target, std::string name)
{
    while (target > 10)
    {
        if (target % 2 == 0)
        {
            _result.push_back({"ADD", name, name});
            target = target / 2;
        }
        else
        {
            _result.push_back({"INC", name});
            target--;
        }
    }
    for(size_t i = 0; i < target; i++)
    {
        _result.push_back({"INC", name});
    }
    _result.push_back({"SUB", name, name});
    std::reverse(_result.begin(), _result.end());
}

// Assembly:
subq $0x3c8, %rsp            # imm = 0x3C8
movq %rsi, 0x38(%rsp)
movq %rdi, 0x3c0(%rsp)
movq %rsi, 0x3b8(%rsp)
cmpq $0xa, 0x3c0(%rsp)
jbe 0x1ed4a
movq 0x3c0(%rsp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
jne 0x1eb71
leaq 0x32f(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x4600
movq 0x30(%rsp), %rdx
leaq 0x326eb(%rip), %rsi     # 0x510da
leaq 0x330(%rsp), %rdi
callq 0x4f10
jmp 0x1e9fe
movq 0x38(%rsp), %rsi
leaq 0x2f8(%rsp), %rdi
callq 0x4180
jmp 0x1ea12
movq 0x38(%rsp), %rsi
leaq 0x2d8(%rsp), %rdi
callq 0x4180
jmp 0x1ea26
leaq 0x350(%rsp), %rdi
leaq 0x330(%rsp), %rsi
leaq 0x2f8(%rsp), %rdx
leaq 0x2d8(%rsp), %rcx
callq 0xd3b0
jmp 0x1ea4d
leaq 0x4a97c(%rip), %rdi     # 0x693d0
leaq 0x350(%rsp), %rsi
callq 0xd380
jmp 0x1ea63
leaq 0x350(%rsp), %rdi
callq 0xd490
leaq 0x2d8(%rsp), %rdi
callq 0x46e8
leaq 0x2f8(%rsp), %rdi
callq 0x46e8
leaq 0x330(%rsp), %rdi
callq 0x46e8
leaq 0x32f(%rsp), %rdi
callq 0x43b0
movq 0x3c0(%rsp), %rax
shrq %rax
movq %rax, 0x3c0(%rsp)
jmp 0x1ed45
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
jmp 0x1eb5f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
jmp 0x1eb52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
jmp 0x1eb45
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
jmp 0x1eb38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
leaq 0x350(%rsp), %rdi
callq 0xd490
leaq 0x2d8(%rsp), %rdi
callq 0x46e8
leaq 0x2f8(%rsp), %rdi
callq 0x46e8
leaq 0x330(%rsp), %rdi
callq 0x46e8
leaq 0x32f(%rsp), %rdi
callq 0x43b0
jmp 0x1f0e4
leaq 0x24f(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x4600
movq 0x28(%rsp), %rdx
leaq 0x32547(%rip), %rsi     # 0x510d6
leaq 0x250(%rsp), %rdi
callq 0x4f10
jmp 0x1eb9e
movq 0x38(%rsp), %rsi
leaq 0x228(%rsp), %rdi
callq 0x4180
jmp 0x1ebb2
leaq 0x207(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x4600
movq 0x20(%rsp), %rdx
leaq 0x3254b(%rip), %rsi     # 0x5111b
leaq 0x208(%rsp), %rdi
callq 0x4f10
jmp 0x1ebdf
leaq 0x270(%rsp), %rdi
leaq 0x250(%rsp), %rsi
leaq 0x228(%rsp), %rdx
leaq 0x208(%rsp), %rcx
callq 0xd3b0
jmp 0x1ec06
leaq 0x4a7c3(%rip), %rdi     # 0x693d0
leaq 0x270(%rsp), %rsi
callq 0xd380
jmp 0x1ec1c
leaq 0x270(%rsp), %rdi
callq 0xd490
leaq 0x208(%rsp), %rdi
callq 0x46e8
leaq 0x207(%rsp), %rdi
callq 0x43b0
leaq 0x228(%rsp), %rdi
callq 0x46e8
leaq 0x250(%rsp), %rdi
callq 0x46e8
leaq 0x24f(%rsp), %rdi
callq 0x43b0
movq 0x3c0(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x3c0(%rsp)
jmp 0x1ed45
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
jmp 0x1ed33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
jmp 0x1ed26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
jmp 0x1ed0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
jmp 0x1ecff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
leaq 0x270(%rsp), %rdi
callq 0xd490
leaq 0x208(%rsp), %rdi
callq 0x46e8
leaq 0x207(%rsp), %rdi
callq 0x43b0
leaq 0x228(%rsp), %rdi
callq 0x46e8
leaq 0x250(%rsp), %rdi
callq 0x46e8
leaq 0x24f(%rsp), %rdi
callq 0x43b0
jmp 0x1f0e4
jmp 0x1e9ac
movq $0x0, 0x1f8(%rsp)
movq 0x1f8(%rsp), %rax
cmpq 0x3c0(%rsp), %rax
jae 0x1ef40
leaq 0x16f(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x4600
movq 0x18(%rsp), %rdx
leaq 0x3234c(%rip), %rsi     # 0x510d6
leaq 0x170(%rsp), %rdi
callq 0x4f10
jmp 0x1ed99
movq 0x38(%rsp), %rsi
leaq 0x148(%rsp), %rdi
callq 0x4180
jmp 0x1edad
leaq 0x127(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x4600
movq 0x10(%rsp), %rdx
leaq 0x32350(%rip), %rsi     # 0x5111b
leaq 0x128(%rsp), %rdi
callq 0x4f10
jmp 0x1edda
leaq 0x190(%rsp), %rdi
leaq 0x170(%rsp), %rsi
leaq 0x148(%rsp), %rdx
leaq 0x128(%rsp), %rcx
callq 0xd3b0
jmp 0x1ee01
leaq 0x4a5c8(%rip), %rdi     # 0x693d0
leaq 0x190(%rsp), %rsi
callq 0xd380
jmp 0x1ee17
leaq 0x190(%rsp), %rdi
callq 0xd490
leaq 0x128(%rsp), %rdi
callq 0x46e8
leaq 0x127(%rsp), %rdi
callq 0x43b0
leaq 0x148(%rsp), %rdi
callq 0x46e8
leaq 0x170(%rsp), %rdi
callq 0x46e8
leaq 0x16f(%rsp), %rdi
callq 0x43b0
movq 0x1f8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x1f8(%rsp)
jmp 0x1ed56
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
jmp 0x1ef2e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
jmp 0x1ef21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
jmp 0x1ef07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
jmp 0x1eefa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
leaq 0x190(%rsp), %rdi
callq 0xd490
leaq 0x128(%rsp), %rdi
callq 0x46e8
leaq 0x127(%rsp), %rdi
callq 0x43b0
leaq 0x148(%rsp), %rdi
callq 0x46e8
leaq 0x170(%rsp), %rdi
callq 0x46e8
leaq 0x16f(%rsp), %rdi
callq 0x43b0
jmp 0x1f0e4
leaq 0x97(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x4600
movq 0x8(%rsp), %rdx
leaq 0x32170(%rip), %rsi     # 0x510ce
leaq 0x98(%rsp), %rdi
callq 0x4f10
jmp 0x1ef6d
movq 0x38(%rsp), %rsi
leaq 0x70(%rsp), %rdi
callq 0x4180
jmp 0x1ef7e
movq 0x38(%rsp), %rsi
leaq 0x50(%rsp), %rdi
callq 0x4180
jmp 0x1ef8f
leaq 0xb8(%rsp), %rdi
leaq 0x98(%rsp), %rsi
leaq 0x70(%rsp), %rdx
leaq 0x50(%rsp), %rcx
callq 0xd3b0
jmp 0x1efb0
leaq 0x4a419(%rip), %rdi     # 0x693d0
leaq 0xb8(%rsp), %rsi
callq 0xd380
jmp 0x1efc6
leaq 0xb8(%rsp), %rdi
callq 0xd490
leaq 0x50(%rsp), %rdi
callq 0x46e8
leaq 0x70(%rsp), %rdi
callq 0x46e8
leaq 0x98(%rsp), %rdi
callq 0x46e8
leaq 0x97(%rsp), %rdi
callq 0x43b0
leaq 0x4a3c8(%rip), %rdi     # 0x693d0
callq 0xe3f0
movq %rax, 0x48(%rsp)
leaq 0x4a3b7(%rip), %rdi     # 0x693d0
callq 0xe380
movq %rax, 0x40(%rsp)
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0x1f4f0
addq $0x3c8, %rsp            # imm = 0x3C8
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
jmp 0x1f0d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
jmp 0x1f0ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
jmp 0x1f0c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
jmp 0x1f0b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x320(%rsp)
movl %eax, 0x31c(%rsp)
leaq 0xb8(%rsp), %rdi
callq 0xd490
leaq 0x50(%rsp), %rdi
callq 0x46e8
leaq 0x70(%rsp), %rdi
callq 0x46e8
leaq 0x98(%rsp), %rdi
callq 0x46e8
leaq 0x97(%rsp), %rdi
callq 0x43b0
movq 0x320(%rsp), %rdi
callq 0x45f0
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)