// File: /workspace/github_c_makefile_star2_O0/takoeight0821[P]hoc_nyan/src/gen_x86.c
// Function: emit_ir
static void emit_ir(IR* ir) {
  switch (ir->op) {
  case IIMM: {
    emit("mov %s, %d", get_reg(ir->r0->real_reg, ir->r0->size), ir->imm_int);
    break;
  }
  case ILABEL: {
    emit("lea %s, [%s]", get_reg(ir->r0->real_reg, ir->r0->size), ir->label);
    break;
  }
  case IADD: {
    assert(ir->r0 == ir->r1);
    emit("add %s, %s", get_reg(ir->r0->real_reg, ir->r0->size), get_reg(ir->r2->real_reg, ir->r0->size));
    break;
  }
  case ISUB: {
    assert(ir->r0 == ir->r1);
    emit("sub %s, %s", get_reg(ir->r0->real_reg, ir->r0->size), get_reg(ir->r2->real_reg, ir->r0->size));
    break;
  }
  case IMUL: {
    emit_mov("rax", get_reg(ir->r1->real_reg, 8));
    emit("imul %s", get_reg(ir->r2->real_reg, ir->r2->size));
    emit_mov(get_reg(ir->r0->real_reg, 8), "rax");
    break;
  }
  case IDIV: {
    emit_mov("rdx", "0");
    emit_mov("rax", get_reg(ir->r1->real_reg, 8));
    emit("div %s", get_reg(ir->r2->real_reg, ir->r2->size));
    emit_mov(get_reg(ir->r0->real_reg, 8), "rax");
    break;
  }
  case IMOD: {
    emit_mov("rdx", "0");
    emit_mov("rax", get_reg(ir->r1->real_reg, 8));
    emit("div %s", get_reg(ir->r2->real_reg, ir->r2->size));
    emit_mov(get_reg(ir->r0->real_reg, 8), "rdx");
    break;
  }
  case ILT: {
    emit("cmp %s, %s", get_reg(ir->r1->real_reg, ir->r0->size), get_reg(ir->r2->real_reg, ir->r0->size));
    emit("setl al");
    emit("movzx rax, al");
    emit_mov(get_reg(ir->r0->real_reg, 8), "rax");
    break;
  }
  case ILE: {
    emit("cmp %s, %s", get_reg(ir->r1->real_reg, ir->r0->size), get_reg(ir->r2->real_reg, ir->r0->size));
    emit("setle al");
    emit("movzx rax, al");
    emit_mov(get_reg(ir->r0->real_reg, 8), "rax");
    break;
  }
  case IGT: {
    emit("cmp %s, %s", get_reg(ir->r1->real_reg, ir->r0->size), get_reg(ir->r2->real_reg, ir->r0->size));
    emit("setg al");
    emit("movzx rax, al");
    emit_mov(get_reg(ir->r0->real_reg, 8), "rax");
    break;
  }
  case IGE: {
    emit("cmp %s, %s", get_reg(ir->r1->real_reg, ir->r0->size), get_reg(ir->r2->real_reg, ir->r0->size));
    emit("setge al");
    emit("movzx rax, al");
    emit_mov(get_reg(ir->r0->real_reg, 8), "rax");
    break;
  }
  case IEQ: {
    emit("cmp %s, %s", get_reg(ir->r1->real_reg, ir->r0->size), get_reg(ir->r2->real_reg, ir->r0->size));
    emit("sete al");
    emit("movzx rax, al");
    emit_mov(get_reg(ir->r0->real_reg, 8), "rax");
    break;
  }
  case INE: {
    emit("cmp %s, %s", get_reg(ir->r1->real_reg, ir->r0->size), get_reg(ir->r2->real_reg, ir->r0->size));
    emit("setne al");
    emit("movzx rax, al");
    emit_mov(get_reg(ir->r0->real_reg, 8), "rax");
    break;
  }
  case IAND: {
    assert(ir->r0 == ir->r1);
    emit("and %s, %s", get_reg(ir->r0->real_reg, ir->r0->size), get_reg(ir->r2->real_reg, ir->r0->size));
    break;
  }
  case IOR: {
    assert(ir->r0 == ir->r1);
    emit("or %s, %s", get_reg(ir->r0->real_reg, ir->r0->size), get_reg(ir->r2->real_reg, ir->r0->size));
    break;
  }
  case IXOR: {
    assert(ir->r0 == ir->r1);
    emit("xor %s, %s", get_reg(ir->r0->real_reg, ir->r0->size), get_reg(ir->r2->real_reg, ir->r0->size));
    break;
  }
  case INOT: {
    emit_mov(get_reg(ir->r0->real_reg, ir->r0->size), get_reg(ir->r1->real_reg, ir->r0->size));
    emit("not %s", get_reg(ir->r0->real_reg, ir->r0->size));
    break;
  }
  case IADDRESS: {
    emit("lea %s, [rbp - %d]", get_reg(ir->r0->real_reg, 8), ir->imm_int);
    break;
  }
  case IALLOC: {
    break;
  }
  case ILOAD: {
    if (ir->r0->size == 1) {
      emit("movsx %s, byte [%s]", get_reg(ir->r0->real_reg, 4), get_reg(ir->r1->real_reg, 8));
    } else {
      emit("mov %s, [%s]", get_reg(ir->r0->real_reg, ir->r0->size), get_reg(ir->r1->real_reg, 8));
    }
    break;
  }
  case ISTOREARG: {
    assert(ir->size == 8 || ir->size == 4 || ir->size == 1);
    assert(ir->r1->size == 8);
    if (ir->size == 8) {
      emit("mov [%s], %s", get_reg(ir->r1->real_reg, 8), argregs[ir->imm_int]);
    } else if (ir->size == 4) {
      emit("mov [%s], %s", get_reg(ir->r1->real_reg, 8), argregs32[ir->imm_int]);
    } else if (ir->size == 1) {
      emit("mov [%s], %s", get_reg(ir->r1->real_reg, 8), argregs8[ir->imm_int]);
    }
    break;
  }
  case ISTORE: {
    emit("mov [%s], %s", get_reg(ir->r1->real_reg, 8), get_reg(ir->r2->real_reg, ir->r2->size));
    break;
  }
  case ICALL: {
    if (streq("__hoc_builtin_va_start", ir->func_name)) {
      emit_builtin_va_start(ir->args->ptr[0]);
      break;
    }

    for (size_t i = 0; i < ir->args->length; i++) {
      emit_mov(argregs[i], get_reg(((IReg*)ir->args->ptr[i])->real_reg, 8));
    }

    emit("push r10");
    emit("push r11");
    emit("mov rax, 0");
    emit("call %s", ir->func_name);
    emit("pop r11");
    emit("pop r10");
    emit_mov(get_reg(ir->r0->real_reg, 8), "rax");
    break;
  }
  case IRET: {
    if (ir->r1) {
      emit_mov("rax", get_reg(ir->r1->real_reg, 8));
    } 
    emit("jmp %s", func_end_label);
    break;
  }
  case IMOV: {
    emit_mov(get_reg(ir->r0->real_reg, ir->r0->size), get_reg(ir->r1->real_reg, ir->r0->size));
    break;
  }
  case IBR: {
    emit("cmp %s, 0", get_reg(ir->r1->real_reg, ir->r1->size));
    emit("je %s", ir->els);
    emit("jmp %s", ir->then);
    break;
  }
  case IJMP: {
    emit("jmp %s", ir->jump_to);
    break;
  }
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movl (%rax), %eax
movq %rax, -0x18(%rbp)
subq $0x1a, %rax
ja 0x8c0f
movq -0x18(%rbp), %rax
leaq 0xae6e(%rip), %rcx      # 0x12d4c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, %rsi
movq -0x8(%rbp), %rax
movl 0x4(%rax), %edx
leaq 0xa5a0(%rip), %rdi      # 0x124b3
movb $0x0, %al
callq 0x7ae0
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, %rsi
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rdx
leaq 0xaee2(%rip), %rdi      # 0x12e2e
movb $0x0, %al
callq 0x7ae0
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rbp), %rcx
cmpq 0x18(%rcx), %rax
jne 0x7f6c
jmp 0x7f8b
leaq 0xaec8(%rip), %rdi      # 0x12e3b
leaq 0xaed2(%rip), %rsi      # 0x12e4c
movl $0x67, %edx
leaq 0xaed4(%rip), %rcx      # 0x12e5a
callq 0x20b0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq -0x20(%rbp), %rsi
movq %rax, %rdx
leaq 0xa486(%rip), %rdi      # 0x12459
movb $0x0, %al
callq 0x7ae0
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rbp), %rcx
cmpq 0x18(%rcx), %rax
jne 0x7ff3
jmp 0x8012
leaq 0xae41(%rip), %rdi      # 0x12e3b
leaq 0xae4b(%rip), %rsi      # 0x12e4c
movl $0x6c, %edx
leaq 0xae4d(%rip), %rcx      # 0x12e5a
callq 0x20b0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq -0x28(%rbp), %rsi
movq %rax, %rdx
leaq 0xa41e(%rip), %rdi      # 0x12478
movb $0x0, %al
callq 0x7ae0
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq %rax, %rsi
leaq 0xa549(%rip), %rdi      # 0x125cd
callq 0x8c90
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, %rsi
leaq 0xa3e9(%rip), %rdi      # 0x12497
movb $0x0, %al
callq 0x7ae0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq %rax, %rdi
leaq 0xa4fa(%rip), %rsi      # 0x125cd
callq 0x8c90
jmp 0x8c0f
leaq 0xa186(%rip), %rdi      # 0x1226a
leaq 0xa4c5(%rip), %rsi      # 0x125b0
callq 0x8c90
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq %rax, %rsi
leaq 0xa4bf(%rip), %rdi      # 0x125cd
callq 0x8c90
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, %rsi
leaq 0xa386(%rip), %rdi      # 0x124be
movb $0x0, %al
callq 0x7ae0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq %rax, %rdi
leaq 0xa470(%rip), %rsi      # 0x125cd
callq 0x8c90
jmp 0x8c0f
leaq 0xa0fc(%rip), %rdi      # 0x1226a
leaq 0xa43b(%rip), %rsi      # 0x125b0
callq 0x8c90
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq %rax, %rsi
leaq 0xa435(%rip), %rdi      # 0x125cd
callq 0x8c90
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, %rsi
leaq 0xa2fc(%rip), %rdi      # 0x124be
movb $0x0, %al
callq 0x7ae0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq %rax, %rdi
leaq 0xa083(%rip), %rsi      # 0x1226a
callq 0x8c90
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq -0x30(%rbp), %rsi
movq %rax, %rdx
leaq 0xa2b3(%rip), %rdi      # 0x124ec
movb $0x0, %al
callq 0x7ae0
leaq 0xa2b0(%rip), %rdi      # 0x124f7
movb $0x0, %al
callq 0x7ae0
leaq 0xa2aa(%rip), %rdi      # 0x124ff
movb $0x0, %al
callq 0x7ae0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq %rax, %rdi
leaq 0xa353(%rip), %rsi      # 0x125cd
callq 0x8c90
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq -0x38(%rbp), %rsi
movq %rax, %rdx
leaq 0xa220(%rip), %rdi      # 0x124ec
movb $0x0, %al
callq 0x7ae0
leaq 0xa245(%rip), %rdi      # 0x1251f
movb $0x0, %al
callq 0x7ae0
leaq 0xa217(%rip), %rdi      # 0x124ff
movb $0x0, %al
callq 0x7ae0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq %rax, %rdi
leaq 0xa2c0(%rip), %rsi      # 0x125cd
callq 0x8c90
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq -0x40(%rbp), %rsi
movq %rax, %rdx
leaq 0xa18d(%rip), %rdi      # 0x124ec
movb $0x0, %al
callq 0x7ae0
leaq 0xa1cd(%rip), %rdi      # 0x1253a
movb $0x0, %al
callq 0x7ae0
leaq 0xa184(%rip), %rdi      # 0x124ff
movb $0x0, %al
callq 0x7ae0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq %rax, %rdi
leaq 0xa22d(%rip), %rsi      # 0x125cd
callq 0x8c90
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq -0x48(%rbp), %rsi
movq %rax, %rdx
leaq 0xa0fa(%rip), %rdi      # 0x124ec
movb $0x0, %al
callq 0x7ae0
leaq 0xa154(%rip), %rdi      # 0x12554
movb $0x0, %al
callq 0x7ae0
leaq 0xa0f1(%rip), %rdi      # 0x124ff
movb $0x0, %al
callq 0x7ae0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq %rax, %rdi
leaq 0xa19a(%rip), %rsi      # 0x125cd
callq 0x8c90
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, -0x50(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq -0x50(%rbp), %rsi
movq %rax, %rdx
leaq 0xa067(%rip), %rdi      # 0x124ec
movb $0x0, %al
callq 0x7ae0
leaq 0xa0dc(%rip), %rdi      # 0x1256f
movb $0x0, %al
callq 0x7ae0
leaq 0xa05e(%rip), %rdi      # 0x124ff
movb $0x0, %al
callq 0x7ae0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq %rax, %rdi
leaq 0xa107(%rip), %rsi      # 0x125cd
callq 0x8c90
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, -0x58(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq -0x58(%rbp), %rsi
movq %rax, %rdx
leaq 0x9fd4(%rip), %rdi      # 0x124ec
movb $0x0, %al
callq 0x7ae0
leaq 0xa063(%rip), %rdi      # 0x12589
movb $0x0, %al
callq 0x7ae0
leaq 0x9fcb(%rip), %rdi      # 0x124ff
movb $0x0, %al
callq 0x7ae0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq %rax, %rdi
leaq 0xa074(%rip), %rsi      # 0x125cd
callq 0x8c90
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rbp), %rcx
cmpq 0x18(%rcx), %rax
jne 0x8577
jmp 0x8596
leaq 0xa8bd(%rip), %rdi      # 0x12e3b
leaq 0xa8c7(%rip), %rsi      # 0x12e4c
movl $0xaf, %edx
leaq 0xa8c9(%rip), %rcx      # 0x12e5a
callq 0x20b0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, -0x60(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq -0x60(%rbp), %rsi
movq %rax, %rdx
leaq 0xa007(%rip), %rdi      # 0x125e5
movb $0x0, %al
callq 0x7ae0
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rbp), %rcx
cmpq 0x18(%rcx), %rax
jne 0x85fe
jmp 0x861d
leaq 0xa836(%rip), %rdi      # 0x12e3b
leaq 0xa840(%rip), %rsi      # 0x12e4c
movl $0xb4, %edx
leaq 0xa842(%rip), %rcx      # 0x12e5a
callq 0x20b0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, -0x68(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq -0x68(%rbp), %rsi
movq %rax, %rdx
leaq 0x9fb2(%rip), %rdi      # 0x12617
movb $0x0, %al
callq 0x7ae0
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rbp), %rcx
cmpq 0x18(%rcx), %rax
jne 0x8685
jmp 0x86a4
leaq 0xa7af(%rip), %rdi      # 0x12e3b
leaq 0xa7b9(%rip), %rsi      # 0x12e4c
movl $0xb9, %edx
leaq 0xa7bb(%rip), %rcx      # 0x12e5a
callq 0x20b0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, -0x70(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq -0x70(%rbp), %rsi
movq %rax, %rdx
leaq 0x9f2a(%rip), %rdi      # 0x12616
movb $0x0, %al
callq 0x7ae0
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, -0x78(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq -0x78(%rbp), %rdi
movq %rax, %rsi
callq 0x8c90
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, %rsi
leaq 0xa998(%rip), %rdi      # 0x130fb
movb $0x0, %al
callq 0x7ae0
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq %rax, %rsi
movq -0x8(%rbp), %rax
movl 0x4(%rax), %edx
leaq 0xa6d9(%rip), %rdi      # 0x12e6d
movb $0x0, %al
callq 0x7ae0
jmp 0x8c0f
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
cmpq $0x1, 0x8(%rax)
jne 0x87f7
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movl $0x4, %esi
callq 0x8c20
movq %rax, -0x80(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq -0x80(%rbp), %rsi
movq %rax, %rdx
leaq 0xa692(%rip), %rdi      # 0x12e80
movb $0x0, %al
callq 0x7ae0
jmp 0x8845
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, -0x88(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq -0x88(%rbp), %rsi
movq %rax, %rdx
leaq 0xa656(%rip), %rdi      # 0x12e94
movb $0x0, %al
callq 0x7ae0
jmp 0x8c0f
movq -0x8(%rbp), %rax
cmpq $0x8, 0x8(%rax)
je 0x886b
movq -0x8(%rbp), %rax
cmpq $0x4, 0x8(%rax)
je 0x886b
movq -0x8(%rbp), %rax
cmpq $0x1, 0x8(%rax)
jne 0x886d
jmp 0x888c
leaq 0xa62d(%rip), %rdi      # 0x12ea1
leaq 0xa5d1(%rip), %rsi      # 0x12e4c
movl $0xd2, %edx
leaq 0xa5d3(%rip), %rcx      # 0x12e5a
callq 0x20b0
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
cmpq $0x8, 0x8(%rax)
jne 0x889d
jmp 0x88bc
leaq 0xa62d(%rip), %rdi      # 0x12ed1
leaq 0xa5a1(%rip), %rsi      # 0x12e4c
movl $0xd3, %edx
leaq 0xa5a3(%rip), %rcx      # 0x12e5a
callq 0x20b0
movq -0x8(%rbp), %rax
cmpq $0x8, 0x8(%rax)
jne 0x8904
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq %rax, %rsi
movq -0x8(%rbp), %rax
movslq 0x4(%rax), %rcx
leaq 0xe8f3(%rip), %rax      # 0x171e0
movq (%rax,%rcx,8), %rdx
leaq 0xa5eb(%rip), %rdi      # 0x12ee3
movb $0x0, %al
callq 0x7ae0
jmp 0x8990
movq -0x8(%rbp), %rax
cmpq $0x4, 0x8(%rax)
jne 0x8949
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq %rax, %rsi
movq -0x8(%rbp), %rax
movslq 0x4(%rax), %rcx
leaq 0xe8db(%rip), %rax      # 0x17210
movq (%rax,%rcx,8), %rdx
leaq 0xa5a3(%rip), %rdi      # 0x12ee3
movb $0x0, %al
callq 0x7ae0
jmp 0x898e
movq -0x8(%rbp), %rax
cmpq $0x1, 0x8(%rax)
jne 0x898c
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq %rax, %rsi
movq -0x8(%rbp), %rax
movslq 0x4(%rax), %rcx
leaq 0xe8c6(%rip), %rax      # 0x17240
movq (%rax,%rcx,8), %rdx
leaq 0xa55e(%rip), %rdi      # 0x12ee3
movb $0x0, %al
callq 0x7ae0
jmp 0x898e
jmp 0x8990
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq %rax, -0x90(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq -0x90(%rbp), %rsi
movq %rax, %rdx
leaq 0xa507(%rip), %rdi      # 0x12ee3
movb $0x0, %al
callq 0x7ae0
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rsi
leaq 0x9cf0(%rip), %rdi      # 0x126e7
callq 0xfca0
cmpl $0x0, %eax
je 0x8a19
movq -0x8(%rbp), %rax
movq 0x50(%rax), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0x8cd0
jmp 0x8c0f
movq $0x0, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq -0x8(%rbp), %rcx
movq 0x50(%rcx), %rcx
cmpq 0x10(%rcx), %rax
jae 0x8a85
movq -0x10(%rbp), %rcx
leaq 0xe7a2(%rip), %rax      # 0x171e0
movq (%rax,%rcx,8), %rax
movq %rax, -0x98(%rbp)
movq -0x8(%rbp), %rax
movq 0x50(%rax), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq -0x98(%rbp), %rdi
movq %rax, %rsi
callq 0x8c90
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x8a21
leaq 0xa464(%rip), %rdi      # 0x12ef0
movb $0x0, %al
callq 0x7ae0
leaq 0xa45f(%rip), %rdi      # 0x12ef9
movb $0x0, %al
callq 0x7ae0
leaq 0x9bbd(%rip), %rdi      # 0x12665
movb $0x0, %al
callq 0x7ae0
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rsi
leaq 0x9c40(%rip), %rdi      # 0x126fe
movb $0x0, %al
callq 0x7ae0
leaq 0xa436(%rip), %rdi      # 0x12f02
movb $0x0, %al
callq 0x7ae0
leaq 0xa430(%rip), %rdi      # 0x12f0a
movb $0x0, %al
callq 0x7ae0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq %rax, %rdi
leaq 0x9ace(%rip), %rsi      # 0x125cd
callq 0x8c90
jmp 0x8c0f
movq -0x8(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x8b37
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x8c20
movq %rax, %rsi
leaq 0x9a9b(%rip), %rdi      # 0x125cd
callq 0x8c90
movq 0xeb32(%rip), %rsi      # 0x17670
leaq 0x9b19(%rip), %rdi      # 0x1265e
movb $0x0, %al
callq 0x7ae0
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, -0xa0(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq -0xa0(%rbp), %rdi
movq %rax, %rsi
callq 0x8c90
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl (%rax), %edi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x8c20
movq %rax, %rsi
leaq 0x99e4(%rip), %rdi      # 0x125a8
movb $0x0, %al
callq 0x7ae0
movq -0x8(%rbp), %rax
movq 0x40(%rax), %rsi
leaq 0x9a73(%rip), %rdi      # 0x1264d
movb $0x0, %al
callq 0x7ae0
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rsi
leaq 0x9a6e(%rip), %rdi      # 0x1265e
movb $0x0, %al
callq 0x7ae0
jmp 0x8c0f
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rsi
leaq 0x9a56(%rip), %rdi      # 0x1265e
movb $0x0, %al
callq 0x7ae0
addq $0xa0, %rsp
popq %rbp
retq
nopl (%rax,%rax)