// File: /workspace/github_c_makefile_star2_O0/cogbee[P]vmir-latest/src/vmir_vm.c
// Function: emit_cmp2
static void
emit_cmp2(ir_unit_t *iu, ir_instr_binary_t *ii)
{
  int pred = ii->op;
  const ir_value_t *lhs = value_get(iu, ii->lhs_value.value);
  const ir_value_t *rhs = value_get(iu, ii->rhs_value.value);
  const ir_value_t *ret = value_get(iu, ii->super.ii_ret.value);
  const ir_type_t *it = type_get(iu, ii->lhs_value.type);

  if(lhs->iv_class == IR_VC_REGFRAME &&
     rhs->iv_class == IR_VC_REGFRAME) {

    if(pred >= FCMP_OEQ && pred <= FCMP_UNE) {
      switch(legalize_type(it)) {
      case IR_TYPE_FLOAT:
        emit_op3(iu, pred - FCMP_OEQ + VM_OEQ_FLT,
                 value_reg(ret), value_reg(lhs), value_reg(rhs));
        return;

      case IR_TYPE_DOUBLE:
        emit_op3(iu, pred - FCMP_OEQ + VM_OEQ_DBL,
                 value_reg(ret), value_reg(lhs), value_reg(rhs));
        return;

      default:
        parser_error(iu, "Can't fcmp type %s class %d/%d op %d",
                     type_str(iu, it),
                     lhs->iv_class, rhs->iv_class, pred);
      }
    } else if(pred >= ICMP_EQ && pred <= ICMP_SLE) {

      switch(legalize_type(it)) {
      case IR_TYPE_INT8:
        emit_op3(iu, pred - ICMP_EQ + VM_EQ8,
                 value_reg(ret), value_reg(lhs), value_reg(rhs));
        return;

      case IR_TYPE_INT16:
        emit_op3(iu, pred - ICMP_EQ + VM_EQ16,
                 value_reg(ret), value_reg(lhs), value_reg(rhs));
        return;

      case IR_TYPE_INT32:
      case IR_TYPE_POINTER:
        emit_op3(iu, pred - ICMP_EQ + VM_EQ32,
                 value_reg(ret), value_reg(lhs), value_reg(rhs));
        return;

      case IR_TYPE_INT64:
        emit_op3(iu, pred - ICMP_EQ + VM_EQ64,
                 value_reg(ret), value_reg(lhs), value_reg(rhs));
        return;

      default:
        parser_error(iu, "Can't icmp type %s class %d/%d op %d",
                     type_str(iu, it),
                     lhs->iv_class, rhs->iv_class, pred);
      }
    } else {
      parser_error(iu, "Can't compare pred %d", pred);
    }

  } else if((lhs->iv_class == IR_VC_REGFRAME &&
             rhs->iv_class == IR_VC_CONSTANT) ||
            (lhs->iv_class == IR_VC_CONSTANT &&
             rhs->iv_class == IR_VC_REGFRAME)) {


    if(rhs->iv_class == IR_VC_REGFRAME) {
      // Swap LHS RHS
      const ir_value_t *tmp = rhs;
      rhs = lhs;
      lhs = tmp;
      pred = swap_pred(pred);
    }

    if(pred >= FCMP_OEQ && pred <= FCMP_UNE) {
      switch(legalize_type(it)) {

      case IR_TYPE_DOUBLE:
        if(__builtin_isnan(rhs->iv_double))
          parser_error(iu, "Ugh, immediate is nan in fcmp");
        vm_align32(iu, 1);
        emit_op2(iu, pred - FCMP_OEQ + VM_OEQ_DBL_C,
                 value_reg(ret), value_reg(lhs));
        emit_i64(iu, value_get_const64(iu, rhs));
        return;

      case IR_TYPE_FLOAT:
        if(__builtin_isnan(rhs->iv_float))
          parser_error(iu, "Ugh, immediate is nan in fcmp");

        vm_align32(iu, 1);
        emit_op2(iu, pred - FCMP_OEQ + VM_OEQ_FLT_C,
                 value_reg(ret), value_reg(lhs));
        emit_i32(iu, value_get_const32(iu, rhs));
        return;

      default:
        parser_error(iu, "Can't fcmp type %s class %d/%d op %d",
                     type_str(iu, it),
                     lhs->iv_class, rhs->iv_class, pred);
      }

    } else if(pred >= ICMP_EQ && pred <= ICMP_SLE) {

      switch(legalize_type(it)) {
      case IR_TYPE_INT8:
        emit_op2(iu, pred - ICMP_EQ + VM_EQ8_C,
                 value_reg(ret), value_reg(lhs));
        emit_i8(iu, value_get_const32(iu, rhs));
        return;

      case IR_TYPE_INT16:
        emit_op2(iu, pred - ICMP_EQ + VM_EQ16_C,
                 value_reg(ret), value_reg(lhs));
        emit_i16(iu, value_get_const32(iu, rhs));
        return;

      case IR_TYPE_INT32:
      case IR_TYPE_POINTER:
        emit_op2(iu, pred - ICMP_EQ + VM_EQ32_C,
                 value_reg(ret), value_reg(lhs));
        emit_i32(iu, value_get_const32(iu, rhs));
        return;

      case IR_TYPE_INT64:
        vm_align32(iu, 1);
        emit_op2(iu, pred - ICMP_EQ + VM_EQ64_C,
                 value_reg(ret), value_reg(lhs));
        emit_i64(iu, value_get_const64(iu, rhs));
        return;

      default:
        parser_error(iu, "Can't icmp type %s class %d/%d op %d",
                     type_str(iu, it),
                     lhs->iv_class, rhs->iv_class, pred);
      }
    } else {
      parser_error(iu, "Can't compare pred %d (const)", pred);
    }


  } else if((lhs->iv_class == IR_VC_REGFRAME &&
             rhs->iv_class == IR_VC_GLOBALVAR) ||
            (lhs->iv_class == IR_VC_GLOBALVAR &&
             rhs->iv_class == IR_VC_REGFRAME)) {


    if(lhs->iv_class == IR_VC_GLOBALVAR) {
      // Swap LHS RHS
      const ir_value_t *tmp = rhs;
      rhs = lhs;
      lhs = tmp;
      pred = swap_pred(pred);
    }

    if(pred >= ICMP_EQ && pred <= ICMP_SLE) {

      switch(legalize_type(it)) {
      case IR_TYPE_POINTER:
        emit_op2(iu, pred - ICMP_EQ + VM_EQ32_C,
                 value_reg(ret), value_reg(lhs));
        emit_i32(iu, value_get_const32(iu, rhs));
        return;

      default:
        parser_error(iu, "Can't icmp type %s class %d/%d op %d",
                     type_str(iu, it),
                     lhs->iv_class, rhs->iv_class, pred);
      }
    } else {
      parser_error(iu, "Can't compare pred %d (const)", pred);
    }


  } else {
    parser_error(iu, "Can't icmp value class %d and %d",
                 lhs->iv_class, rhs->iv_class);
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1b0, %rsp            # imm = 0x1B0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl 0x58(%rax), %eax
movl %eax, -0x14(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x5c(%rax), %esi
callq 0x20ee0
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x64(%rax), %esi
callq 0x20ee0
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x2c(%rax), %esi
callq 0x20ee0
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x60(%rax), %esi
callq 0x1ee20
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x5, (%rax)
jne 0x2d43e
movq -0x28(%rbp), %rax
cmpl $0x5, (%rax)
jne 0x2d43e
cmpl $0x1, -0x14(%rbp)
jl 0x2d1b4
cmpl $0xe, -0x14(%rbp)
jg 0x2d1b4
movq -0x38(%rbp), %rdi
callq 0x45d0
movl %eax, %ecx
movl %ecx, -0x4c(%rbp)
subl $0x8, %eax
je 0x2d0ad
jmp 0x2d0a0
movl -0x4c(%rbp), %eax
subl $0x9, %eax
je 0x2d109
jmp 0x2d165
movq -0x8(%rbp), %rax
movq %rax, -0x60(%rbp)
movl -0x14(%rbp), %eax
subl $0x1, %eax
addl $0x10b, %eax            # imm = 0x10B
movl %eax, -0x54(%rbp)
movq -0x30(%rbp), %rdi
callq 0x321a0
movw %ax, -0x50(%rbp)
movq -0x20(%rbp), %rdi
callq 0x321a0
movw %ax, -0x4e(%rbp)
movq -0x28(%rbp), %rdi
callq 0x321a0
movq -0x60(%rbp), %rdi
movl -0x54(%rbp), %esi
movw -0x50(%rbp), %dx
movw -0x4e(%rbp), %cx
movzwl %dx, %edx
movzwl %cx, %ecx
movzwl %ax, %r8d
callq 0x32430
jmp 0x2db1d
movq -0x8(%rbp), %rax
movq %rax, -0x70(%rbp)
movl -0x14(%rbp), %eax
subl $0x1, %eax
addl $0xef, %eax
movl %eax, -0x68(%rbp)
movq -0x30(%rbp), %rdi
callq 0x321a0
movw %ax, -0x64(%rbp)
movq -0x20(%rbp), %rdi
callq 0x321a0
movw %ax, -0x62(%rbp)
movq -0x28(%rbp), %rdi
callq 0x321a0
movq -0x70(%rbp), %rdi
movl -0x68(%rbp), %esi
movw -0x64(%rbp), %dx
movw -0x62(%rbp), %cx
movzwl %dx, %edx
movzwl %cx, %ecx
movzwl %ax, %r8d
callq 0x32430
jmp 0x2db1d
movq -0x8(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x8(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x4760
movq -0x78(%rbp), %rdi
movq %rax, %r8
movq -0x20(%rbp), %rax
movl (%rax), %r9d
movq -0x28(%rbp), %rax
movl (%rax), %r10d
movl -0x14(%rbp), %eax
leaq 0x12d86(%rip), %rsi     # 0x3ff1f
movl $0xca3, %edx            # imm = 0xCA3
leaq 0x13097(%rip), %rcx     # 0x4023c
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
movb $0x0, %al
callq 0x18220
cmpl $0x20, -0x14(%rbp)
jl 0x2d41c
cmpl $0x29, -0x14(%rbp)
jg 0x2d41c
movq -0x38(%rbp), %rdi
callq 0x45d0
addl $-0x3, %eax
movl %eax, %ecx
movq %rcx, -0x80(%rbp)
subl $0x8, %eax
ja 0x2d3c7
movq -0x80(%rbp), %rax
leaq 0x1099e(%rip), %rcx     # 0x3db8c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rax
movq %rax, -0x90(%rbp)
movl -0x14(%rbp), %eax
subl $0x20, %eax
addl $0x9f, %eax
movl %eax, -0x88(%rbp)
movq -0x30(%rbp), %rdi
callq 0x321a0
movw %ax, -0x84(%rbp)
movq -0x20(%rbp), %rdi
callq 0x321a0
movw %ax, -0x82(%rbp)
movq -0x28(%rbp), %rdi
callq 0x321a0
movq -0x90(%rbp), %rdi
movl -0x88(%rbp), %esi
movw -0x84(%rbp), %dx
movw -0x82(%rbp), %cx
movzwl %dx, %edx
movzwl %cx, %ecx
movzwl %ax, %r8d
callq 0x32430
jmp 0x2db1d
movq -0x8(%rbp), %rax
movq %rax, -0xa0(%rbp)
movl -0x14(%rbp), %eax
subl $0x20, %eax
addl $0xb3, %eax
movl %eax, -0x98(%rbp)
movq -0x30(%rbp), %rdi
callq 0x321a0
movw %ax, -0x94(%rbp)
movq -0x20(%rbp), %rdi
callq 0x321a0
movw %ax, -0x92(%rbp)
movq -0x28(%rbp), %rdi
callq 0x321a0
movq -0xa0(%rbp), %rdi
movl -0x98(%rbp), %esi
movw -0x94(%rbp), %dx
movw -0x92(%rbp), %cx
movzwl %dx, %edx
movzwl %cx, %ecx
movzwl %ax, %r8d
callq 0x32430
jmp 0x2db1d
movq -0x8(%rbp), %rax
movq %rax, -0xb0(%rbp)
movl -0x14(%rbp), %eax
subl $0x20, %eax
addl $0xc7, %eax
movl %eax, -0xa8(%rbp)
movq -0x30(%rbp), %rdi
callq 0x321a0
movw %ax, -0xa4(%rbp)
movq -0x20(%rbp), %rdi
callq 0x321a0
movw %ax, -0xa2(%rbp)
movq -0x28(%rbp), %rdi
callq 0x321a0
movq -0xb0(%rbp), %rdi
movl -0xa8(%rbp), %esi
movw -0xa4(%rbp), %dx
movw -0xa2(%rbp), %cx
movzwl %dx, %edx
movzwl %cx, %ecx
movzwl %ax, %r8d
callq 0x32430
jmp 0x2db1d
movq -0x8(%rbp), %rax
movq %rax, -0xc0(%rbp)
movl -0x14(%rbp), %eax
subl $0x20, %eax
addl $0xdb, %eax
movl %eax, -0xb8(%rbp)
movq -0x30(%rbp), %rdi
callq 0x321a0
movw %ax, -0xb4(%rbp)
movq -0x20(%rbp), %rdi
callq 0x321a0
movw %ax, -0xb2(%rbp)
movq -0x28(%rbp), %rdi
callq 0x321a0
movq -0xc0(%rbp), %rdi
movl -0xb8(%rbp), %esi
movw -0xb4(%rbp), %dx
movw -0xb2(%rbp), %cx
movzwl %dx, %edx
movzwl %cx, %ecx
movzwl %ax, %r8d
callq 0x32430
jmp 0x2db1d
movq -0x8(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x4760
movq -0xc8(%rbp), %rdi
movq %rax, %r8
movq -0x20(%rbp), %rax
movl (%rax), %r9d
movq -0x28(%rbp), %rax
movl (%rax), %r10d
movl -0x14(%rbp), %eax
leaq 0x12b1e(%rip), %rsi     # 0x3ff1f
movl $0xcc0, %edx            # imm = 0xCC0
leaq 0x12e54(%rip), %rcx     # 0x40261
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
movb $0x0, %al
callq 0x18220
movq -0x8(%rbp), %rdi
movl -0x14(%rbp), %r8d
leaq 0x12af4(%rip), %rsi     # 0x3ff1f
movl $0xcc3, %edx            # imm = 0xCC3
leaq 0x12e4f(%rip), %rcx     # 0x40286
movb $0x0, %al
callq 0x18220
movq -0x20(%rbp), %rax
cmpl $0x5, (%rax)
jne 0x2d450
movq -0x28(%rbp), %rax
cmpl $0x3, (%rax)
je 0x2d46a
movq -0x20(%rbp), %rax
cmpl $0x3, (%rax)
jne 0x2d97b
movq -0x28(%rbp), %rax
cmpl $0x5, (%rax)
jne 0x2d97b
movq -0x28(%rbp), %rax
cmpl $0x5, (%rax)
jne 0x2d496
movq -0x28(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x20(%rbp)
movl -0x14(%rbp), %edi
callq 0x32da0
movl %eax, -0x14(%rbp)
cmpl $0x1, -0x14(%rbp)
jl 0x2d6ae
cmpl $0xe, -0x14(%rbp)
jg 0x2d6ae
movq -0x38(%rbp), %rdi
callq 0x45d0
movl %eax, %ecx
movl %ecx, -0xcc(%rbp)
subl $0x8, %eax
je 0x2d599
jmp 0x2d4c6
movl -0xcc(%rbp), %eax
subl $0x9, %eax
jne 0x2d659
jmp 0x2d4d7
movq -0x28(%rbp), %rax
movsd 0x30(%rax), %xmm0
ucomisd %xmm0, %xmm0
setp %al
testb $0x1, %al
jne 0x2d4ed
jmp 0x2d50b
movq -0x8(%rbp), %rdi
leaq 0x12a27(%rip), %rsi     # 0x3ff1f
movl $0xcd9, %edx            # imm = 0xCD9
leaq 0x12d98(%rip), %rcx     # 0x4029c
movb $0x0, %al
callq 0x18220
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x321f0
movq -0x8(%rbp), %rax
movq %rax, -0xe8(%rbp)
movl -0x14(%rbp), %eax
subl $0x1, %eax
addl $0xfd, %eax
movl %eax, -0xe0(%rbp)
movq -0x30(%rbp), %rdi
callq 0x321a0
movw %ax, -0xda(%rbp)
movq -0x20(%rbp), %rdi
callq 0x321a0
movq -0xe8(%rbp), %rdi
movl -0xe0(%rbp), %esi
movw -0xda(%rbp), %cx
movzwl %cx, %edx
movzwl %ax, %ecx
callq 0x324a0
movq -0x8(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x322d0
movq -0xd8(%rbp), %rdi
movq %rax, %rsi
callq 0x32240
jmp 0x2db1d
movq -0x28(%rbp), %rax
movss 0x30(%rax), %xmm0
ucomiss %xmm0, %xmm0
setp %al
testb $0x1, %al
jne 0x2d5ae
jmp 0x2d5cc
movq -0x8(%rbp), %rdi
leaq 0x12966(%rip), %rsi     # 0x3ff1f
movl $0xce2, %edx            # imm = 0xCE2
leaq 0x12cd7(%rip), %rcx     # 0x4029c
movb $0x0, %al
callq 0x18220
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x321f0
movq -0x8(%rbp), %rax
movq %rax, -0x100(%rbp)
movl -0x14(%rbp), %eax
subl $0x1, %eax
addl $0x119, %eax            # imm = 0x119
movl %eax, -0xf8(%rbp)
movq -0x30(%rbp), %rdi
callq 0x321a0
movw %ax, -0xf2(%rbp)
movq -0x20(%rbp), %rdi
callq 0x321a0
movq -0x100(%rbp), %rdi
movl -0xf8(%rbp), %esi
movw -0xf2(%rbp), %cx
movzwl %cx, %edx
movzwl %ax, %ecx
callq 0x324a0
movq -0x8(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x261a0
movq -0xf0(%rbp), %rdi
movl %eax, %esi
callq 0x2b450
jmp 0x2db1d
movq -0x8(%rbp), %rax
movq %rax, -0x108(%rbp)
movq -0x8(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x4760
movq -0x108(%rbp), %rdi
movq %rax, %r8
movq -0x20(%rbp), %rax
movl (%rax), %r9d
movq -0x28(%rbp), %rax
movl (%rax), %r10d
movl -0x14(%rbp), %eax
leaq 0x1288c(%rip), %rsi     # 0x3ff1f
movl $0xced, %edx            # imm = 0xCED
leaq 0x12b9d(%rip), %rcx     # 0x4023c
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
movb $0x0, %al
callq 0x18220
cmpl $0x20, -0x14(%rbp)
jl 0x2d959
cmpl $0x29, -0x14(%rbp)
jg 0x2d959
movq -0x38(%rbp), %rdi
callq 0x45d0
addl $-0x3, %eax
movl %eax, %ecx
movq %rcx, -0x110(%rbp)
subl $0x8, %eax
ja 0x2d904
movq -0x110(%rbp), %rax
leaq 0x1047a(%rip), %rcx     # 0x3db68
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rax
movq %rax, -0x128(%rbp)
movl -0x14(%rbp), %eax
subl $0x20, %eax
addl $0xa9, %eax
movl %eax, -0x120(%rbp)
movq -0x30(%rbp), %rdi
callq 0x321a0
movw %ax, -0x11a(%rbp)
movq -0x20(%rbp), %rdi
callq 0x321a0
movq -0x128(%rbp), %rdi
movl -0x120(%rbp), %esi
movw -0x11a(%rbp), %cx
movzwl %cx, %edx
movzwl %ax, %ecx
callq 0x324a0
movq -0x8(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x261a0
movq -0x118(%rbp), %rdi
movzbl %al, %esi
callq 0x32500
jmp 0x2db1d
movq -0x8(%rbp), %rax
movq %rax, -0x140(%rbp)
movl -0x14(%rbp), %eax
subl $0x20, %eax
addl $0xbd, %eax
movl %eax, -0x138(%rbp)
movq -0x30(%rbp), %rdi
callq 0x321a0
movw %ax, -0x132(%rbp)
movq -0x20(%rbp), %rdi
callq 0x321a0
movq -0x140(%rbp), %rdi
movl -0x138(%rbp), %esi
movw -0x132(%rbp), %cx
movzwl %cx, %edx
movzwl %ax, %ecx
callq 0x324a0
movq -0x8(%rbp), %rax
movq %rax, -0x130(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x261a0
movq -0x130(%rbp), %rdi
movzwl %ax, %esi
callq 0x2bae0
jmp 0x2db1d
movq -0x8(%rbp), %rax
movq %rax, -0x158(%rbp)
movl -0x14(%rbp), %eax
subl $0x20, %eax
addl $0xd1, %eax
movl %eax, -0x150(%rbp)
movq -0x30(%rbp), %rdi
callq 0x321a0
movw %ax, -0x14a(%rbp)
movq -0x20(%rbp), %rdi
callq 0x321a0
movq -0x158(%rbp), %rdi
movl -0x150(%rbp), %esi
movw -0x14a(%rbp), %cx
movzwl %cx, %edx
movzwl %ax, %ecx
callq 0x324a0
movq -0x8(%rbp), %rax
movq %rax, -0x148(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x261a0
movq -0x148(%rbp), %rdi
movl %eax, %esi
callq 0x2b450
jmp 0x2db1d
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x321f0
movq -0x8(%rbp), %rax
movq %rax, -0x170(%rbp)
movl -0x14(%rbp), %eax
subl $0x20, %eax
addl $0xe5, %eax
movl %eax, -0x168(%rbp)
movq -0x30(%rbp), %rdi
callq 0x321a0
movw %ax, -0x162(%rbp)
movq -0x20(%rbp), %rdi
callq 0x321a0
movq -0x170(%rbp), %rdi
movl -0x168(%rbp), %esi
movw -0x162(%rbp), %cx
movzwl %cx, %edx
movzwl %ax, %ecx
callq 0x324a0
movq -0x8(%rbp), %rax
movq %rax, -0x160(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x322d0
movq -0x160(%rbp), %rdi
movq %rax, %rsi
callq 0x32240
jmp 0x2db1d
movq -0x8(%rbp), %rax
movq %rax, -0x178(%rbp)
movq -0x8(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x4760
movq -0x178(%rbp), %rdi
movq %rax, %r8
movq -0x20(%rbp), %rax
movl (%rax), %r9d
movq -0x28(%rbp), %rax
movl (%rax), %r10d
movl -0x14(%rbp), %eax
leaq 0x125e1(%rip), %rsi     # 0x3ff1f
movl $0xd10, %edx            # imm = 0xD10
leaq 0x12917(%rip), %rcx     # 0x40261
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
movb $0x0, %al
callq 0x18220
movq -0x8(%rbp), %rdi
movl -0x14(%rbp), %r8d
leaq 0x125b7(%rip), %rsi     # 0x3ff1f
movl $0xd13, %edx            # imm = 0xD13
leaq 0x12946(%rip), %rcx     # 0x402ba
movb $0x0, %al
callq 0x18220
movq -0x20(%rbp), %rax
cmpl $0x5, (%rax)
jne 0x2d98d
movq -0x28(%rbp), %rax
cmpl $0x2, (%rax)
je 0x2d9a7
movq -0x20(%rbp), %rax
cmpl $0x2, (%rax)
jne 0x2daf1
movq -0x28(%rbp), %rax
cmpl $0x5, (%rax)
jne 0x2daf1
movq -0x20(%rbp), %rax
cmpl $0x2, (%rax)
jne 0x2d9d3
movq -0x28(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x20(%rbp)
movl -0x14(%rbp), %edi
callq 0x32da0
movl %eax, -0x14(%rbp)
cmpl $0x20, -0x14(%rbp)
jl 0x2dacf
cmpl $0x29, -0x14(%rbp)
jg 0x2dacf
movq -0x38(%rbp), %rdi
callq 0x45d0
subl $0xb, %eax
jne 0x2da7a
jmp 0x2d9fb
movq -0x8(%rbp), %rax
movq %rax, -0x190(%rbp)
movl -0x14(%rbp), %eax
subl $0x20, %eax
addl $0xd1, %eax
movl %eax, -0x188(%rbp)
movq -0x30(%rbp), %rdi
callq 0x321a0
movw %ax, -0x182(%rbp)
movq -0x20(%rbp), %rdi
callq 0x321a0
movq -0x190(%rbp), %rdi
movl -0x188(%rbp), %esi
movw -0x182(%rbp), %cx
movzwl %cx, %edx
movzwl %ax, %ecx
callq 0x324a0
movq -0x8(%rbp), %rax
movq %rax, -0x180(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x261a0
movq -0x180(%rbp), %rdi
movl %eax, %esi
callq 0x2b450
jmp 0x2db1d
movq -0x8(%rbp), %rax
movq %rax, -0x198(%rbp)
movq -0x8(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x4760
movq -0x198(%rbp), %rdi
movq %rax, %r8
movq -0x20(%rbp), %rax
movl (%rax), %r9d
movq -0x28(%rbp), %rax
movl (%rax), %r10d
movl -0x14(%rbp), %eax
leaq 0x1246b(%rip), %rsi     # 0x3ff1f
movl $0xd31, %edx            # imm = 0xD31
leaq 0x127a1(%rip), %rcx     # 0x40261
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
movb $0x0, %al
callq 0x18220
movq -0x8(%rbp), %rdi
movl -0x14(%rbp), %r8d
leaq 0x12441(%rip), %rsi     # 0x3ff1f
movl $0xd34, %edx            # imm = 0xD34
leaq 0x127d0(%rip), %rcx     # 0x402ba
movb $0x0, %al
callq 0x18220
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movl (%rax), %r8d
movq -0x28(%rbp), %rax
movl (%rax), %r9d
leaq 0x12415(%rip), %rsi     # 0x3ff1f
movl $0xd3a, %edx            # imm = 0xD3A
leaq 0x127c2(%rip), %rcx     # 0x402d8
movb $0x0, %al
callq 0x18220
addq $0x1b0, %rsp            # imm = 0x1B0
popq %rbp
retq
nopw %cs:(%rax,%rax)