// File: /workspace/github_c_makefile_star2_O2/takoeight0821[P]hoc_nyan/src/gen_ir.c
// Function: emit_expr
static IReg* emit_expr(Node* node) {
  switch (node->tag) {
  case NINT: {
    IReg* reg = new_reg(4);
    emit_ir(imm(reg, node->integer));
    return reg;
  }
  case NVAR: {
    IReg* addr = emit_lval(node);

    if (node->type->array_size == 0) {
      IReg* val = new_reg(size_of(type_of(node)));
      emit_ir(load(val, addr));
      return val;
    } else {
      return addr;
    }
  }
  case NGVAR: {
    IReg* addr = emit_lval(node);

    if (node->type->array_size == 0) {
      IReg* val = new_reg(size_of(type_of(node)));
      emit_ir(load(val, addr));
      return val;
    } else {
      return addr;
    }
  }
  case NASSIGN: {
    IReg* addr = emit_lval(node->lhs);
    IReg* val = emit_expr(node->rhs);
    IReg* val1 = new_reg(size_of(type_of(node->lhs)));
    emit_ir(move(val1, val));
    emit_ir(store(addr, val1));
    return val1;
  }
  case NADD: {
    IReg* lhs = emit_expr(node->lhs);
    IReg* rhs = emit_expr(node->rhs);
    IReg* reg = new_reg(size_of(type_of(node)));
    emit_ir(new_binop_ir(IADD, reg, lhs, rhs));
    return reg;
  }
  case NSUB: {
    IReg* lhs = emit_expr(node->lhs);
    IReg* rhs = emit_expr(node->rhs);
    IReg* reg = new_reg(size_of(type_of(node)));
    emit_ir(new_binop_ir(ISUB, reg, lhs, rhs));
    return reg;
  }
  case NMUL: {
    IReg* lhs = emit_expr(node->lhs);
    IReg* rhs = emit_expr(node->rhs);
    IReg* reg = new_reg(size_of(type_of(node)));
    emit_ir(new_binop_ir(IMUL, reg, lhs, rhs));
    return reg;
  }
  case NDIV: {
    IReg* lhs = emit_expr(node->lhs);
    IReg* rhs = emit_expr(node->rhs);
    IReg* reg = new_reg(size_of(type_of(node)));
    emit_ir(new_binop_ir(IDIV, reg, lhs, rhs));
    return reg;
  }
  case NMOD: {
    IReg* lhs = emit_expr(node->lhs);
    IReg* rhs = emit_expr(node->rhs);
    IReg* reg = new_reg(size_of(type_of(node)));
    emit_ir(new_binop_ir(IMOD, reg, lhs, rhs));
    return reg;
  }
  case NLT: {
    IReg* lhs = emit_expr(node->lhs);
    IReg* rhs = emit_expr(node->rhs);
    IReg* reg = new_reg(size_of(type_of(node)));
    emit_ir(new_binop_ir(ILT, reg, lhs, rhs));
    return reg;
  }
  case NLE: {
    IReg* lhs = emit_expr(node->lhs);
    IReg* rhs = emit_expr(node->rhs);
    IReg* reg = new_reg(size_of(type_of(node)));
    emit_ir(new_binop_ir(ILE, reg, lhs, rhs));
    return reg;
  }
  case NGT: {
    IReg* lhs = emit_expr(node->lhs);
    IReg* rhs = emit_expr(node->rhs);
    IReg* reg = new_reg(size_of(type_of(node)));
    emit_ir(new_binop_ir(IGT, reg, lhs, rhs));
    return reg;
  }
  case NGE: {
    IReg* lhs = emit_expr(node->lhs);
    IReg* rhs = emit_expr(node->rhs);
    IReg* reg = new_reg(size_of(type_of(node)));
    emit_ir(new_binop_ir(IGE, reg, lhs, rhs));
    return reg;
  }
  case NEQ: {
    IReg* lhs = emit_expr(node->lhs);
    IReg* rhs = emit_expr(node->rhs);
    IReg* reg = new_reg(size_of(type_of(node)));
    emit_ir(new_binop_ir(IEQ, reg, lhs, rhs));
    return reg;
  }
  case NNE: {
    IReg* lhs = emit_expr(node->lhs);
    IReg* rhs = emit_expr(node->rhs);
    IReg* reg = new_reg(size_of(type_of(node)));
    emit_ir(new_binop_ir(INE, reg, lhs, rhs));
    return reg;
  }
  case NLOGNOT: {
    IReg* val = emit_expr(node->expr);
    IReg* zero = new_reg(size_of(type_of(node)));
    IReg* reg = new_reg(size_of(type_of(node)));
    emit_ir(imm(zero, 0));
    emit_ir(new_binop_ir(IEQ, reg, val, zero));
    return reg;
  }
  case NNOT: {
    IReg* val = emit_expr(node->expr);
    IReg* reg = new_reg(size_of(type_of(node)));
    emit_ir(bitwise_not(reg, val));
    return reg;
  }
  case NAND: {
    IReg* lhs = emit_expr(node->lhs);
    IReg* rhs = emit_expr(node->rhs);
    IReg* reg = new_reg(size_of(type_of(node)));
    emit_ir(new_binop_ir(IAND, reg, lhs, rhs));
    return reg;
  }
  case NOR: {
    IReg* lhs = emit_expr(node->lhs);
    IReg* rhs = emit_expr(node->rhs);
    IReg* reg = new_reg(size_of(type_of(node)));
    emit_ir(new_binop_ir(IOR, reg, lhs, rhs));
    return reg;
  }
  case NXOR: {
    IReg* lhs = emit_expr(node->lhs);
    IReg* rhs = emit_expr(node->rhs);
    IReg* reg = new_reg(size_of(type_of(node)));
    emit_ir(new_binop_ir(IXOR, reg, lhs, rhs));
    return reg;
  }
  case NLOGAND: {
    char* when_lhs_false = new_label("when_lhs_false");
    char* when_lhs_true = new_label("when_lhs_true");
    char* end = new_label("end");

    IReg* lhs = emit_expr(node->lhs);
    IReg* zero = new_reg(size_of(type_of(node->lhs)));
    emit_ir(imm(zero, 0));
    IReg* lhs_cond = new_reg(size_of(type_of(node->lhs)));
    emit_ir(new_binop_ir(IEQ, lhs_cond, lhs, zero));
    emit_ir(branch(lhs_cond, when_lhs_false, when_lhs_true));

    IReg* reg = new_reg(size_of(type_of(node)));

    in_new_block(when_lhs_true);
    IReg* rhs = emit_expr(node->rhs);
    emit_ir(move(reg, rhs));
    emit_ir(jmp(end));

    in_new_block(when_lhs_false);
    emit_ir(imm(reg, 0));
    emit_ir(jmp(end));

    in_new_block(end);
    return reg;
  }
  case NLOGOR: {
    char* when_lhs_false = new_label("when_lhs_false");
    char* when_lhs_true = new_label("when_lhs_true");
    char* end = new_label("end");

    IReg* lhs = emit_expr(node->lhs);
    IReg* zero = new_reg(size_of(type_of(node->lhs)));
    emit_ir(imm(zero, 0));
    IReg* lhs_cond = new_reg(size_of(type_of(node->lhs)));
    emit_ir(new_binop_ir(IEQ, lhs_cond, lhs, zero));
    emit_ir(branch(lhs_cond, when_lhs_false, when_lhs_true));

    IReg* reg = new_reg(size_of(type_of(node)));

    in_new_block(when_lhs_true);
    emit_ir(move(reg, lhs));
    emit_ir(jmp(end));

    in_new_block(when_lhs_false);
    IReg* rhs = emit_expr(node->rhs);
    emit_ir(move(reg, rhs));
    emit_ir(jmp(end));

    in_new_block(end);
    return reg;
  }
  case NCOMMA: {
    emit_expr(node->lhs);
    return emit_expr(node->rhs);
  }
  case NDEFVAR: {
    // for initializer
    emit_ir(alloc(size_of(type_of(node))));
    /* assign_var(node->name, new); */
    return NULL;
  }
  case NCALL: {
    Vector* args = new_vec();

    for (size_t i = 0; i < node->args->length; i++) {
      IReg* arg = emit_expr(node->args->ptr[i]);
      vec_push(args, arg);
    }

    IR* ir = new_ir(ICALL);
    ir->r0 = new_reg(size_of(type_of(node)));
    ir->func_name = node->name;
    ir->args = args;
    emit_ir(ir);

    return ir->r0;
  }
  case NADDR: {
    return emit_lval(node->expr);
  }
  case NDEREF: {
    IReg* reg = new_reg(size_of(type_of(node)));
    IReg* addr = emit_expr(node->expr);
    emit_ir(load(reg, addr));
    return reg;
  }
  case NMEMBER: {
    IReg* reg = new_reg(size_of(type_of(node)));
    IReg* addr = emit_lval(node);
    emit_ir(load(reg, addr));
    return reg;
  }
  case NSIZEOF: {
    IReg* reg = new_reg(size_of(type_of(node->expr)));
    emit_ir(imm(reg, size_of(type_of(node->expr))));
    return reg;
  }
  case NCAST: {
    IReg* reg = new_reg(size_of(type_of(node->expr)));
    emit_ir(move(reg, emit_expr(node->expr)));
    return reg;
  }
  default: {
    bad_token(node->token, "error: statement cannot appear on here");
  }
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x78b1(%rip), %r14      # 0xcb30
movl (%rbx), %eax
cmpq $0x28, %rax
ja 0x5b39
movslq (%r14,%rax,4), %rax
addq %r14, %rax
jmpq *%rax
movq 0x18(%rbx), %rdi
callq 0x526a
movq 0x20(%rbx), %rbx
jmp 0x527f
movq %rbx, %rdi
callq 0x5bdc
movq %rax, %r14
movq 0x10(%rbx), %rax
cmpq $0x0, 0x20(%rax)
jne 0x59ae
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %rbx
movq %rax, %rdi
movq %r14, %rsi
callq 0x5ce4
movq %rax, %rdi
callq 0x4c47
movq %rbx, %r14
jmp 0x59ae
movq 0x18(%rbx), %rdi
callq 0x526a
movq %rax, %r15
movq 0x20(%rbx), %rdi
callq 0x526a
movq %rax, %r12
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
pushq $0x5
jmp 0x5997
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
movq 0x38(%rbx), %rdi
callq 0x526a
jmp 0x591e
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movl %eax, %edi
callq 0x4c5a
movq %rax, %rdi
callq 0x4c47
xorl %r14d, %r14d
jmp 0x59ae
movq 0x18(%rbx), %rdi
callq 0x526a
movq %rax, %r15
movq 0x20(%rbx), %rdi
callq 0x526a
movq %rax, %r12
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
pushq $0xd
jmp 0x5997
movq 0x38(%rbx), %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x5bdc
movq 0x38(%rbx), %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
movq 0x38(%rbx), %rdi
callq 0x526a
movq %r14, %rdi
movq %rax, %rsi
callq 0x5d06
jmp 0x59a6
movq 0x38(%rbx), %rdi
callq 0x526a
movq %rax, %r15
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
pushq $0x10
popq %rdi
callq 0x6c44
movq %r14, 0x10(%rax)
movq %r15, 0x18(%rax)
jmp 0x59a6
movq 0x18(%rbx), %rdi
callq 0x526a
movq %rax, %r15
movq 0x20(%rbx), %rdi
callq 0x526a
movq %rax, %r12
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
pushq $0x7
jmp 0x5997
movq 0x18(%rbx), %rdi
callq 0x526a
movq %rax, %r15
movq 0x20(%rbx), %rdi
callq 0x526a
movq %rax, %r12
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
pushq $0x2
jmp 0x5997
movq 0x18(%rbx), %rdi
callq 0x526a
movq %rax, %r15
movq 0x20(%rbx), %rdi
callq 0x526a
movq %rax, %r12
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
pushq $0xb
jmp 0x5997
movq 0x18(%rbx), %rdi
callq 0x526a
movq %rax, %r15
movq 0x20(%rbx), %rdi
callq 0x526a
movq %rax, %r12
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
pushq $0xe
jmp 0x5997
xorl %r15d, %r15d
xorl %eax, %eax
callq 0x229c
movq %rax, %r14
movq 0x50(%rbx), %rax
cmpq 0x10(%rax), %r15
jae 0x555a
movq (%rax), %rax
movq (%rax,%r15,8), %rdi
callq 0x526a
movq %r14, %rdi
movq %rax, %rsi
callq 0x22c6
incq %r15
jmp 0x5534
pushq $0x17
popq %rdi
callq 0x6c44
movq %rax, %r15
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, 0x10(%r15)
movq 0x40(%rbx), %rax
movq %rax, 0x48(%r15)
movq %r14, 0x50(%r15)
movq %r15, %rdi
callq 0x4c47
movq 0x10(%r15), %r14
jmp 0x59ae
pushq $0x4
popq %rdi
callq 0x4c6a
movq %rax, %r14
movl 0x28(%rbx), %esi
movq %rax, %rdi
jmp 0x5b2f
movq 0x18(%rbx), %rdi
callq 0x526a
movq %rax, %r15
movq 0x20(%rbx), %rdi
callq 0x526a
movq %rax, %r12
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
pushq $0xc
jmp 0x5997
leaq 0x769a(%rip), %rdi      # 0xcc8f
callq 0x4be6
movq %rax, (%rsp)
leaq 0x7699(%rip), %rdi      # 0xcc9e
callq 0x4be6
movq %rax, %r13
leaq 0x6bfb(%rip), %rdi      # 0xc20f
callq 0x4be6
movq %rax, %r15
movq 0x18(%rbx), %rdi
callq 0x526a
movq %rax, %rbp
movq 0x18(%rbx), %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
movq %rax, %rdi
xorl %esi, %esi
callq 0x5bb9
movq %rax, %rdi
callq 0x4c47
movq 0x18(%rbx), %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r12
pushq $0xb
popq %rdi
movq %rax, %rsi
movq %rbp, %rdx
movq %r14, %rcx
callq 0x6c56
movq %rax, %rdi
callq 0x4c47
movq %r12, %rdi
movq (%rsp), %r12
movq %r12, %rsi
movq %r13, %rdx
callq 0x5b7f
movq %rax, %rdi
callq 0x4c47
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
movq %r13, %rdi
callq 0x4c06
movq %r14, %rdi
movq %rbp, %rsi
callq 0x5d06
movq %rax, %rdi
callq 0x4c47
movq %r15, %rdi
callq 0x5ba7
movq %rax, %rdi
callq 0x4c47
movq %r12, %rdi
callq 0x4c06
movq 0x20(%rbx), %rdi
callq 0x526a
movq %r14, %rdi
movq %rax, %rsi
callq 0x5d06
jmp 0x5ad8
movq 0x18(%rbx), %rdi
callq 0x526a
movq %rax, %r15
movq 0x20(%rbx), %rdi
callq 0x526a
movq %rax, %r12
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
pushq $0x3
jmp 0x5997
movq 0x18(%rbx), %rdi
callq 0x526a
movq %rax, %r15
movq 0x20(%rbx), %rdi
callq 0x526a
movq %rax, %r12
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
pushq $0x9
jmp 0x5997
movq 0x18(%rbx), %rdi
callq 0x526a
movq %rax, %r15
movq 0x20(%rbx), %rdi
callq 0x526a
movq %rax, %r12
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
pushq $0x4
jmp 0x5997
movq 0x18(%rbx), %rdi
callq 0x526a
movq %rax, %r15
movq 0x20(%rbx), %rdi
callq 0x526a
movq %rax, %r12
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
pushq $0x6
jmp 0x5997
movq 0x18(%rbx), %rdi
callq 0x526a
movq %rax, %r15
movq 0x20(%rbx), %rdi
callq 0x526a
movq %rax, %r12
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
pushq $0xf
jmp 0x5997
movq 0x18(%rbx), %rdi
callq 0x5bdc
movq %rax, %r15
movq 0x20(%rbx), %rdi
callq 0x526a
movq %rax, %r12
movq 0x18(%rbx), %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
movq %rax, %rdi
movq %r12, %rsi
callq 0x5d06
movq %rax, %rdi
callq 0x4c47
testq %r15, %r15
je 0x5b49
testq %r14, %r14
je 0x5b62
pushq $0x15
popq %rdi
callq 0x6c44
movq %r15, 0x18(%rax)
movq %r14, 0x20(%rax)
jmp 0x59a6
movq 0x38(%rbx), %rdi
callq 0x526a
movq %rax, %r15
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r12
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
movq %r12, %rdi
xorl %esi, %esi
callq 0x5bb9
movq %rax, %rdi
callq 0x4c47
pushq $0xb
popq %rdi
movq %r14, %rsi
jmp 0x599b
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
movq %rbx, %rdi
callq 0x5bdc
movq %r14, %rdi
movq %rax, %rsi
callq 0x5ce4
jmp 0x59a6
movq 0x18(%rbx), %rdi
callq 0x526a
movq %rax, %r15
movq 0x20(%rbx), %rdi
callq 0x526a
movq %rax, %r12
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
pushq $0x8
jmp 0x5997
movq 0x18(%rbx), %rdi
callq 0x526a
movq %rax, %r15
movq 0x20(%rbx), %rdi
callq 0x526a
movq %rax, %r12
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
pushq $0xa
popq %rdi
movq %rax, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x6c56
movq %rax, %rdi
callq 0x4c47
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x72c8(%rip), %rdi      # 0xcc8f
callq 0x4be6
movq %rax, (%rsp)
leaq 0x72c7(%rip), %rdi      # 0xcc9e
callq 0x4be6
movq %rax, %r13
leaq 0x6829(%rip), %rdi      # 0xc20f
callq 0x4be6
movq %rax, %r15
movq 0x18(%rbx), %rdi
callq 0x526a
movq %rax, %r14
movq 0x18(%rbx), %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %rbp
movq %rax, %rdi
xorl %esi, %esi
callq 0x5bb9
movq %rax, %rdi
callq 0x4c47
movq 0x18(%rbx), %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r12
pushq $0xb
popq %rdi
movq %rax, %rsi
movq %r14, %rdx
movq %rbp, %rcx
callq 0x6c56
movq %rax, %rdi
callq 0x4c47
movq %r12, %rdi
movq (%rsp), %r12
movq %r12, %rsi
movq %r13, %rdx
callq 0x5b7f
movq %rax, %rdi
callq 0x4c47
movq %rbx, %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
movq %r13, %rdi
callq 0x4c06
movq 0x20(%rbx), %rdi
callq 0x526a
movq %r14, %rdi
movq %rax, %rsi
callq 0x5d06
movq %rax, %rdi
callq 0x4c47
movq %r15, %rdi
callq 0x5ba7
movq %rax, %rdi
callq 0x4c47
movq %r12, %rdi
callq 0x4c06
movq %r14, %rdi
xorl %esi, %esi
callq 0x5bb9
movq %rax, %rdi
callq 0x4c47
movq %r15, %rdi
callq 0x5ba7
movq %rax, %rdi
callq 0x4c47
movq %r15, %rdi
callq 0x4c06
jmp 0x59ae
movq 0x38(%rbx), %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %rax, %rdi
callq 0x4c6a
movq %rax, %r14
movq 0x38(%rbx), %rdi
callq 0x76db
movq %rax, %rdi
callq 0x75fe
movq %r14, %rdi
movl %eax, %esi
callq 0x5bb9
jmp 0x59a6
movq 0x8(%rbx), %rdi
leaq 0x7168(%rip), %rsi      # 0xccac
callq 0xa124
leaq 0x7091(%rip), %rdi      # 0xcbe1
leaq 0x708e(%rip), %rsi      # 0xcbe5
leaq 0x718d(%rip), %rcx      # 0xcceb
pushq $0x69
jmp 0x5b79
leaq 0x719c(%rip), %rdi      # 0xcd05
leaq 0x7075(%rip), %rsi      # 0xcbe5
leaq 0x7174(%rip), %rcx      # 0xcceb
pushq $0x6a
popq %rdx
callq 0x20c0