// File: /workspace/github_cpp_makefile_star2_O1/fondoger[P]C0-Compiler/src/midcode.cpp
// Function: genMidCode(OpCode const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void genMidCode(
    const OpCode &op,
    const std::string &a,
    const std::string &b,
    const std::string &res)
{
    FourTuple t = { op, a, b, res };
    // cache_depth usually is 0
    if (cache_depth != 0) {
        // NOTE: do use reference here
        std::vector<FourTuple> &cache = 
            cachedMidCode[cache_depth - 1];
        cache.push_back(t);
        return;
    }
    midcode_stream << convertFormat(t) << std::endl;
    mid_codes.push_back(t);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x218, %rsp            # imm = 0x218
movq %rcx, %r14
movq %rdx, %r15
movl (%rdi), %eax
leaq -0x88(%rbp), %r12
movl %eax, -0x8(%r12)
leaq -0x78(%rbp), %rax
movq %rax, -0x10(%rax)
movq (%rsi), %rax
movq 0x8(%rsi), %rdx
addq %rax, %rdx
movq %r12, %rdi
movq %rax, %rsi
callq 0xe4c0
leaq -0x68(%rbp), %rbx
leaq -0x58(%rbp), %rax
movq %rax, -0x10(%rax)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0xe4c0
leaq -0x48(%rbp), %r15
leaq -0x38(%rbp), %rax
movq %rax, -0x10(%rax)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0xe4c0
movslq 0x12448(%rip), %rax     # 0x27680
testq %rax, %rax
je 0x15261
movq 0x12424(%rip), %rcx     # 0x27668
leaq (%rax,%rax,2), %rax
leaq (%rcx,%rax,8), %rdi
addq $-0x18, %rdi
leaq -0x90(%rbp), %rsi
callq 0x1656e
jmp 0x159d5
leaq -0x238(%rbp), %rdi
callq 0x31f0
movl -0x90(%rbp), %eax
cmpq $0x17, %rax
ja 0x15a70
leaq -0x80(%rbp), %r13
leaq -0x60(%rbp), %rdx
leaq -0x40(%rbp), %rsi
leaq 0x78fc(%rip), %rcx      # 0x1cb8c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rsi, %r13
leaq -0x228(%rbp), %rbx
leaq 0x7a22(%rip), %rsi      # 0x1cccc
movl $0x4, %edx
movq %rbx, %rdi
callq 0x3340
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq %rbx, %rdi
callq 0x3340
movq %rax, %rbx
leaq 0x79e8(%rip), %rsi      # 0x1ccbc
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
movq %rbx, %rdi
callq 0x3340
movq %rax, %r14
leaq 0x79c1(%rip), %rsi      # 0x1ccbc
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
jmp 0x156eb
movq %rdx, %r13
leaq -0x228(%rbp), %r14
leaq 0x79b3(%rip), %rsi      # 0x1ccd1
movl $0x5, %edx
movq %r14, %rdi
callq 0x3340
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq %r14, %rdi
callq 0x3340
movq %rax, %r14
leaq 0x7974(%rip), %rsi      # 0x1ccbc
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
jmp 0x15924
movq %rsi, %r13
leaq -0x228(%rbp), %r14
leaq 0x7972(%rip), %rsi      # 0x1ccdd
movl $0x7, %edx
movq %r14, %rdi
callq 0x3340
jmp 0x156eb
movq %rdx, %r13
leaq -0x228(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x3340
movq %rax, %r14
leaq 0x7910(%rip), %rsi      # 0x1ccae
movl $0x3, %edx
movq %rax, %rdi
callq 0x3340
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq %r14, %rdi
callq 0x3340
movq %rax, %r14
leaq 0x78f6(%rip), %rsi      # 0x1ccbe
movl $0x3, %edx
movq %rax, %rdi
callq 0x3340
jmp 0x15924
movq %rdx, %r13
leaq -0x228(%rbp), %r14
leaq 0x78fa(%rip), %rsi      # 0x1cce5
movl $0x7, %edx
movq %r14, %rdi
callq 0x3340
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq %r14, %rdi
callq 0x3340
movq %rax, %r14
leaq 0x78a7(%rip), %rsi      # 0x1ccbc
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
jmp 0x15924
leaq -0x228(%rbp), %r14
leaq 0x78a2(%rip), %rsi      # 0x1ccd7
movl $0x5, %edx
movq %r14, %rdi
callq 0x3340
jmp 0x15927
movq %rdx, %r13
leaq -0x228(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x3340
movq %rax, %r14
leaq 0x7846(%rip), %rsi      # 0x1ccae
movl $0x3, %edx
movq %rax, %rdi
callq 0x3340
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq %r14, %rdi
callq 0x3340
movq %rax, %r14
leaq 0x7824(%rip), %rsi      # 0x1ccb6
movl $0x3, %edx
movq %rax, %rdi
callq 0x3340
jmp 0x15924
movq %rsi, %r13
leaq -0x228(%rbp), %rdi
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
callq 0x3340
movq %rax, %rbx
leaq 0x77fa(%rip), %rsi      # 0x1ccc2
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
movq %rbx, %rdi
callq 0x3340
movq %rax, %r14
leaq 0x77d5(%rip), %rsi      # 0x1ccc4
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
leaq 0x77ab(%rip), %rsi      # 0x1ccae
movl $0x3, %edx
movq %r14, %rdi
callq 0x3340
jmp 0x156eb
movq %rdx, %r13
leaq -0x228(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x3340
movq %rax, %r14
leaq 0x7778(%rip), %rsi      # 0x1ccae
movl $0x3, %edx
movq %rax, %rdi
callq 0x3340
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq %r14, %rdi
callq 0x3340
movq %rax, %r14
leaq 0x775a(%rip), %rsi      # 0x1ccba
movl $0x3, %edx
movq %rax, %rdi
callq 0x3340
jmp 0x15924
leaq -0x228(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x3340
movq %rax, %r14
leaq 0x771e(%rip), %rsi      # 0x1ccae
movl $0x3, %edx
movq %rax, %rdi
callq 0x3340
jmp 0x15927
movq %rdx, %r13
leaq -0x228(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x3340
movq %rax, %r14
leaq 0x76eb(%rip), %rsi      # 0x1ccae
movl $0x3, %edx
movq %rax, %rdi
callq 0x3340
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq %r14, %rdi
callq 0x3340
movq %rax, %r14
leaq 0x76c5(%rip), %rsi      # 0x1ccb2
movl $0x3, %edx
movq %rax, %rdi
callq 0x3340
jmp 0x15924
movq %rsi, %r13
leaq -0x228(%rbp), %rdi
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
callq 0x3340
movq %rax, %rbx
leaq 0x7699(%rip), %rsi      # 0x1ccbc
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
movq %rbx, %rdi
callq 0x3340
movq %rax, %r14
leaq 0x7672(%rip), %rsi      # 0x1ccbc
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
jmp 0x156eb
leaq -0x228(%rbp), %r14
leaq 0x7695(%rip), %rsi      # 0x1ccff
movl $0x5, %edx
movq %r14, %rdi
callq 0x3340
jmp 0x15927
movq %rsi, %r13
leaq -0x228(%rbp), %rbx
leaq 0x7678(%rip), %rsi      # 0x1cd05
movl $0x3, %edx
movq %rbx, %rdi
callq 0x3340
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq %rbx, %rdi
callq 0x3340
movq %rax, %rbx
leaq 0x7605(%rip), %rsi      # 0x1ccbc
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
movq %rbx, %rdi
callq 0x3340
movq %rax, %r14
leaq 0x75de(%rip), %rsi      # 0x1ccbc
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
movq %r15, %r12
jmp 0x15927
leaq -0x228(%rbp), %rdi
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
callq 0x3340
movq %rax, %rbx
leaq 0x75a8(%rip), %rsi      # 0x1ccbc
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
movq %rbx, %rdi
callq 0x3340
movq %rax, %rdi
movl $0x2, %ebx
leaq 0x79e1(%rip), %rsi      # 0x1d121
jmp 0x158b5
movl $0x3, %ebx
leaq 0x75a3(%rip), %rsi      # 0x1ccf4
leaq -0x228(%rbp), %rdi
jmp 0x158b5
movq %rdx, %r13
leaq -0x228(%rbp), %r14
leaq 0x7558(%rip), %rsi      # 0x1ccc6
movl $0x5, %edx
movq %r14, %rdi
callq 0x3340
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq %r14, %rdi
callq 0x3340
movq %rax, %r14
leaq 0x7524(%rip), %rsi      # 0x1ccbc
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
jmp 0x15924
leaq -0x228(%rbp), %r14
leaq 0x7528(%rip), %rsi      # 0x1cce0
movl $0x4, %edx
movq %r14, %rdi
callq 0x3340
jmp 0x15927
movq %rsi, %r13
leaq -0x228(%rbp), %rbx
leaq 0x752e(%rip), %rsi      # 0x1cd09
movl $0x4, %edx
movq %rbx, %rdi
callq 0x3340
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq %rbx, %rdi
callq 0x3340
movq %rax, %rbx
leaq 0x74b7(%rip), %rsi      # 0x1ccbc
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
movq %rbx, %rdi
callq 0x3340
movq %rax, %r14
leaq 0x7490(%rip), %rsi      # 0x1ccbc
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
movq %r15, %r12
jmp 0x15927
leaq -0x228(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x3340
movq %rax, %rbx
leaq 0x744f(%rip), %rsi      # 0x1ccae
movl $0x3, %edx
movq %rax, %rdi
callq 0x3340
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq %rbx, %rdi
callq 0x3340
movq %rax, %r14
leaq 0x7439(%rip), %rsi      # 0x1ccc2
movl $0x1, %ebx
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
movq %r14, %rdi
callq 0x3340
movq %rax, %rdi
leaq 0x740f(%rip), %rsi      # 0x1ccc4
movq %rbx, %rdx
callq 0x3340
jmp 0x15937
leaq -0x228(%rbp), %r14
leaq 0x742b(%rip), %rsi      # 0x1ccf8
movl $0x6, %edx
movq %r14, %rdi
callq 0x3340
jmp 0x15927
movq %rdx, %r13
leaq -0x228(%rbp), %r14
leaq 0x7400(%rip), %rsi      # 0x1cced
movl $0x6, %edx
movq %r14, %rdi
callq 0x3340
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq %r14, %rdi
callq 0x3340
movq %rax, %r14
leaq 0x73a5(%rip), %rsi      # 0x1ccbc
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
movq %rbx, %r12
movq (%r12), %rsi
movq (%r13), %rdx
movq %r14, %rdi
callq 0x3340
leaq -0x220(%rbp), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x3420
movq 0xd64f(%rip), %rsi      # 0x22fa0
leaq -0x238(%rbp), %rdi
callq 0x3210
leaq -0x1b8(%rbp), %rdi
callq 0x30e0
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
leaq 0x10912(%rip), %rdi     # 0x26290
callq 0x3340
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x32b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
leaq -0xa0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x159c2
callq 0x32a0
leaq 0x11c87(%rip), %rdi     # 0x27650
leaq -0x90(%rbp), %rsi
callq 0x1656e
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x159e7
callq 0x32a0
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x159f9
callq 0x32a0
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x15a0e
callq 0x32a0
addq $0x218, %rsp            # imm = 0x218
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rdx, %r13
leaq -0x228(%rbp), %r14
leaq 0x72dd(%rip), %rsi      # 0x1cd0e
movl $0x5, %edx
movq %r14, %rdi
callq 0x3340
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq %r14, %rdi
callq 0x3340
movq %rax, %r14
leaq 0x7261(%rip), %rsi      # 0x1ccbc
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
movq %rbx, %r12
jmp 0x15927
movq 0xd559(%rip), %rbx      # 0x22fd0
leaq 0x7296(%rip), %rsi      # 0x1cd14
movl $0xe, %edx
movq %rbx, %rdi
callq 0x3340
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x32b0
movsbl %al, %esi
movq 0xd527(%rip), %rdi      # 0x22fd0
callq 0x3030
movq %rax, %rdi
callq 0x31d0
jmp 0x15937
jmp 0x15abf
jmp 0x15abf
movq %rax, %rbx
jmp 0x15b31
movq %rax, %rbx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x15ade
callq 0x32a0
jmp 0x15ade
movq %rax, %rbx
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x15b3d
callq 0x32a0
jmp 0x15b3d
movq %rax, %rbx
leaq -0xa0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x15b31
callq 0x32a0
jmp 0x15b31
movq %rax, %rbx
movq 0xd487(%rip), %rsi      # 0x22fa0
leaq -0x238(%rbp), %rdi
callq 0x3210
leaq -0x1b8(%rbp), %rdi
callq 0x30e0
leaq -0x90(%rbp), %rdi
callq 0x14014
movq %rbx, %rdi
callq 0x3480