// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %r14
pushq %rbx
subq $0x170, %rsp            # imm = 0x170
movq %rdx, %r14
movq %rdi, %rbx
leaq 0x1005f(%rip), %rsi     # 0x161f2
movq %rdx, %rdi
callq 0xf4c8
testb %al, %al
je 0x61d3
leaq 0x112de(%rip), %rsi     # 0x17484
leaq -0x178(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xf1f8
pushq $0xd
popq %rdi
leaq -0x178(%rbp), %rdx
xorl %esi, %esi
callq 0x4a27
leaq -0x178(%rbp), %rdi
jmp 0x6473
leaq 0x1001b(%rip), %rsi     # 0x161f5
movq %r14, %rdi
callq 0xf4c8
testb %al, %al
je 0x621a
leaq 0x11297(%rip), %rsi     # 0x17484
leaq -0x158(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xf1f8
pushq $0xe
popq %rdi
leaq -0x158(%rbp), %rdx
xorl %esi, %esi
callq 0x4a27
leaq -0x158(%rbp), %rdi
jmp 0x6473
leaq 0xffd7(%rip), %rsi      # 0x161f8
movq %r14, %rdi
callq 0xf4c8
testb %al, %al
je 0x6261
leaq 0x11250(%rip), %rsi     # 0x17484
leaq -0x138(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xf1f8
pushq $0xf
popq %rdi
leaq -0x138(%rbp), %rdx
xorl %esi, %esi
callq 0x4a27
leaq -0x138(%rbp), %rdi
jmp 0x6473
leaq 0xff93(%rip), %rsi      # 0x161fb
movq %r14, %rdi
callq 0xf4c8
testb %al, %al
je 0x62a8
leaq 0x11209(%rip), %rsi     # 0x17484
leaq -0x118(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xf1f8
pushq $0x10
popq %rdi
leaq -0x118(%rbp), %rdx
xorl %esi, %esi
callq 0x4a27
leaq -0x118(%rbp), %rdi
jmp 0x6473
leaq 0xff4f(%rip), %rsi      # 0x161fe
movq %r14, %rdi
callq 0xf4c8
testb %al, %al
je 0x62ef
leaq 0x111c2(%rip), %rsi     # 0x17484
leaq -0xf8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xf1f8
pushq $0x11
popq %rdi
leaq -0xf8(%rbp), %rdx
xorl %esi, %esi
callq 0x4a27
leaq -0xf8(%rbp), %rdi
jmp 0x6473
leaq 0xff0f(%rip), %rsi      # 0x16205
movq %r14, %rdi
callq 0xf4c8
testb %al, %al
je 0x6336
leaq 0x1117b(%rip), %rsi     # 0x17484
leaq -0xd8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xf1f8
pushq $0x15
popq %rdi
leaq -0xd8(%rbp), %rdx
xorl %esi, %esi
callq 0x4a27
leaq -0xd8(%rbp), %rdi
jmp 0x6473
leaq 0xfec4(%rip), %rsi      # 0x16201
movq %r14, %rdi
callq 0xf4c8
testb %al, %al
je 0x637d
leaq 0x11134(%rip), %rsi     # 0x17484
leaq -0xb8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xf1f8
pushq $0x16
popq %rdi
leaq -0xb8(%rbp), %rdx
xorl %esi, %esi
callq 0x4a27
leaq -0xb8(%rbp), %rdi
jmp 0x6473
leaq 0x1032e(%rip), %rsi     # 0x166b2
movq %r14, %rdi
callq 0xf4c8
testb %al, %al
je 0x63c4
leaq 0x110ed(%rip), %rsi     # 0x17484
leaq -0x98(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xf1f8
pushq $0x17
popq %rdi
leaq -0x98(%rbp), %rdx
xorl %esi, %esi
callq 0x4a27
leaq -0x98(%rbp), %rdi
jmp 0x6473
leaq 0x102eb(%rip), %rsi     # 0x166b6
movq %r14, %rdi
callq 0xf4c8
testb %al, %al
je 0x63ff
leaq 0x110a6(%rip), %rsi     # 0x17484
leaq -0x78(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xf1f8
pushq $0x18
popq %rdi
leaq -0x78(%rbp), %rdx
xorl %esi, %esi
callq 0x4a27
leaq -0x78(%rbp), %rdi
jmp 0x6473
leaq 0x102ab(%rip), %rsi     # 0x166b1
movq %r14, %rdi
callq 0xf4c8
testb %al, %al
je 0x643a
leaq 0x1106b(%rip), %rsi     # 0x17484
leaq -0x58(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xf1f8
pushq $0x20
popq %rdi
leaq -0x58(%rbp), %rdx
xorl %esi, %esi
callq 0x4a27
leaq -0x58(%rbp), %rdi
jmp 0x6473
leaq 0x10274(%rip), %rsi     # 0x166b5
movq %r14, %rdi
callq 0xf4c8
testb %al, %al
je 0x649a
leaq 0x11030(%rip), %rsi     # 0x17484
leaq -0x38(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xf1f8
pushq $0x21
popq %rdi
leaq -0x38(%rbp), %rdx
xorl %esi, %esi
callq 0x4a27
leaq -0x38(%rbp), %rdi
callq 0x3368
leaq 0x10a65(%rip), %rsi     # 0x16ee4
leaq -0x11(%rbp), %rdx
movq %rbx, %rdi
callq 0xf1f8
movq %rbx, %rax
addq $0x170, %rsp            # imm = 0x170
popq %rbx
popq %r14
popq %rbp
retq
movq (%r14), %rsi
leaq 0x10215(%rip), %rdi     # 0x166b9
xorl %eax, %eax
callq 0xf410
jmp 0x6478
movq %rax, %rbx
leaq -0x38(%rbp), %rdi
jmp 0x6540
jmp 0x6547
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
jmp 0x6540
jmp 0x6547
movq %rax, %rbx
leaq -0x78(%rbp), %rdi
jmp 0x6540
jmp 0x6547
movq %rax, %rbx
leaq -0x98(%rbp), %rdi
jmp 0x6540
jmp 0x6547
movq %rax, %rbx
leaq -0xb8(%rbp), %rdi
jmp 0x6540
jmp 0x6547
movq %rax, %rbx
leaq -0xd8(%rbp), %rdi
jmp 0x6540
jmp 0x6547
movq %rax, %rbx
leaq -0xf8(%rbp), %rdi
jmp 0x6540
jmp 0x6547
movq %rax, %rbx
leaq -0x118(%rbp), %rdi
jmp 0x6540
jmp 0x6547
movq %rax, %rbx
leaq -0x138(%rbp), %rdi
jmp 0x6540
jmp 0x6547
movq %rax, %rbx
leaq -0x158(%rbp), %rdi
jmp 0x6540
jmp 0x6547
movq %rax, %rbx
leaq -0x178(%rbp), %rdi
callq 0x3368
jmp 0x654a
movq %rax, %rbx
movq %rbx, %rdi
callq 0x3310