// File: /workspace/github_cpp_makefile_star2_O2/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 %r12
pushq %rbx
subq $0x210, %rsp            # imm = 0x210
movq %rcx, %r12
movq %rdx, %r15
movl (%rdi), %eax
leaq -0xa0(%rbp), %r14
movl %eax, -0x8(%r14)
movq %r14, %rdi
callq 0x3350
leaq -0x80(%rbp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x3350
leaq -0x60(%rbp), %r15
movq %r15, %rdi
movq %r12, %rsi
callq 0x3350
movslq 0x1253e(%rip), %rax     # 0x22660
testq %rax, %rax
je 0x1014b
movq 0x1251a(%rip), %rcx     # 0x22648
imulq $0x18, %rax, %rax
leaq (%rcx,%rax), %rdi
addq $-0x18, %rdi
leaq -0xa8(%rbp), %rsi
callq 0x10af6
jmp 0x104c2
leaq -0x230(%rbp), %rdi
callq 0x31f0
movl -0xa8(%rbp), %eax
cmpq $0x17, %rax
ja 0x104de
leaq 0x69ae(%rip), %rcx      # 0x16b1c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x6ade(%rip), %rsi      # 0x16c5c
jmp 0x1037e
leaq 0x6ad7(%rip), %rsi      # 0x16c61
jmp 0x1043e
leaq 0x6ad7(%rip), %r14      # 0x16c6d
leaq -0x220(%rbp), %rdi
jmp 0x103b5
leaq -0x220(%rbp), %rdi
movq %r15, %rsi
callq 0x3250
leaq 0x6a86(%rip), %rsi      # 0x16c3e
movq %rax, %rdi
callq 0x3280
movq %rax, %rdi
movq %r14, %rsi
callq 0x3250
leaq 0x6a7c(%rip), %rsi      # 0x16c4e
jmp 0x1045c
leaq 0x6a97(%rip), %rsi      # 0x16c75
jmp 0x1043e
leaq 0x6a7d(%rip), %rsi      # 0x16c67
jmp 0x10420
leaq -0x220(%rbp), %rdi
movq %r15, %rsi
callq 0x3250
leaq 0x6a39(%rip), %rsi      # 0x16c3e
movq %rax, %rdi
callq 0x3280
movq %rax, %rdi
movq %r14, %rsi
callq 0x3250
leaq 0x6a27(%rip), %rsi      # 0x16c46
jmp 0x1045c
leaq -0x220(%rbp), %rdi
movq %r14, %rsi
callq 0x3250
leaq 0x6a18(%rip), %rsi      # 0x16c52
movq %rax, %rdi
callq 0x3280
movq %rax, %rdi
movq %rbx, %rsi
callq 0x3250
leaq 0x6a00(%rip), %rsi      # 0x16c54
movq %rax, %rdi
callq 0x3280
movq %rax, %rdi
leaq 0x69d8(%rip), %r14      # 0x16c3e
jmp 0x103b5
leaq -0x220(%rbp), %rdi
movq %r15, %rsi
callq 0x3250
leaq 0x69bd(%rip), %rsi      # 0x16c3e
movq %rax, %rdi
callq 0x3280
movq %rax, %rdi
movq %r14, %rsi
callq 0x3250
leaq 0x69af(%rip), %rsi      # 0x16c4a
jmp 0x1045c
leaq -0x220(%rbp), %rdi
movq %r15, %rsi
callq 0x3250
movq %rax, %rdi
leaq 0x6985(%rip), %rsi      # 0x16c3e
jmp 0x10427
leaq -0x220(%rbp), %rdi
movq %r15, %rsi
callq 0x3250
leaq 0x696a(%rip), %rsi      # 0x16c3e
movq %rax, %rdi
callq 0x3280
movq %rax, %rdi
movq %r14, %rsi
callq 0x3250
leaq 0x6954(%rip), %rsi      # 0x16c42
jmp 0x1045c
leaq -0x220(%rbp), %rdi
jmp 0x1038d
leaq 0x6989(%rip), %rsi      # 0x16c8f
jmp 0x10420
leaq 0x6983(%rip), %rsi      # 0x16c95
jmp 0x1037e
leaq -0x220(%rbp), %rdi
movq %r14, %rsi
callq 0x3250
leaq 0x6922(%rip), %rsi      # 0x16c4c
movq %rax, %rdi
callq 0x3280
movq %rax, %rdi
movq %rbx, %rsi
callq 0x3250
movq %rax, %rdi
leaq 0x6d3d(%rip), %rsi      # 0x17084
jmp 0x10412
leaq 0x6931(%rip), %rsi      # 0x16c84
leaq -0x220(%rbp), %rdi
jmp 0x10412
leaq 0x68f0(%rip), %rsi      # 0x16c56
jmp 0x1043e
leaq 0x68fe(%rip), %rsi      # 0x16c70
jmp 0x10420
leaq 0x691b(%rip), %rsi      # 0x16c99
leaq -0x220(%rbp), %rdi
callq 0x3280
movq %rax, %rdi
movq %r14, %rsi
callq 0x3250
leaq 0x68b0(%rip), %r14      # 0x16c4c
movq %rax, %rdi
movq %r14, %rsi
callq 0x3280
movq %rax, %rdi
movq %rbx, %rsi
callq 0x3250
movq %rax, %rdi
movq %r14, %rsi
callq 0x3280
movq %r15, %r14
jmp 0x10467
leaq -0x220(%rbp), %rdi
movq %r15, %rsi
callq 0x3250
leaq 0x6863(%rip), %rsi      # 0x16c3e
movq %rax, %rdi
callq 0x3280
movq %rax, %rdi
movq %r14, %rsi
callq 0x3250
leaq 0x685d(%rip), %rsi      # 0x16c52
movq %rax, %rdi
callq 0x3280
movq %rax, %rdi
movq %rbx, %rsi
callq 0x3250
movq %rax, %rdi
leaq 0x6842(%rip), %rsi      # 0x16c54
callq 0x3280
jmp 0x10472
leaq 0x6868(%rip), %rsi      # 0x16c88
leaq -0x220(%rbp), %rdi
callq 0x3280
jmp 0x10467
leaq 0x6848(%rip), %rsi      # 0x16c7d
jmp 0x1043e
leaq 0x6860(%rip), %rsi      # 0x16c9e
leaq -0x220(%rbp), %rdi
callq 0x3280
movq %rax, %rdi
movq %r14, %rsi
callq 0x3250
leaq 0x67f0(%rip), %rsi      # 0x16c4c
movq %rax, %rdi
callq 0x3280
movq %rbx, %r14
movq %rax, %rdi
movq %r14, %rsi
callq 0x3250
leaq -0x218(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0x33d0
leaq -0x230(%rbp), %rdi
callq 0x34a0
leaq 0x10ddb(%rip), %rdi     # 0x21270
leaq -0x40(%rbp), %rsi
callq 0x3250
movq %rax, %rdi
callq 0x3130
leaq -0x40(%rbp), %rdi
callq 0x3498
leaq 0x1217a(%rip), %rdi     # 0x22630
leaq -0xa8(%rbp), %rsi
callq 0x10af6
leaq -0xa8(%rbp), %rdi
callq 0xf0ba
addq $0x210, %rsp            # imm = 0x210
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0xdae3(%rip), %rdi      # 0x1dfc8
leaq 0x67b8(%rip), %rsi      # 0x16ca4
callq 0x3280
movq %rax, %rdi
callq 0x3130
jmp 0x10472
jmp 0x10502
jmp 0x10502
movq %rax, %r15
jmp 0x1053e
movq %rax, %r15
leaq -0x40(%rbp), %rdi
callq 0x3498
jmp 0x1053e
movq %rax, %r15
movq %rbx, %rdi
callq 0x3498
jmp 0x10525
movq %rax, %r15
movq %r14, %rdi
callq 0x3498
jmp 0x1054a
movq %rax, %r15
leaq -0x230(%rbp), %rdi
callq 0x34a0
leaq -0xa8(%rbp), %rdi
callq 0xf0ba
movq %r15, %rdi
callq 0x3430