// File: yanlinlin82[P]icpp/icpp.cpp
// Function: build_code_for_op2(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
string build_code_for_op2(string a_type, string op_name, string b_type)
{
	if      (op_name == "+=" ) add_assembly_code(ADD);
	else if (op_name == "-=" ) add_assembly_code(SUB);
	else if (op_name == "*=" ) add_assembly_code(MUL);
	else if (op_name == "/=" ) add_assembly_code(DIV);
	else if (op_name == "%=" ) add_assembly_code(MOD);
	else if (op_name == "<<=") add_assembly_code(SHL);
	else if (op_name == ">>=") add_assembly_code(SHR);
	else if (op_name == "&=" ) add_assembly_code(AND);
	else if (op_name == "|=" ) add_assembly_code(OR);
	else if (op_name == "&&=") add_assembly_code(LAND);
	else if (op_name == "||=") add_assembly_code(LOR);
	else err("Unsupported operator '%s'\n", op_name.c_str());
	return "int";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x260, %rsp            # imm = 0x260
movq %rdx, -0x200(%rbp)
movq %rdi, %rax
movq -0x200(%rbp), %rdi
movq %rax, -0x1f8(%rbp)
movq %rax, %rdx
movq %rdx, -0x1f0(%rbp)
movq %rax, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdi, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
leaq 0x2eefe(%rip), %rsi     # 0x37132
callq 0x1a9c0
testb $0x1, %al
jne 0x8242
jmp 0x82c5
leaq -0x41(%rbp), %rdi
movq %rdi, -0x208(%rbp)
callq 0x3470
movq -0x208(%rbp), %rdx
leaq 0x30164(%rip), %rsi     # 0x383c4
leaq -0x40(%rbp), %rdi
callq 0x199b0
jmp 0x826b
movl $0xd, %edi
xorl %esi, %esi
leaq -0x40(%rbp), %rdx
callq 0x56e0
jmp 0x827d
leaq -0x40(%rbp), %rdi
callq 0x34d8
leaq -0x41(%rbp), %rdi
callq 0x32b0
jmp 0x89e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x82b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x34d8
leaq -0x41(%rbp), %rdi
callq 0x32b0
jmp 0x8a49
movq -0x200(%rbp), %rdi
leaq 0x2ee62(%rip), %rsi     # 0x37135
callq 0x1a9c0
testb $0x1, %al
jne 0x82e1
jmp 0x8364
leaq -0x79(%rbp), %rdi
movq %rdi, -0x210(%rbp)
callq 0x3470
movq -0x210(%rbp), %rdx
leaq 0x300c5(%rip), %rsi     # 0x383c4
leaq -0x78(%rbp), %rdi
callq 0x199b0
jmp 0x830a
movl $0xe, %edi
xorl %esi, %esi
leaq -0x78(%rbp), %rdx
callq 0x56e0
jmp 0x831c
leaq -0x78(%rbp), %rdi
callq 0x34d8
leaq -0x79(%rbp), %rdi
callq 0x32b0
jmp 0x89e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x8356
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x34d8
leaq -0x79(%rbp), %rdi
callq 0x32b0
jmp 0x8a49
movq -0x200(%rbp), %rdi
leaq 0x2edc6(%rip), %rsi     # 0x37138
callq 0x1a9c0
testb $0x1, %al
jne 0x8380
jmp 0x8418
leaq -0xa1(%rbp), %rdi
movq %rdi, -0x218(%rbp)
callq 0x3470
movq -0x218(%rbp), %rdx
leaq 0x30023(%rip), %rsi     # 0x383c4
leaq -0xa0(%rbp), %rdi
callq 0x199b0
jmp 0x83af
movl $0xf, %edi
xorl %esi, %esi
leaq -0xa0(%rbp), %rdx
callq 0x56e0
jmp 0x83c4
leaq -0xa0(%rbp), %rdi
callq 0x34d8
leaq -0xa1(%rbp), %rdi
callq 0x32b0
jmp 0x89e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x8407
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x34d8
leaq -0xa1(%rbp), %rdi
callq 0x32b0
jmp 0x8a49
movq -0x200(%rbp), %rdi
leaq 0x2ed15(%rip), %rsi     # 0x3713b
callq 0x1a9c0
testb $0x1, %al
jne 0x8434
jmp 0x84cc
leaq -0xc9(%rbp), %rdi
movq %rdi, -0x220(%rbp)
callq 0x3470
movq -0x220(%rbp), %rdx
leaq 0x2ff6f(%rip), %rsi     # 0x383c4
leaq -0xc8(%rbp), %rdi
callq 0x199b0
jmp 0x8463
movl $0x10, %edi
xorl %esi, %esi
leaq -0xc8(%rbp), %rdx
callq 0x56e0
jmp 0x8478
leaq -0xc8(%rbp), %rdi
callq 0x34d8
leaq -0xc9(%rbp), %rdi
callq 0x32b0
jmp 0x89e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x84bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x34d8
leaq -0xc9(%rbp), %rdi
callq 0x32b0
jmp 0x8a49
movq -0x200(%rbp), %rdi
leaq 0x2ec64(%rip), %rsi     # 0x3713e
callq 0x1a9c0
testb $0x1, %al
jne 0x84e8
jmp 0x8580
leaq -0xf1(%rbp), %rdi
movq %rdi, -0x228(%rbp)
callq 0x3470
movq -0x228(%rbp), %rdx
leaq 0x2febb(%rip), %rsi     # 0x383c4
leaq -0xf0(%rbp), %rdi
callq 0x199b0
jmp 0x8517
movl $0x11, %edi
xorl %esi, %esi
leaq -0xf0(%rbp), %rdx
callq 0x56e0
jmp 0x852c
leaq -0xf0(%rbp), %rdi
callq 0x34d8
leaq -0xf1(%rbp), %rdi
callq 0x32b0
jmp 0x89de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x856f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x34d8
leaq -0xf1(%rbp), %rdi
callq 0x32b0
jmp 0x8a49
movq -0x200(%rbp), %rdi
leaq 0x2ebb7(%rip), %rsi     # 0x37145
callq 0x1a9c0
testb $0x1, %al
jne 0x859c
jmp 0x8634
leaq -0x119(%rbp), %rdi
movq %rdi, -0x230(%rbp)
callq 0x3470
movq -0x230(%rbp), %rdx
leaq 0x2fe07(%rip), %rsi     # 0x383c4
leaq -0x118(%rbp), %rdi
callq 0x199b0
jmp 0x85cb
movl $0x15, %edi
xorl %esi, %esi
leaq -0x118(%rbp), %rdx
callq 0x56e0
jmp 0x85e0
leaq -0x118(%rbp), %rdi
callq 0x34d8
leaq -0x119(%rbp), %rdi
callq 0x32b0
jmp 0x89dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x8623
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x34d8
leaq -0x119(%rbp), %rdi
callq 0x32b0
jmp 0x8a49
movq -0x200(%rbp), %rdi
leaq 0x2eaff(%rip), %rsi     # 0x37141
callq 0x1a9c0
testb $0x1, %al
jne 0x8650
jmp 0x86e8
leaq -0x141(%rbp), %rdi
movq %rdi, -0x238(%rbp)
callq 0x3470
movq -0x238(%rbp), %rdx
leaq 0x2fd53(%rip), %rsi     # 0x383c4
leaq -0x140(%rbp), %rdi
callq 0x199b0
jmp 0x867f
movl $0x16, %edi
xorl %esi, %esi
leaq -0x140(%rbp), %rdx
callq 0x56e0
jmp 0x8694
leaq -0x140(%rbp), %rdi
callq 0x34d8
leaq -0x141(%rbp), %rdi
callq 0x32b0
jmp 0x89da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x86d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x34d8
leaq -0x141(%rbp), %rdi
callq 0x32b0
jmp 0x8a49
movq -0x200(%rbp), %rdi
leaq 0x2eefc(%rip), %rsi     # 0x375f2
callq 0x1a9c0
testb $0x1, %al
jne 0x8704
jmp 0x879c
leaq -0x169(%rbp), %rdi
movq %rdi, -0x240(%rbp)
callq 0x3470
movq -0x240(%rbp), %rdx
leaq 0x2fc9f(%rip), %rsi     # 0x383c4
leaq -0x168(%rbp), %rdi
callq 0x199b0
jmp 0x8733
movl $0x17, %edi
xorl %esi, %esi
leaq -0x168(%rbp), %rdx
callq 0x56e0
jmp 0x8748
leaq -0x168(%rbp), %rdi
callq 0x34d8
leaq -0x169(%rbp), %rdi
callq 0x32b0
jmp 0x89d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x878b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x34d8
leaq -0x169(%rbp), %rdi
callq 0x32b0
jmp 0x8a49
movq -0x200(%rbp), %rdi
leaq 0x2ee4c(%rip), %rsi     # 0x375f6
callq 0x1a9c0
testb $0x1, %al
jne 0x87b8
jmp 0x8850
leaq -0x191(%rbp), %rdi
movq %rdi, -0x248(%rbp)
callq 0x3470
movq -0x248(%rbp), %rdx
leaq 0x2fbeb(%rip), %rsi     # 0x383c4
leaq -0x190(%rbp), %rdi
callq 0x199b0
jmp 0x87e7
movl $0x18, %edi
xorl %esi, %esi
leaq -0x190(%rbp), %rdx
callq 0x56e0
jmp 0x87fc
leaq -0x190(%rbp), %rdi
callq 0x34d8
leaq -0x191(%rbp), %rdi
callq 0x32b0
jmp 0x89d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x883f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x34d8
leaq -0x191(%rbp), %rdi
callq 0x32b0
jmp 0x8a49
movq -0x200(%rbp), %rdi
leaq 0x2ed93(%rip), %rsi     # 0x375f1
callq 0x1a9c0
testb $0x1, %al
jne 0x886c
jmp 0x8904
leaq -0x1b9(%rbp), %rdi
movq %rdi, -0x250(%rbp)
callq 0x3470
movq -0x250(%rbp), %rdx
leaq 0x2fb37(%rip), %rsi     # 0x383c4
leaq -0x1b8(%rbp), %rdi
callq 0x199b0
jmp 0x889b
movl $0x20, %edi
xorl %esi, %esi
leaq -0x1b8(%rbp), %rdx
callq 0x56e0
jmp 0x88b0
leaq -0x1b8(%rbp), %rdi
callq 0x34d8
leaq -0x1b9(%rbp), %rdi
callq 0x32b0
jmp 0x89d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x88f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x34d8
leaq -0x1b9(%rbp), %rdi
callq 0x32b0
jmp 0x8a49
movq -0x200(%rbp), %rdi
leaq 0x2ece3(%rip), %rsi     # 0x375f5
callq 0x1a9c0
testb $0x1, %al
jne 0x8920
jmp 0x89b5
leaq -0x1e1(%rbp), %rdi
movq %rdi, -0x258(%rbp)
callq 0x3470
movq -0x258(%rbp), %rdx
leaq 0x2fa83(%rip), %rsi     # 0x383c4
leaq -0x1e0(%rbp), %rdi
callq 0x199b0
jmp 0x894f
movl $0x21, %edi
xorl %esi, %esi
leaq -0x1e0(%rbp), %rdx
callq 0x56e0
jmp 0x8964
leaq -0x1e0(%rbp), %rdi
callq 0x34d8
leaq -0x1e1(%rbp), %rdi
callq 0x32b0
jmp 0x89d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x89a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x34d8
leaq -0x1e1(%rbp), %rdi
callq 0x32b0
jmp 0x8a49
movq -0x200(%rbp), %rdi
callq 0x3110
movq %rax, %rsi
leaq 0x2ec2e(%rip), %rdi     # 0x375f9
movb $0x0, %al
callq 0x1a780
jmp 0x89d4
jmp 0x89d6
jmp 0x89d8
jmp 0x89da
jmp 0x89dc
jmp 0x89de
jmp 0x89e0
jmp 0x89e2
jmp 0x89e4
jmp 0x89e6
leaq -0x1e2(%rbp), %rdi
movq %rdi, -0x260(%rbp)
callq 0x3470
movq -0x1f8(%rbp), %rdi
movq -0x260(%rbp), %rdx
leaq 0x2f416(%rip), %rsi     # 0x37e24
callq 0x199b0
jmp 0x8a15
leaq -0x1e2(%rbp), %rdi
callq 0x32b0
movq -0x1f0(%rbp), %rax
addq $0x260, %rsp            # imm = 0x260
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1e2(%rbp), %rdi
callq 0x32b0
movq -0x50(%rbp), %rdi
callq 0x3460
nopw %cs:(%rax,%rax)