// File: /workspace/github_cpp_makefile_star2_O3/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 0xe4fc
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 0xe4fc
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 0xe4fc
movslq 0x1250c(%rip), %rax     # 0x27680
testq %rax, %rax
je 0x1519d
movq 0x124e8(%rip), %rcx     # 0x27668
leaq (%rax,%rax,2), %rax
leaq (%rcx,%rax,8), %rdi
addq $-0x18, %rdi
leaq -0x90(%rbp), %rsi
callq 0x164de
jmp 0x15985
leaq -0x238(%rbp), %rdi
callq 0x31f0
movl -0x90(%rbp), %eax
cmpq $0x17, %rax
ja 0x159d0
leaq -0x80(%rbp), %r13
leaq -0x60(%rbp), %rdx
leaq -0x40(%rbp), %rsi
leaq 0x7980(%rip), %rcx      # 0x1cb4c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rsi, %r13
leaq -0x228(%rbp), %rbx
leaq 0x7aa6(%rip), %rsi      # 0x1cc8c
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 0x7a6c(%rip), %rsi      # 0x1cc7c
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 0x7a45(%rip), %rsi      # 0x1cc7c
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
movq %r15, %r12
jmp 0x158d7
movq %rdx, %r13
leaq -0x228(%rbp), %r14
leaq 0x7a34(%rip), %rsi      # 0x1cc91
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 0x79f5(%rip), %rsi      # 0x1cc7c
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
movq %rbx, %r12
jmp 0x158d7
leaq -0x228(%rbp), %r14
movq %rsi, %r13
leaq 0x79f0(%rip), %rsi      # 0x1cc9d
movl $0x7, %edx
movq %r14, %rdi
callq 0x3340
movq %r15, %r12
jmp 0x158d7
movq %rdx, %r13
leaq -0x228(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x3340
movq %rax, %r14
leaq 0x798b(%rip), %rsi      # 0x1cc6e
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 0x7971(%rip), %rsi      # 0x1cc7e
movl $0x3, %edx
movq %rax, %rdi
callq 0x3340
movq %rbx, %r12
jmp 0x158d7
movq %rdx, %r13
leaq -0x228(%rbp), %r14
leaq 0x7972(%rip), %rsi      # 0x1cca5
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 0x791f(%rip), %rsi      # 0x1cc7c
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
movq %rbx, %r12
jmp 0x158d7
leaq -0x228(%rbp), %r14
leaq 0x7917(%rip), %rsi      # 0x1cc97
movl $0x5, %edx
movq %r14, %rdi
callq 0x3340
jmp 0x158d7
movq %rdx, %r13
leaq -0x228(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x3340
movq %rax, %r14
leaq 0x78bb(%rip), %rsi      # 0x1cc6e
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 0x7899(%rip), %rsi      # 0x1cc76
movl $0x3, %edx
movq %rax, %rdi
callq 0x3340
movq %rbx, %r12
jmp 0x158d7
movq %rsi, %r13
leaq -0x228(%rbp), %rdi
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
callq 0x3340
movq %rax, %rbx
leaq 0x786c(%rip), %rsi      # 0x1cc82
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 0x7847(%rip), %rsi      # 0x1cc84
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
leaq 0x781d(%rip), %rsi      # 0x1cc6e
movl $0x3, %edx
movq %r14, %rdi
callq 0x3340
movq %r15, %r12
jmp 0x158d7
movq %rdx, %r13
leaq -0x228(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x3340
movq %rax, %r14
leaq 0x77e7(%rip), %rsi      # 0x1cc6e
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 0x77c9(%rip), %rsi      # 0x1cc7a
movl $0x3, %edx
movq %rax, %rdi
callq 0x3340
movq %rbx, %r12
jmp 0x158d7
leaq -0x228(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x3340
movq %rax, %r14
leaq 0x778a(%rip), %rsi      # 0x1cc6e
movl $0x3, %edx
movq %rax, %rdi
callq 0x3340
jmp 0x158d7
movq %rdx, %r13
leaq -0x228(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x3340
movq %rax, %r14
leaq 0x7757(%rip), %rsi      # 0x1cc6e
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 0x7731(%rip), %rsi      # 0x1cc72
movl $0x3, %edx
movq %rax, %rdi
callq 0x3340
movq %rbx, %r12
jmp 0x158d7
movq %rsi, %r13
leaq -0x228(%rbp), %rdi
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
callq 0x3340
movq %rax, %rbx
leaq 0x7702(%rip), %rsi      # 0x1cc7c
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 0x76db(%rip), %rsi      # 0x1cc7c
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
movq %r15, %r12
jmp 0x158d7
leaq -0x228(%rbp), %r14
leaq 0x76fb(%rip), %rsi      # 0x1ccbf
movl $0x5, %edx
movq %r14, %rdi
callq 0x3340
jmp 0x158d7
movq %rsi, %r13
leaq -0x228(%rbp), %rbx
leaq 0x76de(%rip), %rsi      # 0x1ccc5
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 0x766b(%rip), %rsi      # 0x1cc7c
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 0x7644(%rip), %rsi      # 0x1cc7c
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
movq %r15, %r12
jmp 0x158d7
leaq -0x228(%rbp), %rdi
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
callq 0x3340
movq %rax, %rbx
leaq 0x760e(%rip), %rsi      # 0x1cc7c
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 0x7a1f(%rip), %rsi      # 0x1d0b9
jmp 0x15812
movl $0x3, %ebx
leaq 0x7609(%rip), %rsi      # 0x1ccb4
leaq -0x228(%rbp), %rdi
jmp 0x15812
movq %rdx, %r13
leaq -0x228(%rbp), %r14
leaq 0x75be(%rip), %rsi      # 0x1cc86
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 0x758a(%rip), %rsi      # 0x1cc7c
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
movq %rbx, %r12
jmp 0x158d7
leaq -0x228(%rbp), %r14
leaq 0x758b(%rip), %rsi      # 0x1cca0
movl $0x4, %edx
movq %r14, %rdi
callq 0x3340
jmp 0x158d7
movq %rsi, %r13
leaq -0x228(%rbp), %rbx
leaq 0x7591(%rip), %rsi      # 0x1ccc9
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 0x751a(%rip), %rsi      # 0x1cc7c
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 0x74f3(%rip), %rsi      # 0x1cc7c
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
movq %r15, %r12
jmp 0x158d7
leaq -0x228(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x3340
movq %rax, %rbx
leaq 0x74b2(%rip), %rsi      # 0x1cc6e
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 0x749c(%rip), %rsi      # 0x1cc82
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 0x7472(%rip), %rsi      # 0x1cc84
movq %rbx, %rdx
callq 0x3340
jmp 0x158e7
leaq -0x228(%rbp), %r14
leaq 0x748b(%rip), %rsi      # 0x1ccb8
movl $0x6, %edx
movq %r14, %rdi
callq 0x3340
jmp 0x158d7
movq %rdx, %r13
leaq -0x228(%rbp), %r14
leaq 0x745d(%rip), %rsi      # 0x1ccad
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 0x7402(%rip), %rsi      # 0x1cc7c
movl $0x1, %edx
movq %rax, %rdi
callq 0x3340
movq %rbx, %r12
jmp 0x158d7
movq %rdx, %r13
leaq -0x228(%rbp), %r14
leaq 0x7431(%rip), %rsi      # 0x1ccce
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 0x73b5(%rip), %rsi      # 0x1cc7c
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 0xd69f(%rip), %rsi      # 0x22fa0
leaq -0x238(%rbp), %rdi
callq 0x3210
leaq -0x1b8(%rbp), %rdi
callq 0x30e0
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
leaq 0x10962(%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 0x15972
callq 0x32a0
leaq 0x11cd7(%rip), %rdi     # 0x27650
leaq -0x90(%rbp), %rsi
callq 0x164de
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x15997
callq 0x32a0
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x159a9
callq 0x32a0
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x159be
callq 0x32a0
addq $0x218, %rsp            # imm = 0x218
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0xd5f9(%rip), %rbx      # 0x22fd0
leaq 0x72f6(%rip), %rsi      # 0x1ccd4
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 0xd5c7(%rip), %rdi      # 0x22fd0
callq 0x3030
movq %rax, %rdi
callq 0x31d0
jmp 0x158e7
jmp 0x15a1f
jmp 0x15a1f
movq %rax, %rbx
jmp 0x15a91
movq %rax, %rbx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x15a3e
callq 0x32a0
jmp 0x15a3e
movq %rax, %rbx
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x15a9d
callq 0x32a0
jmp 0x15a9d
movq %rax, %rbx
leaq -0xa0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x15a91
callq 0x32a0
jmp 0x15a91
movq %rax, %rbx
movq 0xd527(%rip), %rsi      # 0x22fa0
leaq -0x238(%rbp), %rdi
callq 0x3210
leaq -0x1b8(%rbp), %rdi
callq 0x30e0
leaq -0x90(%rbp), %rdi
callq 0x13f56
movq %rbx, %rdi
callq 0x3480