// File: acliusBackHome[P]kamaya/dist/IR.cpp
// Function: IR::relopEmit(ParseTree&, unsigned long, unsigned long, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, unsigned long)
void IR::relopEmit(ParseTree &tree, size_t p0, size_t p1, size_t p3,
                   const string &relop, size_t node_id) {
  ParseNode &B = tree.node(p0);
  const ParseNode &E1 = tree.node(p1);
  const ParseNode &E2 = tree.node(p3);
  B.set_true_list(makelist(getNextinstr()));
  B.set_false_list(makelist(getNextinstr() + 1));
  string arg1, arg2;
  const ParseExpression &left = E1.get_expression();
  const ParseExpression &right = E2.get_expression();
  if (left.is_const()) {
    arg1 = getConstValueStr(left);
  } else {
    arg1 = address2pointer(left.get_address());
  }
  if (right.is_const()) {
    arg2 = getConstValueStr(right);
  } else {
    arg2 = address2pointer(right.get_address());
  }
  gen(relop, arg1, arg2, "_", node_id);
  gen("jmp", "_", "_", "_", node_id);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2b0, %rsp            # imm = 0x2B0
movq 0x10(%rbp), %rax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x238(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x32760
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x32760
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x32760
movq -0x238(%rbp), %rdi
movq %rax, -0x48(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x230(%rbp)
callq 0x16680
movq -0x238(%rbp), %rsi
movq %rax, %rdx
leaq -0x60(%rbp), %rdi
movq %rdi, -0x228(%rbp)
callq 0x16600
movq -0x230(%rbp), %rdi
movq -0x228(%rbp), %rsi
callq 0x3e7b0
jmp 0x86b7b
leaq -0x60(%rbp), %rdi
callq 0x166a0
movq -0x238(%rbp), %rdi
movq -0x38(%rbp), %rax
movq %rax, -0x248(%rbp)
callq 0x16680
movq -0x238(%rbp), %rsi
movq %rax, %rdx
incq %rdx
leaq -0x88(%rbp), %rdi
movq %rdi, -0x240(%rbp)
callq 0x16600
movq -0x248(%rbp), %rdi
movq -0x240(%rbp), %rsi
callq 0x3e7e0
jmp 0x86bd0
leaq -0x88(%rbp), %rdi
callq 0x166a0
leaq -0xa8(%rbp), %rdi
callq 0x4460
leaq -0xc8(%rbp), %rdi
callq 0x4460
movq -0x40(%rbp), %rdi
callq 0x3de30
movq %rax, -0x250(%rbp)
jmp 0x86c06
movq -0x250(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0x48(%rbp), %rdi
callq 0x3de30
movq %rax, -0x258(%rbp)
jmp 0x86c26
movq -0x258(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0xd0(%rbp), %rdi
callq 0x61790
movb %al, -0x259(%rbp)
jmp 0x86c48
movb -0x259(%rbp), %al
testb $0x1, %al
jne 0x86c57
jmp 0x86cd8
movq -0xd0(%rbp), %rsi
leaq -0xf8(%rbp), %rdi
callq 0x84d60
jmp 0x86c6c
leaq -0xa8(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x43e0
leaq -0xf8(%rbp), %rdi
callq 0x4688
jmp 0x86d28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x166a0
jmp 0x870af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x166a0
jmp 0x870af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x87097
movq -0xd0(%rbp), %rdi
callq 0x61e00
movq %rax, -0x268(%rbp)
jmp 0x86ced
movq -0x268(%rbp), %rdx
movq -0x238(%rbp), %rsi
leaq -0x118(%rbp), %rdi
callq 0x180c0
jmp 0x86d09
leaq -0xa8(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x43e0
leaq -0x118(%rbp), %rdi
callq 0x4688
movq -0xd8(%rbp), %rdi
callq 0x61790
movb %al, -0x269(%rbp)
jmp 0x86d3c
movb -0x269(%rbp), %al
testb $0x1, %al
jne 0x86d48
jmp 0x86d7e
movq -0xd8(%rbp), %rsi
leaq -0x138(%rbp), %rdi
callq 0x84d60
jmp 0x86d5d
leaq -0xc8(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x43e0
leaq -0x138(%rbp), %rdi
callq 0x4688
jmp 0x86dce
movq -0xd8(%rbp), %rdi
callq 0x61e00
movq %rax, -0x278(%rbp)
jmp 0x86d93
movq -0x278(%rbp), %rdx
movq -0x238(%rbp), %rsi
leaq -0x158(%rbp), %rdi
callq 0x180c0
jmp 0x86daf
leaq -0xc8(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x43e0
leaq -0x158(%rbp), %rdi
callq 0x4688
movq -0x30(%rbp), %rax
movq %rax, -0x288(%rbp)
leaq -0x179(%rbp), %rdi
movq %rdi, -0x280(%rbp)
callq 0x45f0
movq -0x280(%rbp), %rdx
leaq 0x88bf(%rip), %rsi      # 0x8f6b9
leaq -0x178(%rbp), %rdi
callq 0x4450
jmp 0x86e08
movq -0x288(%rbp), %rsi
movq -0x238(%rbp), %rdi
movq 0x10(%rbp), %r9
leaq -0xa8(%rbp), %rdx
leaq -0xc8(%rbp), %rcx
leaq -0x178(%rbp), %r8
callq 0x84430
jmp 0x86e36
leaq -0x178(%rbp), %rdi
callq 0x4688
leaq -0x179(%rbp), %rdi
callq 0x4380
leaq -0x1a1(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0x45f0
movq -0x290(%rbp), %rdx
leaq 0x61be(%rip), %rsi      # 0x8d02d
leaq -0x1a0(%rbp), %rdi
callq 0x4450
jmp 0x86e7d
leaq -0x1c9(%rbp), %rdi
movq %rdi, -0x298(%rbp)
callq 0x45f0
movq -0x298(%rbp), %rdx
leaq 0x881b(%rip), %rsi      # 0x8f6b9
leaq -0x1c8(%rbp), %rdi
callq 0x4450
jmp 0x86eac
leaq -0x1f1(%rbp), %rdi
movq %rdi, -0x2a0(%rbp)
callq 0x45f0
movq -0x2a0(%rbp), %rdx
leaq 0x87ec(%rip), %rsi      # 0x8f6b9
leaq -0x1f0(%rbp), %rdi
callq 0x4450
jmp 0x86edb
leaq -0x219(%rbp), %rdi
movq %rdi, -0x2a8(%rbp)
callq 0x45f0
movq -0x2a8(%rbp), %rdx
leaq 0x87bd(%rip), %rsi      # 0x8f6b9
leaq -0x218(%rbp), %rdi
callq 0x4450
jmp 0x86f0a
movq -0x238(%rbp), %rdi
movq 0x10(%rbp), %r9
leaq -0x1a0(%rbp), %rsi
leaq -0x1c8(%rbp), %rdx
leaq -0x1f0(%rbp), %rcx
leaq -0x218(%rbp), %r8
callq 0x84430
jmp 0x86f38
leaq -0x218(%rbp), %rdi
callq 0x4688
leaq -0x219(%rbp), %rdi
callq 0x4380
leaq -0x1f0(%rbp), %rdi
callq 0x4688
leaq -0x1f1(%rbp), %rdi
callq 0x4380
leaq -0x1c8(%rbp), %rdi
callq 0x4688
leaq -0x1c9(%rbp), %rdi
callq 0x4380
leaq -0x1a0(%rbp), %rdi
callq 0x4688
leaq -0x1a1(%rbp), %rdi
callq 0x4380
leaq -0xc8(%rbp), %rdi
callq 0x4688
leaq -0xa8(%rbp), %rdi
callq 0x4688
addq $0x2b0, %rsp            # imm = 0x2B0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x86fdf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x4688
leaq -0x179(%rbp), %rdi
callq 0x4380
jmp 0x87097
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x8708b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x87073
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x8705b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x87043
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x4688
leaq -0x219(%rbp), %rdi
callq 0x4380
leaq -0x1f0(%rbp), %rdi
callq 0x4688
leaq -0x1f1(%rbp), %rdi
callq 0x4380
leaq -0x1c8(%rbp), %rdi
callq 0x4688
leaq -0x1c9(%rbp), %rdi
callq 0x4380
leaq -0x1a0(%rbp), %rdi
callq 0x4688
leaq -0x1a1(%rbp), %rdi
callq 0x4380
leaq -0xc8(%rbp), %rdi
callq 0x4688
leaq -0xa8(%rbp), %rdi
callq 0x4688
movq -0x68(%rbp), %rdi
callq 0x45e0
nopl (%rax,%rax)