// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x2b0, %rsp            # imm = 0x2B0
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl (%rax), %eax
movq %rax, -0x2a0(%rbp)
subq $0x28, %rax
ja 0x7342
movq -0x2a0(%rbp), %rax
leaq 0xc760(%rip), %rcx      # 0x12b04
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x4, %edi
callq 0x5a40
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x28(%rax), %esi
callq 0x73f0
movq %rax, %rdi
callq 0x59e0
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rdi
callq 0x7440
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
cmpq $0x0, 0x20(%rax)
jne 0x643b
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x75a0
movq %rax, %rdi
callq 0x59e0
movq -0x28(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rdi
callq 0x7440
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
cmpq $0x0, 0x20(%rax)
jne 0x64a3
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x75a0
movq %rax, %rdi
callq 0x59e0
movq -0x38(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x30(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x7440
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x6370
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x75e0
movq %rax, %rdi
callq 0x59e0
movq -0x40(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0x7620
movq %rax, %rdi
callq 0x59e0
movq -0x50(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x6370
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x6370
movq %rax, -0x60(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq -0x60(%rbp), %rcx
movl $0x2, %edi
callq 0x8db0
movq %rax, %rdi
callq 0x59e0
movq -0x68(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x6370
movq %rax, -0x70(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x6370
movq %rax, -0x78(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rsi
movq -0x70(%rbp), %rdx
movq -0x78(%rbp), %rcx
movl $0x3, %edi
callq 0x8db0
movq %rax, %rdi
callq 0x59e0
movq -0x80(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x6370
movq %rax, -0x88(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x6370
movq %rax, -0x90(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rsi
movq -0x88(%rbp), %rdx
movq -0x90(%rbp), %rcx
movl $0x4, %edi
callq 0x8db0
movq %rax, %rdi
callq 0x59e0
movq -0x98(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x6370
movq %rax, -0xa0(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x6370
movq %rax, -0xa8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rsi
movq -0xa0(%rbp), %rdx
movq -0xa8(%rbp), %rcx
movl $0x5, %edi
callq 0x8db0
movq %rax, %rdi
callq 0x59e0
movq -0xb0(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x6370
movq %rax, -0xb8(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x6370
movq %rax, -0xc0(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0xc8(%rbp)
movq -0xc8(%rbp), %rsi
movq -0xb8(%rbp), %rdx
movq -0xc0(%rbp), %rcx
movl $0x6, %edi
callq 0x8db0
movq %rax, %rdi
callq 0x59e0
movq -0xc8(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x6370
movq %rax, -0xd0(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x6370
movq %rax, -0xd8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0xe0(%rbp)
movq -0xe0(%rbp), %rsi
movq -0xd0(%rbp), %rdx
movq -0xd8(%rbp), %rcx
movl $0x7, %edi
callq 0x8db0
movq %rax, %rdi
callq 0x59e0
movq -0xe0(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x6370
movq %rax, -0xe8(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x6370
movq %rax, -0xf0(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0xf8(%rbp)
movq -0xf8(%rbp), %rsi
movq -0xe8(%rbp), %rdx
movq -0xf0(%rbp), %rcx
movl $0x8, %edi
callq 0x8db0
movq %rax, %rdi
callq 0x59e0
movq -0xf8(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x6370
movq %rax, -0x100(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x6370
movq %rax, -0x108(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x110(%rbp)
movq -0x110(%rbp), %rsi
movq -0x100(%rbp), %rdx
movq -0x108(%rbp), %rcx
movl $0x9, %edi
callq 0x8db0
movq %rax, %rdi
callq 0x59e0
movq -0x110(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x6370
movq %rax, -0x118(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x6370
movq %rax, -0x120(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x128(%rbp)
movq -0x128(%rbp), %rsi
movq -0x118(%rbp), %rdx
movq -0x120(%rbp), %rcx
movl $0xa, %edi
callq 0x8db0
movq %rax, %rdi
callq 0x59e0
movq -0x128(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x6370
movq %rax, -0x130(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x6370
movq %rax, -0x138(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x140(%rbp)
movq -0x140(%rbp), %rsi
movq -0x130(%rbp), %rdx
movq -0x138(%rbp), %rcx
movl $0xb, %edi
callq 0x8db0
movq %rax, %rdi
callq 0x59e0
movq -0x140(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x6370
movq %rax, -0x148(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x6370
movq %rax, -0x150(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x158(%rbp)
movq -0x158(%rbp), %rsi
movq -0x148(%rbp), %rdx
movq -0x150(%rbp), %rcx
movl $0xc, %edi
callq 0x8db0
movq %rax, %rdi
callq 0x59e0
movq -0x158(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x6370
movq %rax, -0x160(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x168(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x170(%rbp)
movq -0x168(%rbp), %rdi
xorl %esi, %esi
callq 0x73f0
movq %rax, %rdi
callq 0x59e0
movq -0x170(%rbp), %rsi
movq -0x160(%rbp), %rdx
movq -0x168(%rbp), %rcx
movl $0xb, %edi
callq 0x8db0
movq %rax, %rdi
callq 0x59e0
movq -0x170(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x6370
movq %rax, -0x178(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x180(%rbp)
movq -0x180(%rbp), %rdi
movq -0x178(%rbp), %rsi
callq 0x76b0
movq %rax, %rdi
callq 0x59e0
movq -0x180(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x6370
movq %rax, -0x188(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x6370
movq %rax, -0x190(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x198(%rbp)
movq -0x198(%rbp), %rsi
movq -0x188(%rbp), %rdx
movq -0x190(%rbp), %rcx
movl $0xd, %edi
callq 0x8db0
movq %rax, %rdi
callq 0x59e0
movq -0x198(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x6370
movq %rax, -0x1a0(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x6370
movq %rax, -0x1a8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x1b0(%rbp)
movq -0x1b0(%rbp), %rsi
movq -0x1a0(%rbp), %rdx
movq -0x1a8(%rbp), %rcx
movl $0xe, %edi
callq 0x8db0
movq %rax, %rdi
callq 0x59e0
movq -0x1b0(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x6370
movq %rax, -0x1b8(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x6370
movq %rax, -0x1c0(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x1c8(%rbp)
movq -0x1c8(%rbp), %rsi
movq -0x1b8(%rbp), %rdx
movq -0x1c0(%rbp), %rcx
movl $0xf, %edi
callq 0x8db0
movq %rax, %rdi
callq 0x59e0
movq -0x1c8(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
leaq 0xbfd6(%rip), %rdi      # 0x12ccf
callq 0x5950
movq %rax, -0x1d0(%rbp)
leaq 0xbfd2(%rip), %rdi      # 0x12cde
callq 0x5950
movq %rax, -0x1d8(%rbp)
leaq 0xb4c6(%rip), %rdi      # 0x121e5
callq 0x5950
movq %rax, -0x1e0(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x6370
movq %rax, -0x1e8(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x1f0(%rbp)
movq -0x1f0(%rbp), %rdi
xorl %esi, %esi
callq 0x73f0
movq %rax, %rdi
callq 0x59e0
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x1f8(%rbp)
movq -0x1f8(%rbp), %rsi
movq -0x1e8(%rbp), %rdx
movq -0x1f0(%rbp), %rcx
movl $0xb, %edi
callq 0x8db0
movq %rax, %rdi
callq 0x59e0
movq -0x1f8(%rbp), %rdi
movq -0x1d0(%rbp), %rsi
movq -0x1d8(%rbp), %rdx
callq 0x7370
movq %rax, %rdi
callq 0x59e0
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x200(%rbp)
movq -0x1d8(%rbp), %rdi
callq 0x59a0
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x6370
movq %rax, -0x208(%rbp)
movq -0x200(%rbp), %rdi
movq -0x208(%rbp), %rsi
callq 0x75e0
movq %rax, %rdi
callq 0x59e0
movq -0x1e0(%rbp), %rdi
callq 0x73c0
movq %rax, %rdi
callq 0x59e0
movq -0x1d0(%rbp), %rdi
callq 0x59a0
movq -0x200(%rbp), %rdi
xorl %esi, %esi
callq 0x73f0
movq %rax, %rdi
callq 0x59e0
movq -0x1e0(%rbp), %rdi
callq 0x73c0
movq %rax, %rdi
callq 0x59e0
movq -0x1e0(%rbp), %rdi
callq 0x59a0
movq -0x200(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
leaq 0xbe21(%rip), %rdi      # 0x12ccf
callq 0x5950
movq %rax, -0x210(%rbp)
leaq 0xbe1d(%rip), %rdi      # 0x12cde
callq 0x5950
movq %rax, -0x218(%rbp)
leaq 0xb311(%rip), %rdi      # 0x121e5
callq 0x5950
movq %rax, -0x220(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x6370
movq %rax, -0x228(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x230(%rbp)
movq -0x230(%rbp), %rdi
xorl %esi, %esi
callq 0x73f0
movq %rax, %rdi
callq 0x59e0
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x238(%rbp)
movq -0x238(%rbp), %rsi
movq -0x228(%rbp), %rdx
movq -0x230(%rbp), %rcx
movl $0xb, %edi
callq 0x8db0
movq %rax, %rdi
callq 0x59e0
movq -0x238(%rbp), %rdi
movq -0x210(%rbp), %rsi
movq -0x218(%rbp), %rdx
callq 0x7370
movq %rax, %rdi
callq 0x59e0
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x240(%rbp)
movq -0x218(%rbp), %rdi
callq 0x59a0
movq -0x240(%rbp), %rdi
movq -0x228(%rbp), %rsi
callq 0x75e0
movq %rax, %rdi
callq 0x59e0
movq -0x220(%rbp), %rdi
callq 0x73c0
movq %rax, %rdi
callq 0x59e0
movq -0x210(%rbp), %rdi
callq 0x59a0
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x6370
movq %rax, -0x248(%rbp)
movq -0x240(%rbp), %rdi
movq -0x248(%rbp), %rsi
callq 0x75e0
movq %rax, %rdi
callq 0x59e0
movq -0x220(%rbp), %rdi
callq 0x73c0
movq %rax, %rdi
callq 0x59e0
movq -0x220(%rbp), %rdi
callq 0x59a0
movq -0x240(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x6370
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x6370
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movl %eax, %edi
callq 0x5a10
movq %rax, %rdi
callq 0x59e0
movq $0x0, -0x8(%rbp)
jmp 0x7356
movb $0x0, %al
callq 0x2280
movq %rax, -0x250(%rbp)
movq $0x0, -0x258(%rbp)
movq -0x258(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x50(%rcx), %rcx
cmpq 0x10(%rcx), %rax
jae 0x7128
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rax
movq (%rax), %rax
movq -0x258(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x6370
movq %rax, -0x260(%rbp)
movq -0x250(%rbp), %rdi
movq -0x260(%rbp), %rsi
callq 0x22e0
movq -0x258(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x258(%rbp)
jmp 0x70ca
movl $0x17, %edi
callq 0x8d70
movq %rax, -0x268(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, %rcx
movq -0x268(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq -0x268(%rbp), %rax
movq %rcx, 0x48(%rax)
movq -0x250(%rbp), %rcx
movq -0x268(%rbp), %rax
movq %rcx, 0x50(%rax)
movq -0x268(%rbp), %rdi
callq 0x59e0
movq -0x268(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x7440
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x270(%rbp)
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x6370
movq %rax, -0x278(%rbp)
movq -0x270(%rbp), %rdi
movq -0x278(%rbp), %rsi
callq 0x75a0
movq %rax, %rdi
callq 0x59e0
movq -0x270(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x280(%rbp)
movq -0x10(%rbp), %rdi
callq 0x7440
movq %rax, -0x288(%rbp)
movq -0x280(%rbp), %rdi
movq -0x288(%rbp), %rsi
callq 0x75a0
movq %rax, %rdi
callq 0x59e0
movq -0x280(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x290(%rbp)
movq -0x290(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq -0x2a8(%rbp), %rdi
movl %eax, %esi
callq 0x73f0
movq %rax, %rdi
callq 0x59e0
movq -0x290(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x9f70
movq %rax, %rdi
callq 0x9d60
movq %rax, %rdi
callq 0x5a40
movq %rax, -0x298(%rbp)
movq -0x298(%rbp), %rax
movq %rax, -0x2b0(%rbp)
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x6370
movq -0x2b0(%rbp), %rdi
movq %rax, %rsi
callq 0x75e0
movq %rax, %rdi
callq 0x59e0
movq -0x298(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7356
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0xb99b(%rip), %rsi      # 0x12cec
callq 0xed90
movq -0x8(%rbp), %rax
addq $0x2b0, %rsp            # imm = 0x2B0
popq %rbp
retq
nopw %cs:(%rax,%rax)