// File: /workspace/github_c_makefile_star2_O0/mtnygard[P]complisp/lisp.c
// Function: Compile_call
int Compile_call(Buffer *buf, ASTNode *callable, ASTNode *args,
                 word stack_index, Env *varenv, Env *labels) {
  if (AST_is_symbol(callable)) {
    if (AST_symbol_matches(callable, "labelcall")) {
      ASTNode *label = operand1(args);
      assert(AST_is_symbol(label));
      ASTNode *call_args = AST_pair_cdr(args);
      word nargs = list_length(call_args);

      return Compile_labelcall(buf, label, call_args, stack_index - kWordSize,
                               varenv, labels, nargs, stack_index + kWordSize);
    }
    if (AST_symbol_matches(callable, "let")) {
      return Compile_let(buf, operand1(args), operand2(args), stack_index,
                         varenv, varenv, labels);
    }
    if (AST_symbol_matches(callable, "if")) {
      return Compile_if(buf, operand1(args), operand2(args), operand3(args),
                        stack_index, varenv, labels);
    }
    if (AST_symbol_matches(callable, "cons")) {
      return Compile_cons(buf, operand1(args), operand2(args), stack_index,
                          varenv, labels);
    }
    if (AST_symbol_matches(callable, "car")) {
      _(Compile_expr(buf, operand1(args), stack_index, varenv, labels));
      Emit_load_reg_indirect(buf, kRax, Ind(kRax, kCarOffset - kPairTag));
      return 0;
    }
    if (AST_symbol_matches(callable, "cdr")) {
      _(Compile_expr(buf, operand1(args), stack_index, varenv, labels));
      Emit_load_reg_indirect(buf, kRax, Ind(kRax, kCdrOffset - kPairTag));
      return 0;
    }
    if (AST_symbol_matches(callable, "add1")) {
      _(Compile_expr(buf, operand1(args), stack_index, varenv, labels));
      Emit_add_reg_imm32(buf, kRax, Object_encode_integer(1));
      return 0;
    }
    if (AST_symbol_matches(callable, "sub1")) {
      _(Compile_expr(buf, operand1(args), stack_index, varenv, labels));
      Emit_sub_reg_imm32(buf, kRax, Object_encode_integer(1));
      return 0;
    }
    if (AST_symbol_matches(callable, "integer->char")) {
      _(Compile_expr(buf, operand1(args), stack_index, varenv, labels));
      Emit_shl_reg_imm8(buf, kRax, kCharShift - kIntegerShift);
      Emit_or_reg_imm8(buf, kRax, kCharTag);
      return 0;
    }
    if (AST_symbol_matches(callable, "char->integer")) {
      _(Compile_expr(buf, operand1(args), stack_index, varenv, labels));
      Emit_shr_reg_imm8(buf, kRax, kCharShift - kIntegerShift);
      return 0;
    }
    if (AST_symbol_matches(callable, "nil?")) {
      _(Compile_expr(buf, operand1(args), stack_index, varenv, labels));
      Emit_cmp_reg_imm32(buf, kRax, Object_nil());
      Emit_mov_reg_imm32(buf, kRax, 0);
      Emit_setcc_imm8(buf, kEqual, kAl);
      Emit_shl_reg_imm8(buf, kRax, kBoolShift);
      Emit_or_reg_imm8(buf, kRax, kBoolTag);
      return 0;
    }
    if (AST_symbol_matches(callable, "zero?")) {
      _(Compile_expr(buf, operand1(args), stack_index, varenv, labels));
      Compile_compare_imm32(buf, Object_encode_integer(0));
      return 0;
    }
    if (AST_symbol_matches(callable, "not")) {
      _(Compile_expr(buf, operand1(args), stack_index, varenv, labels));
      Compile_compare_imm32(buf, Object_false());
      return 0;
    }
    if (AST_symbol_matches(callable, "integer?")) {
      _(Compile_expr(buf, operand1(args), stack_index, varenv, labels));
      Emit_and_reg_imm8(buf, kRax, kIntegerTagMask);
      Compile_compare_imm32(buf, kIntegerTag);
      return 0;
    }
    if (AST_symbol_matches(callable, "boolean?")) {
      _(Compile_expr(buf, operand1(args), stack_index, varenv, labels));
      Emit_and_reg_imm8(buf, kRax, kImmediateTagMask);
      Compile_compare_imm32(buf, kBoolTag);
      return 0;
    }
    if (AST_symbol_matches(callable, "+")) {
      _(Compile_expr(buf, operand2(args), stack_index, varenv, labels));
      Emit_store_reg_indirect(buf, Ind(kRsp, stack_index), kRax);
      _(Compile_expr(buf, operand1(args), stack_index - kWordSize, varenv,
                     labels));
      Emit_add_reg_indirect(buf, kRax, Ind(kRsp, stack_index));
      return 0;
    }
    if (AST_symbol_matches(callable, "-")) {
      _(Compile_expr(buf, operand2(args), stack_index, varenv, labels));
      Emit_store_reg_indirect(buf, Ind(kRsp, stack_index), kRax);
      _(Compile_expr(buf, operand1(args), stack_index - kWordSize, varenv,
                     labels));
      Emit_sub_reg_indirect(buf, kRax, Ind(kRsp, stack_index));
      return 0;
    }
    if (AST_symbol_matches(callable, "*")) {
      _(Compile_expr(buf, operand2(args), stack_index, varenv, labels));
      // Remove the tag so that the result is still only tagged with 0b00
      // instead of 0b0000
      Emit_shr_reg_imm8(buf, kRax, kIntegerShift);
      Emit_store_reg_indirect(buf, Ind(kRsp, stack_index), kRax);
      _(Compile_expr(buf, operand1(args), stack_index - kWordSize, varenv,
                     labels));
      Emit_mul_reg_indirect(buf, Ind(kRsp, stack_index));
      return 0;
    }
    if (AST_symbol_matches(callable, "=")) {
      _(Compile_expr(buf, operand2(args), stack_index, varenv, labels));
      Emit_store_reg_indirect(buf, Ind(kRsp, stack_index), kRax);
      _(Compile_expr(buf, operand1(args), stack_index - kWordSize, varenv,
                     labels));
      Emit_cmp_reg_indirect(buf, kRax, Ind(kRsp, stack_index));
      Emit_mov_reg_imm32(buf, kRax, 0);
      Emit_setcc_imm8(buf, kEqual, kAl);
      Emit_shl_reg_imm8(buf, kRax, kBoolShift);
      Emit_or_reg_imm8(buf, kRax, kBoolTag);
      return 0;
    }
    if (AST_symbol_matches(callable, "<")) {
      _(Compile_expr(buf, operand2(args), stack_index, varenv, labels));
      Emit_store_reg_indirect(buf, Ind(kRsp, stack_index), kRax);
      _(Compile_expr(buf, operand1(args), stack_index - kWordSize, varenv,
                     labels));
      Emit_cmp_reg_indirect(buf, kRax, Ind(kRsp, stack_index));
      Emit_mov_reg_imm32(buf, kRax, 0);
      Emit_setcc_imm8(buf, kLess, kAl);
      Emit_shl_reg_imm8(buf, kRax, kBoolShift);
      Emit_or_reg_imm8(buf, kRax, kBoolTag);
      return 0;
    }
  }
  assert(0 && "unexpected call type");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x280, %rsp            # imm = 0x280
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq %r9, -0x38(%rbp)
movq -0x18(%rbp), %rdi
callq 0x1a90
testb $0x1, %al
jne 0x2c55
jmp 0x3b3f
movq -0x18(%rbp), %rdi
leaq 0x11cf9(%rip), %rsi     # 0x14959
callq 0x1ad0
testb $0x1, %al
jne 0x2c6e
jmp 0x2d03
movq -0x20(%rbp), %rdi
callq 0x2970
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rdi
callq 0x1a90
testb $0x1, %al
jne 0x2c8a
jmp 0x2c8c
jmp 0x2cab
leaq 0x11cd0(%rip), %rdi     # 0x14963
leaq 0x11a09(%rip), %rsi     # 0x146a3
movl $0x2f7, %edx            # imm = 0x2F7
leaq 0x11cd2(%rip), %rcx     # 0x14978
callq 0x1090
movq -0x20(%rbp), %rdi
callq 0x18b0
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdi
callq 0x3e10
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq -0x28(%rbp), %rcx
subq $0x8, %rcx
movq -0x30(%rbp), %r8
movq -0x38(%rbp), %r9
movq -0x50(%rbp), %r10
movq -0x28(%rbp), %rax
addq $0x8, %rax
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x3e90
movl %eax, -0x4(%rbp)
jmp 0x3b5e
movq -0x18(%rbp), %rdi
leaq 0x12792(%rip), %rsi     # 0x154a0
callq 0x1ad0
testb $0x1, %al
jne 0x2d19
jmp 0x2d6f
movq -0x10(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2970
movq %rax, -0x110(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2990
movq -0x118(%rbp), %rdi
movq -0x110(%rbp), %rsi
movq %rax, %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x30(%rbp), %r9
movq -0x38(%rbp), %rax
movq %rax, (%rsp)
callq 0x4020
movl %eax, -0x4(%rbp)
jmp 0x3b5e
movq -0x18(%rbp), %rdi
leaq 0x1278a(%rip), %rsi     # 0x15504
callq 0x1ad0
testb $0x1, %al
jne 0x2d85
jmp 0x2dee
movq -0x10(%rbp), %rax
movq %rax, -0x130(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2970
movq %rax, -0x128(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2990
movq %rax, -0x120(%rbp)
movq -0x20(%rbp), %rdi
callq 0x29c0
movq -0x130(%rbp), %rdi
movq -0x128(%rbp), %rsi
movq -0x120(%rbp), %rdx
movq %rax, %rcx
movq -0x28(%rbp), %r8
movq -0x30(%rbp), %r9
movq -0x38(%rbp), %rax
movq %rax, (%rsp)
callq 0x3b70
movl %eax, -0x4(%rbp)
jmp 0x3b5e
movq -0x18(%rbp), %rdi
leaq 0x1273b(%rip), %rsi     # 0x15534
callq 0x1ad0
testb $0x1, %al
jne 0x2e04
jmp 0x2e54
movq -0x10(%rbp), %rax
movq %rax, -0x140(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2970
movq %rax, -0x138(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2990
movq -0x140(%rbp), %rdi
movq -0x138(%rbp), %rsi
movq %rax, %rdx
movq -0x28(%rbp), %rax
movl %eax, %ecx
movq -0x30(%rbp), %r8
movq -0x38(%rbp), %r9
callq 0x3c90
movl %eax, -0x4(%rbp)
jmp 0x3b5e
movq -0x18(%rbp), %rdi
leaq 0x126e2(%rip), %rsi     # 0x15541
callq 0x1ad0
testb $0x1, %al
jne 0x2e6d
jmp 0x2eed
jmp 0x2e6f
movq -0x10(%rbp), %rax
movq %rax, -0x148(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2970
movq -0x148(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0x54(%rbp)
cmpl $0x0, -0x54(%rbp)
je 0x2eb2
movl -0x54(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x2eb4
movq -0x10(%rbp), %rax
movq %rax, -0x150(%rbp)
xorl %edi, %edi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x1f60
movq -0x150(%rbp), %rdi
movq %rax, -0x5c(%rbp)
movq -0x5c(%rbp), %rdx
xorl %esi, %esi
callq 0x26a0
movl $0x0, -0x4(%rbp)
jmp 0x3b5e
movq -0x18(%rbp), %rdi
leaq 0x12655(%rip), %rsi     # 0x1554d
callq 0x1ad0
testb $0x1, %al
jne 0x2f06
jmp 0x2f86
jmp 0x2f08
movq -0x10(%rbp), %rax
movq %rax, -0x158(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2970
movq -0x158(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0x60(%rbp)
cmpl $0x0, -0x60(%rbp)
je 0x2f4b
movl -0x60(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x2f4d
movq -0x10(%rbp), %rax
movq %rax, -0x160(%rbp)
xorl %edi, %edi
movl $0x7, %esi
callq 0x1f60
movq -0x160(%rbp), %rdi
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rdx
xorl %esi, %esi
callq 0x26a0
movl $0x0, -0x4(%rbp)
jmp 0x3b5e
movq -0x18(%rbp), %rdi
leaq 0x1203b(%rip), %rsi     # 0x14fcc
callq 0x1ad0
testb $0x1, %al
jne 0x2f9c
jmp 0x3014
jmp 0x2f9e
movq -0x10(%rbp), %rax
movq %rax, -0x168(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2970
movq -0x168(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0x6c(%rbp)
cmpl $0x0, -0x6c(%rbp)
je 0x2fe1
movl -0x6c(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x2fe3
movq -0x10(%rbp), %rax
movq %rax, -0x170(%rbp)
movl $0x1, %edi
callq 0x1290
movq -0x170(%rbp), %rdi
movl %eax, %edx
xorl %esi, %esi
callq 0x2080
movl $0x0, -0x4(%rbp)
jmp 0x3b5e
movq -0x18(%rbp), %rdi
leaq 0x11fda(%rip), %rsi     # 0x14ff9
callq 0x1ad0
testb $0x1, %al
jne 0x302a
jmp 0x30a2
jmp 0x302c
movq -0x10(%rbp), %rax
movq %rax, -0x178(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2970
movq -0x178(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0x70(%rbp)
cmpl $0x0, -0x70(%rbp)
je 0x306f
movl -0x70(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x3071
movq -0x10(%rbp), %rax
movq %rax, -0x180(%rbp)
movl $0x1, %edi
callq 0x1290
movq -0x180(%rbp), %rdi
movl %eax, %edx
xorl %esi, %esi
callq 0x2100
movl $0x0, -0x4(%rbp)
jmp 0x3b5e
movq -0x18(%rbp), %rdi
leaq 0x11910(%rip), %rsi     # 0x149bd
callq 0x1ad0
testb $0x1, %al
jne 0x30b8
jmp 0x312b
jmp 0x30ba
movq -0x10(%rbp), %rax
movq %rax, -0x188(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2970
movq -0x188(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0x74(%rbp)
cmpl $0x0, -0x74(%rbp)
je 0x30fd
movl -0x74(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x30ff
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x6, %edx
callq 0x2180
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0xf, %edx
callq 0x2260
movl $0x0, -0x4(%rbp)
jmp 0x3b5e
movq -0x18(%rbp), %rdi
leaq 0x11895(%rip), %rsi     # 0x149cb
callq 0x1ad0
testb $0x1, %al
jne 0x3141
jmp 0x31a4
jmp 0x3143
movq -0x10(%rbp), %rax
movq %rax, -0x190(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2970
movq -0x190(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0x78(%rbp)
cmpl $0x0, -0x78(%rbp)
je 0x3186
movl -0x78(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x3188
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x6, %edx
callq 0x21f0
movl $0x0, -0x4(%rbp)
jmp 0x3b5e
movq -0x18(%rbp), %rdi
leaq 0x1182a(%rip), %rsi     # 0x149d9
callq 0x1ad0
testb $0x1, %al
jne 0x31bd
jmp 0x326d
jmp 0x31bf
movq -0x10(%rbp), %rax
movq %rax, -0x198(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2970
movq -0x198(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0x7c(%rbp)
cmpl $0x0, -0x7c(%rbp)
je 0x3202
movl -0x7c(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x3204
movq -0x10(%rbp), %rax
movq %rax, -0x1a0(%rbp)
callq 0x1420
movq -0x1a0(%rbp), %rdi
movl %eax, %edx
xorl %esi, %esi
callq 0x2340
movq -0x10(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x1ff0
movq -0x10(%rbp), %rdi
movl $0x4, %esi
xorl %edx, %edx
callq 0x23c0
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x7, %edx
callq 0x2180
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x1f, %edx
callq 0x2260
movl $0x0, -0x4(%rbp)
jmp 0x3b5e
movq -0x18(%rbp), %rdi
leaq 0x11766(%rip), %rsi     # 0x149de
callq 0x1ad0
testb $0x1, %al
jne 0x3283
jmp 0x32f8
jmp 0x3285
movq -0x10(%rbp), %rax
movq %rax, -0x1a8(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2970
movq -0x1a8(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0x80(%rbp)
cmpl $0x0, -0x80(%rbp)
je 0x32c8
movl -0x80(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x32ca
movq -0x10(%rbp), %rax
movq %rax, -0x1b0(%rbp)
xorl %eax, %eax
movl %eax, %edi
callq 0x1290
movq -0x1b0(%rbp), %rdi
movl %eax, %esi
callq 0x4210
movl $0x0, -0x4(%rbp)
jmp 0x3b5e
movq -0x18(%rbp), %rdi
leaq 0x116e1(%rip), %rsi     # 0x149e4
callq 0x1ad0
testb $0x1, %al
jne 0x330e
jmp 0x3388
jmp 0x3310
movq -0x10(%rbp), %rax
movq %rax, -0x1b8(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2970
movq -0x1b8(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0x84(%rbp)
cmpl $0x0, -0x84(%rbp)
je 0x335c
movl -0x84(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x335e
movq -0x10(%rbp), %rax
movq %rax, -0x1c0(%rbp)
callq 0x1410
movq -0x1c0(%rbp), %rdi
movl %eax, %esi
callq 0x4210
movl $0x0, -0x4(%rbp)
jmp 0x3b5e
movq -0x18(%rbp), %rdi
leaq 0x11655(%rip), %rsi     # 0x149e8
callq 0x1ad0
testb $0x1, %al
jne 0x339e
jmp 0x3415
jmp 0x33a0
movq -0x10(%rbp), %rax
movq %rax, -0x1c8(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2970
movq -0x1c8(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0x88(%rbp)
cmpl $0x0, -0x88(%rbp)
je 0x33ec
movl -0x88(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x33ee
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x3, %edx
callq 0x22d0
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x4210
movl $0x0, -0x4(%rbp)
jmp 0x3b5e
movq -0x18(%rbp), %rdi
leaq 0x115d1(%rip), %rsi     # 0x149f1
callq 0x1ad0
testb $0x1, %al
jne 0x342b
jmp 0x34a5
jmp 0x342d
movq -0x10(%rbp), %rax
movq %rax, -0x1d0(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2970
movq -0x1d0(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0x8c(%rbp)
cmpl $0x0, -0x8c(%rbp)
je 0x3479
movl -0x8c(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x347b
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x3f, %edx
callq 0x22d0
movq -0x10(%rbp), %rdi
movl $0x1f, %esi
callq 0x4210
movl $0x0, -0x4(%rbp)
jmp 0x3b5e
movq -0x18(%rbp), %rdi
leaq 0x1154a(%rip), %rsi     # 0x149fa
callq 0x1ad0
testb $0x1, %al
jne 0x34be
jmp 0x35dc
jmp 0x34c0
movq -0x10(%rbp), %rax
movq %rax, -0x1d8(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2990
movq -0x1d8(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0x90(%rbp)
cmpl $0x0, -0x90(%rbp)
je 0x350c
movl -0x90(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x350e
movq -0x10(%rbp), %rax
movq %rax, -0x1e0(%rbp)
movq -0x28(%rbp), %rax
movl $0x4, %edi
movsbl %al, %esi
callq 0x1f60
movq -0x1e0(%rbp), %rdi
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rsi
xorl %edx, %edx
callq 0x2510
movq -0x10(%rbp), %rax
movq %rax, -0x1e8(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2970
movq -0x1e8(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
subq $0x8, %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
je 0x3596
movl -0x9c(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x3598
movq -0x10(%rbp), %rax
movq %rax, -0x1f0(%rbp)
movq -0x28(%rbp), %rax
movl $0x4, %edi
movsbl %al, %esi
callq 0x1f60
movq -0x1f0(%rbp), %rdi
movq %rax, -0xa4(%rbp)
movq -0xa4(%rbp), %rdx
xorl %esi, %esi
callq 0x2560
movl $0x0, -0x4(%rbp)
jmp 0x3b5e
movq -0x18(%rbp), %rdi
leaq 0x133be(%rip), %rsi     # 0x169a5
callq 0x1ad0
testb $0x1, %al
jne 0x35f5
jmp 0x3713
jmp 0x35f7
movq -0x10(%rbp), %rax
movq %rax, -0x1f8(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2990
movq -0x1f8(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0xa8(%rbp)
cmpl $0x0, -0xa8(%rbp)
je 0x3643
movl -0xa8(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x3645
movq -0x10(%rbp), %rax
movq %rax, -0x200(%rbp)
movq -0x28(%rbp), %rax
movl $0x4, %edi
movsbl %al, %esi
callq 0x1f60
movq -0x200(%rbp), %rdi
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rsi
xorl %edx, %edx
callq 0x2510
movq -0x10(%rbp), %rax
movq %rax, -0x208(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2970
movq -0x208(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
subq $0x8, %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0xb4(%rbp)
cmpl $0x0, -0xb4(%rbp)
je 0x36cd
movl -0xb4(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x36cf
movq -0x10(%rbp), %rax
movq %rax, -0x210(%rbp)
movq -0x28(%rbp), %rax
movl $0x4, %edi
movsbl %al, %esi
callq 0x1f60
movq -0x210(%rbp), %rdi
movq %rax, -0xbc(%rbp)
movq -0xbc(%rbp), %rdx
xorl %esi, %esi
callq 0x25b0
movl $0x0, -0x4(%rbp)
jmp 0x3b5e
movq -0x18(%rbp), %rdi
leaq 0x112de(%rip), %rsi     # 0x149fc
callq 0x1ad0
testb $0x1, %al
jne 0x372c
jmp 0x3858
jmp 0x372e
movq -0x10(%rbp), %rax
movq %rax, -0x218(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2990
movq -0x218(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0xc0(%rbp)
cmpl $0x0, -0xc0(%rbp)
je 0x377a
movl -0xc0(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x377c
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x2, %edx
callq 0x21f0
movq -0x10(%rbp), %rax
movq %rax, -0x220(%rbp)
movq -0x28(%rbp), %rax
movl $0x4, %edi
movsbl %al, %esi
callq 0x1f60
movq -0x220(%rbp), %rdi
movq %rax, -0xc8(%rbp)
movq -0xc8(%rbp), %rsi
xorl %edx, %edx
callq 0x2510
movq -0x10(%rbp), %rax
movq %rax, -0x228(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2970
movq -0x228(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
subq $0x8, %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0xcc(%rbp)
cmpl $0x0, -0xcc(%rbp)
je 0x3814
movl -0xcc(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x3816
movq -0x10(%rbp), %rax
movq %rax, -0x230(%rbp)
movq -0x28(%rbp), %rax
movl $0x4, %edi
movsbl %al, %esi
callq 0x1f60
movq -0x230(%rbp), %rdi
movq %rax, -0xd4(%rbp)
movq -0xd4(%rbp), %rsi
callq 0x2600
movl $0x0, -0x4(%rbp)
jmp 0x3b5e
movq -0x18(%rbp), %rdi
leaq 0x1119b(%rip), %rsi     # 0x149fe
callq 0x1ad0
testb $0x1, %al
jne 0x3871
jmp 0x39cc
jmp 0x3873
movq -0x10(%rbp), %rax
movq %rax, -0x238(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2990
movq -0x238(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0xd8(%rbp)
cmpl $0x0, -0xd8(%rbp)
je 0x38bf
movl -0xd8(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x38c1
movq -0x10(%rbp), %rax
movq %rax, -0x240(%rbp)
movq -0x28(%rbp), %rax
movl $0x4, %edi
movsbl %al, %esi
callq 0x1f60
movq -0x240(%rbp), %rdi
movq %rax, -0xe0(%rbp)
movq -0xe0(%rbp), %rsi
xorl %edx, %edx
callq 0x2510
movq -0x10(%rbp), %rax
movq %rax, -0x248(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2970
movq -0x248(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
subq $0x8, %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0xe4(%rbp)
cmpl $0x0, -0xe4(%rbp)
je 0x3949
movl -0xe4(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x394b
movq -0x10(%rbp), %rax
movq %rax, -0x250(%rbp)
movq -0x28(%rbp), %rax
movl $0x4, %edi
movsbl %al, %esi
callq 0x1f60
movq -0x250(%rbp), %rdi
movq %rax, -0xec(%rbp)
movq -0xec(%rbp), %rdx
xorl %esi, %esi
callq 0x2650
movq -0x10(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x1ff0
movq -0x10(%rbp), %rdi
movl $0x4, %esi
xorl %edx, %edx
callq 0x23c0
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x7, %edx
callq 0x2180
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x1f, %edx
callq 0x2260
movl $0x0, -0x4(%rbp)
jmp 0x3b5e
movq -0x18(%rbp), %rdi
leaq 0x11029(%rip), %rsi     # 0x14a00
callq 0x1ad0
testb $0x1, %al
jne 0x39e5
jmp 0x3b3d
jmp 0x39e7
movq -0x10(%rbp), %rax
movq %rax, -0x258(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2990
movq -0x258(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0xf0(%rbp)
cmpl $0x0, -0xf0(%rbp)
je 0x3a33
movl -0xf0(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x3a35
movq -0x10(%rbp), %rax
movq %rax, -0x260(%rbp)
movq -0x28(%rbp), %rax
movl $0x4, %edi
movsbl %al, %esi
callq 0x1f60
movq -0x260(%rbp), %rdi
movq %rax, -0xf8(%rbp)
movq -0xf8(%rbp), %rsi
xorl %edx, %edx
callq 0x2510
movq -0x10(%rbp), %rax
movq %rax, -0x268(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2970
movq -0x268(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rdx
subq $0x8, %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x29f0
movl %eax, -0xfc(%rbp)
cmpl $0x0, -0xfc(%rbp)
je 0x3abd
movl -0xfc(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3b5e
jmp 0x3abf
movq -0x10(%rbp), %rax
movq %rax, -0x270(%rbp)
movq -0x28(%rbp), %rax
movl $0x4, %edi
movsbl %al, %esi
callq 0x1f60
movq -0x270(%rbp), %rdi
movq %rax, -0x104(%rbp)
movq -0x104(%rbp), %rdx
xorl %esi, %esi
callq 0x2650
movq -0x10(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x1ff0
movq -0x10(%rbp), %rdi
movl $0xc, %esi
xorl %edx, %edx
callq 0x23c0
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x7, %edx
callq 0x2180
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x1f, %edx
callq 0x2260
movl $0x0, -0x4(%rbp)
jmp 0x3b5e
jmp 0x3b3f
leaq 0x10ebc(%rip), %rdi     # 0x14a02
leaq 0x10b56(%rip), %rsi     # 0x146a3
movl $0x37c, %edx            # imm = 0x37C
leaq 0x10e1f(%rip), %rcx     # 0x14978
callq 0x1090
movl -0x4(%rbp), %eax
addq $0x280, %rsp            # imm = 0x280
popq %rbp
retq
nopw (%rax,%rax)