// File: /workspace/github_cpp_makefile_star2_O3/baziotis[P]minijava-cpp/typecheck.cpp
// Function: MainTypeCheckVisitor::visit(Method*, char const*)
void MainTypeCheckVisitor::visit(Method *method, const char *class_name) {
    LOG_SCOPE;
    debug_print("MainTypeCheck::Method %s\n", method->id);
    this->curr_method = method;

    __expr_context.method = method;

    bool is_main_method = method->id == main_method_string;

    cgen_start_method(method, class_name, is_main_method);

    if (is_main_method && type_transitively_extends_Main(this, class_name))
    {
        typecheck_error(method->loc, "In type: `", class_name,
                        "` you can't name a method `main` because "
                        "the type transitively extends `Main` class.");
    }

    for (int i = 0; i < __expr_context.nesting_level; ++i) {
      for (int j = 0; j < __expr_context.if_bufs[i].len; ++j) {
        __expr_context.if_bufs[i][j].assigned = false;
      }
      for (int j = 0; j < __expr_context.else_bufs[i].len; ++j) {
        __expr_context.else_bufs[i][j].assigned = false;
      }
    }
    __expr_context.nesting_level = 0;


    for (Statement *stmt : method->stmts) {
        stmt->accept(this);
    }
    // An undefined return expression may actually end up here.
    // Check parse.cpp
    // A null expression may also come here because of the `main()` method.
    if (!is_main_method && !method->ret_expr->is_undefined()) {
        assert(method->ret_expr);
        Type *ret_type = method->ret_expr->accept(this);
        if (ret_type->kind != TY::UNDEFINED) {
          assert(ret_type);
          assert(method->ret_type);
          llvalue_t ret_val = __expr_context.llval;
          if (!compatible_types(method->ret_type, ret_type)) {
              location_t loc_here = method->ret_expr->loc;
              typecheck_error(loc_here, "The type: `", ret_type->name(),
                              "` of the return expression does not match the ",
                              "return type: `", method->ret_type->name(),
                              "` of method: `", method->id, "`");
          } else {
              llvm_ret(ret_type, ret_val);
          }
        }
    }
    this->curr_method = NULL;

    cgen_end_method(is_main_method);

    // Free arena for objects of function lifetime
    deallocate(MEM::FUNC);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x2f(%rsp), %rdi
callq 0x34c8
movq (%r14), %rsi
leaq 0x947e(%rip), %rdi      # 0x13937
xorl %eax, %eax
callq 0x3539
movq %r14, 0x78(%rbx)
leaq 0x104ed(%rip), %rbp     # 0x1a9b8
movq %r14, 0x28(%rbp)
movq (%r14), %r13
leaq 0x1056f(%rip), %rax     # 0x1aa48
movq (%rax), %r12
xorl %edx, %edx
cmpq %r12, %r13
sete %dl
movq %r14, %rdi
movq %r15, %rsi
callq 0x5994
cmpq %r12, %r13
jne 0xa59c
movq 0x30(%rbx), %rax
testq %rax, %rax
je 0xa53f
testq %r15, %r15
je 0xb27a
imull $0x5f5e505, %r15d, %ecx # imm = 0x5F5E505
imulq %rax, %rcx
shrq $0x20, %rcx
movq 0x38(%rbx), %rdx
xorl %edi, %edi
movq %rcx, %rsi
movq (%rdx,%rsi,8), %r8
cmpq %r15, %r8
je 0xa55e
testq %r8, %r8
je 0xa53f
incq %rsi
cmpq %rax, %rsi
cmoveq %rdi, %rsi
cmpq %rcx, %rsi
jne 0xa522
leaq 0x96cb(%rip), %rdi      # 0x13c11
leaq 0x8eb1(%rip), %rsi      # 0x133fe
leaq 0xa4b7(%rip), %rcx      # 0x14a0b
movl $0x30f, %edx            # imm = 0x30F
callq 0x20b0
movq 0x40(%rbx), %rax
movq (%rax,%rsi,8), %rax
testq %rax, %rax
je 0xa53f
movq 0x20(%rbx), %rcx
movq 0x8(%rcx), %rcx
movq 0x78(%rax), %rax
testq %rax, %rax
je 0xa59c
cmpq %rcx, 0x8(%rax)
jne 0xa573
movl 0x50(%r14), %edi
leaq 0x93c4(%rip), %rsi      # 0x13951
leaq 0x93c8(%rip), %rcx      # 0x1395c
movq %r15, %rdx
callq 0x998c
movq %r13, 0x40(%rsp)
movslq 0x30(%rbp), %rax
testq %rax, %rax
jle 0xb086
movq 0x50(%rbp), %rcx
movq 0x68(%rbp), %rdx
xorl %esi, %esi
movl $0x278, %edi            # imm = 0x278
movdqa 0x8dfa(%rip), %xmm8     # 0x133c0
pcmpeqd %xmm9, %xmm9
leaq (%rsi,%rsi,2), %r8
movq 0x8(%rcx,%r8,8), %r10
testq %r10, %r10
je 0xab1e
leaq (%rcx,%r8,8), %r11
leaq 0xf(%r10), %r9
andq $-0x10, %r9
decq %r10
movq %r10, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
movdqa %xmm0, 0x30(%rsp)
movq 0x10(%r11), %r10
addq %rdi, %r10
movdqa 0x8da4(%rip), %xmm12    # 0x133b0
movdqa 0x8d8b(%rip), %xmm13    # 0x133a0
movdqa 0x8d72(%rip), %xmm14    # 0x13390
movdqa 0x8d59(%rip), %xmm15    # 0x13380
movdqa 0x8d41(%rip), %xmm3     # 0x13370
movdqa 0x8d29(%rip), %xmm2     # 0x13360
movdqa 0x8d11(%rip), %xmm1     # 0x13350
movdqa 0x8cf9(%rip), %xmm0     # 0x13340
movdqa 0x30(%rsp), %xmm11
pxor %xmm8, %xmm11
movdqa %xmm12, %xmm5
pxor %xmm8, %xmm5
movdqa %xmm5, %xmm7
pcmpgtd %xmm11, %xmm7
pshufd $0xa0, %xmm7, %xmm6     # xmm6 = xmm7[0,0,2,2]
pshuflw $0xe8, %xmm6, %xmm4     # xmm4 = xmm6[0,2,2,3,4,5,6,7]
pcmpeqd %xmm11, %xmm5
pshufd $0xf5, %xmm5, %xmm5     # xmm5 = xmm5[1,1,3,3]
pshuflw $0xe8, %xmm5, %xmm10    # xmm10 = xmm5[0,2,2,3,4,5,6,7]
pand %xmm4, %xmm10
pshufd $0xf5, %xmm7, %xmm7     # xmm7 = xmm7[1,1,3,3]
pshuflw $0xe8, %xmm7, %xmm4     # xmm4 = xmm7[0,2,2,3,4,5,6,7]
por %xmm10, %xmm4
pxor %xmm9, %xmm4
packssdw %xmm4, %xmm4
movd %xmm4, %r11d
testb $0x1, %r11b
je 0xa6b0
movb $0x0, -0x258(%r10)
pand %xmm6, %xmm5
por %xmm7, %xmm5
packssdw %xmm5, %xmm5
pxor %xmm9, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
movd %xmm5, %r11d
shrl $0x8, %r11d
testb $0x1, %r11b
je 0xa6e0
movb $0x0, -0x230(%r10)
movdqa %xmm13, %xmm4
pxor %xmm8, %xmm4
movdqa %xmm4, %xmm7
pcmpgtd %xmm11, %xmm7
pshufd $0xa0, %xmm7, %xmm5     # xmm5 = xmm7[0,0,2,2]
pcmpeqd %xmm11, %xmm4
pshufd $0xf5, %xmm4, %xmm6     # xmm6 = xmm4[1,1,3,3]
movdqa %xmm6, %xmm4
pand %xmm5, %xmm4
pshufd $0xf5, %xmm7, %xmm7     # xmm7 = xmm7[1,1,3,3]
por %xmm7, %xmm4
packssdw %xmm4, %xmm4
pxor %xmm9, %xmm4
packssdw %xmm4, %xmm4
packsswb %xmm4, %xmm4
movd %xmm4, %r11d
shrl $0x10, %r11d
testb $0x1, %r11b
je 0xa73b
movb $0x0, -0x208(%r10)
pshufhw $0x84, %xmm5, %xmm4     # xmm4 = xmm5[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm6, %xmm5     # xmm5 = xmm6[0,1,2,3,4,5,4,6]
pand %xmm4, %xmm5
pshufhw $0x84, %xmm7, %xmm4     # xmm4 = xmm7[0,1,2,3,4,5,4,6]
por %xmm5, %xmm4
pxor %xmm9, %xmm4
packssdw %xmm4, %xmm4
packsswb %xmm4, %xmm4
movd %xmm4, %r11d
shrl $0x18, %r11d
testb $0x1, %r11b
je 0xa776
movb $0x0, -0x1e0(%r10)
movdqa %xmm14, %xmm4
pxor %xmm8, %xmm4
movdqa %xmm4, %xmm7
pcmpgtd %xmm11, %xmm7
pshufd $0xa0, %xmm7, %xmm6     # xmm6 = xmm7[0,0,2,2]
pshuflw $0xe8, %xmm6, %xmm10    # xmm10 = xmm6[0,2,2,3,4,5,6,7]
pcmpeqd %xmm11, %xmm4
pshufd $0xf5, %xmm4, %xmm5     # xmm5 = xmm4[1,1,3,3]
pshuflw $0xe8, %xmm5, %xmm4     # xmm4 = xmm5[0,2,2,3,4,5,6,7]
pand %xmm10, %xmm4
pshufd $0xf5, %xmm7, %xmm7     # xmm7 = xmm7[1,1,3,3]
pshuflw $0xe8, %xmm7, %xmm10    # xmm10 = xmm7[0,2,2,3,4,5,6,7]
por %xmm4, %xmm10
pxor %xmm9, %xmm10
packssdw %xmm10, %xmm4
packsswb %xmm4, %xmm4
pextrw $0x2, %xmm4, %r11d
testb $0x1, %r11b
je 0xa7da
movb $0x0, -0x1b8(%r10)
pand %xmm6, %xmm5
por %xmm7, %xmm5
packssdw %xmm5, %xmm5
pxor %xmm9, %xmm5
packssdw %xmm5, %xmm4
packsswb %xmm4, %xmm4
pextrw $0x2, %xmm4, %r11d
shrl $0x8, %r11d
testb $0x1, %r11b
je 0xa80b
movb $0x0, -0x190(%r10)
movdqa %xmm15, %xmm4
pxor %xmm8, %xmm4
movdqa %xmm4, %xmm7
pcmpgtd %xmm11, %xmm7
pshufd $0xa0, %xmm7, %xmm5     # xmm5 = xmm7[0,0,2,2]
pcmpeqd %xmm11, %xmm4
pshufd $0xf5, %xmm4, %xmm6     # xmm6 = xmm4[1,1,3,3]
movdqa %xmm6, %xmm4
pand %xmm5, %xmm4
pshufd $0xf5, %xmm7, %xmm7     # xmm7 = xmm7[1,1,3,3]
por %xmm7, %xmm4
packssdw %xmm4, %xmm4
pxor %xmm9, %xmm4
packssdw %xmm4, %xmm4
packsswb %xmm4, %xmm4
pextrw $0x3, %xmm4, %r11d
testb $0x1, %r11b
je 0xa863
movb $0x0, -0x168(%r10)
pshufhw $0x84, %xmm5, %xmm4     # xmm4 = xmm5[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm6, %xmm5     # xmm5 = xmm6[0,1,2,3,4,5,4,6]
pand %xmm4, %xmm5
pshufhw $0x84, %xmm7, %xmm4     # xmm4 = xmm7[0,1,2,3,4,5,4,6]
por %xmm5, %xmm4
pxor %xmm9, %xmm4
packssdw %xmm4, %xmm4
packsswb %xmm4, %xmm4
pextrw $0x3, %xmm4, %r11d
shrl $0x8, %r11d
testb $0x1, %r11b
je 0xa89f
movb $0x0, -0x140(%r10)
movdqa %xmm3, %xmm4
pxor %xmm8, %xmm4
movdqa %xmm4, %xmm7
pcmpgtd %xmm11, %xmm7
pshufd $0xa0, %xmm7, %xmm6     # xmm6 = xmm7[0,0,2,2]
pshuflw $0xe8, %xmm6, %xmm10    # xmm10 = xmm6[0,2,2,3,4,5,6,7]
pcmpeqd %xmm11, %xmm4
pshufd $0xf5, %xmm4, %xmm5     # xmm5 = xmm4[1,1,3,3]
pshuflw $0xe8, %xmm5, %xmm4     # xmm4 = xmm5[0,2,2,3,4,5,6,7]
pand %xmm10, %xmm4
pshufd $0xf5, %xmm7, %xmm7     # xmm7 = xmm7[1,1,3,3]
pshuflw $0xe8, %xmm7, %xmm10    # xmm10 = xmm7[0,2,2,3,4,5,6,7]
por %xmm4, %xmm10
pxor %xmm9, %xmm10
packssdw %xmm10, %xmm10
packsswb %xmm10, %xmm4
pextrw $0x4, %xmm4, %r11d
testb $0x1, %r11b
je 0xa903
movb $0x0, -0x118(%r10)
pand %xmm6, %xmm5
por %xmm7, %xmm5
packssdw %xmm5, %xmm5
pxor %xmm9, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm4
pextrw $0x4, %xmm4, %r11d
shrl $0x8, %r11d
testb $0x1, %r11b
je 0xa934
movb $0x0, -0xf0(%r10)
movdqa %xmm2, %xmm4
pxor %xmm8, %xmm4
movdqa %xmm4, %xmm7
pcmpgtd %xmm11, %xmm7
pshufd $0xa0, %xmm7, %xmm5     # xmm5 = xmm7[0,0,2,2]
pcmpeqd %xmm11, %xmm4
pshufd $0xf5, %xmm4, %xmm6     # xmm6 = xmm4[1,1,3,3]
movdqa %xmm6, %xmm4
pand %xmm5, %xmm4
pshufd $0xf5, %xmm7, %xmm7     # xmm7 = xmm7[1,1,3,3]
por %xmm7, %xmm4
packssdw %xmm4, %xmm4
pxor %xmm9, %xmm4
packssdw %xmm4, %xmm4
packsswb %xmm4, %xmm4
pextrw $0x5, %xmm4, %r11d
testb $0x1, %r11b
je 0xa98b
movb $0x0, -0xc8(%r10)
pshufhw $0x84, %xmm5, %xmm4     # xmm4 = xmm5[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm6, %xmm5     # xmm5 = xmm6[0,1,2,3,4,5,4,6]
pand %xmm4, %xmm5
pshufhw $0x84, %xmm7, %xmm4     # xmm4 = xmm7[0,1,2,3,4,5,4,6]
por %xmm5, %xmm4
pxor %xmm9, %xmm4
packssdw %xmm4, %xmm4
packsswb %xmm4, %xmm4
pextrw $0x5, %xmm4, %r11d
shrl $0x8, %r11d
testb $0x1, %r11b
je 0xa9c7
movb $0x0, -0xa0(%r10)
movdqa %xmm1, %xmm4
pxor %xmm8, %xmm4
movdqa %xmm4, %xmm7
pcmpgtd %xmm11, %xmm7
pshufd $0xa0, %xmm7, %xmm6     # xmm6 = xmm7[0,0,2,2]
pshuflw $0xe8, %xmm6, %xmm10    # xmm10 = xmm6[0,2,2,3,4,5,6,7]
pcmpeqd %xmm11, %xmm4
pshufd $0xf5, %xmm4, %xmm5     # xmm5 = xmm4[1,1,3,3]
pshuflw $0xe8, %xmm5, %xmm4     # xmm4 = xmm5[0,2,2,3,4,5,6,7]
pand %xmm10, %xmm4
pshufd $0xf5, %xmm7, %xmm7     # xmm7 = xmm7[1,1,3,3]
pshuflw $0xe8, %xmm7, %xmm10    # xmm10 = xmm7[0,2,2,3,4,5,6,7]
por %xmm4, %xmm10
pxor %xmm9, %xmm10
packssdw %xmm10, %xmm4
packsswb %xmm4, %xmm4
pextrw $0x6, %xmm4, %r11d
testb $0x1, %r11b
je 0xaa27
movb $0x0, -0x78(%r10)
pand %xmm6, %xmm5
por %xmm7, %xmm5
packssdw %xmm5, %xmm5
pxor %xmm9, %xmm5
packssdw %xmm5, %xmm4
packsswb %xmm4, %xmm4
pextrw $0x6, %xmm4, %r11d
shrl $0x8, %r11d
testb $0x1, %r11b
je 0xaa55
movb $0x0, -0x50(%r10)
movdqa %xmm0, %xmm4
pxor %xmm8, %xmm4
movdqa %xmm4, %xmm7
pcmpgtd %xmm11, %xmm7
pshufd $0xa0, %xmm7, %xmm5     # xmm5 = xmm7[0,0,2,2]
pcmpeqd %xmm11, %xmm4
pshufd $0xf5, %xmm4, %xmm6     # xmm6 = xmm4[1,1,3,3]
movdqa %xmm6, %xmm4
pand %xmm5, %xmm4
pshufd $0xf5, %xmm7, %xmm7     # xmm7 = xmm7[1,1,3,3]
por %xmm7, %xmm4
packssdw %xmm4, %xmm4
pxor %xmm9, %xmm4
packssdw %xmm4, %xmm4
packsswb %xmm4, %xmm4
pextrw $0x7, %xmm4, %r11d
testb $0x1, %r11b
je 0xaaa9
movb $0x0, -0x28(%r10)
pshufhw $0x84, %xmm5, %xmm4     # xmm4 = xmm5[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm6, %xmm5     # xmm5 = xmm6[0,1,2,3,4,5,4,6]
pand %xmm4, %xmm5
pshufhw $0x84, %xmm7, %xmm4     # xmm4 = xmm7[0,1,2,3,4,5,4,6]
por %xmm5, %xmm4
pxor %xmm9, %xmm4
packssdw %xmm4, %xmm4
packsswb %xmm4, %xmm4
pextrw $0x7, %xmm4, %r11d
shrl $0x8, %r11d
testb $0x1, %r11b
je 0xaae1
movb $0x0, (%r10)
movdqa 0x88e7(%rip), %xmm4     # 0x133d0
paddq %xmm4, %xmm12
paddq %xmm4, %xmm13
paddq %xmm4, %xmm14
paddq %xmm4, %xmm15
paddq %xmm4, %xmm3
paddq %xmm4, %xmm2
paddq %xmm4, %xmm1
paddq %xmm4, %xmm0
addq $0x280, %r10            # imm = 0x280
addq $-0x10, %r9
jne 0xa647
movq 0x8(%rdx,%r8,8), %r9
testq %r9, %r9
je 0xb07a
leaq (%rdx,%r8,8), %r10
leaq 0xf(%r9), %r8
andq $-0x10, %r8
decq %r9
movq %r9, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
movdqa %xmm0, 0x30(%rsp)
movq 0x10(%r10), %r9
addq %rdi, %r9
movdqa 0x8855(%rip), %xmm12    # 0x133b0
movdqa 0x883c(%rip), %xmm13    # 0x133a0
movdqa 0x8823(%rip), %xmm14    # 0x13390
movdqa 0x880a(%rip), %xmm15    # 0x13380
movdqa 0x87f2(%rip), %xmm3     # 0x13370
movdqa 0x87da(%rip), %xmm2     # 0x13360
movdqa 0x87c2(%rip), %xmm1     # 0x13350
movdqa 0x87aa(%rip), %xmm0     # 0x13340
movdqa 0x30(%rsp), %xmm4
pxor %xmm8, %xmm4
movdqa %xmm12, %xmm5
pxor %xmm8, %xmm5
movdqa %xmm5, %xmm7
pcmpgtd %xmm4, %xmm7
pshufd $0xa0, %xmm7, %xmm6     # xmm6 = xmm7[0,0,2,2]
pshuflw $0xe8, %xmm6, %xmm10    # xmm10 = xmm6[0,2,2,3,4,5,6,7]
pcmpeqd %xmm4, %xmm5
pshufd $0xf5, %xmm5, %xmm5     # xmm5 = xmm5[1,1,3,3]
pshuflw $0xe8, %xmm5, %xmm11    # xmm11 = xmm5[0,2,2,3,4,5,6,7]
pand %xmm10, %xmm11
pshufd $0xf5, %xmm7, %xmm7     # xmm7 = xmm7[1,1,3,3]
pshuflw $0xe8, %xmm7, %xmm10    # xmm10 = xmm7[0,2,2,3,4,5,6,7]
por %xmm11, %xmm10
pxor %xmm9, %xmm10
packssdw %xmm10, %xmm10
movd %xmm10, %r10d
testb $0x1, %r10b
je 0xabff
movb $0x0, -0x258(%r9)
pand %xmm6, %xmm5
por %xmm7, %xmm5
packssdw %xmm5, %xmm5
pxor %xmm9, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
movd %xmm5, %r10d
shrl $0x8, %r10d
testb $0x1, %r10b
je 0xac2f
movb $0x0, -0x230(%r9)
movdqa %xmm13, %xmm6
pxor %xmm8, %xmm6
movdqa %xmm6, %xmm7
pcmpgtd %xmm4, %xmm7
pshufd $0xa0, %xmm7, %xmm5     # xmm5 = xmm7[0,0,2,2]
pcmpeqd %xmm4, %xmm6
pshufd $0xf5, %xmm6, %xmm6     # xmm6 = xmm6[1,1,3,3]
movdqa %xmm6, %xmm10
pand %xmm5, %xmm10
pshufd $0xf5, %xmm7, %xmm7     # xmm7 = xmm7[1,1,3,3]
por %xmm7, %xmm10
packssdw %xmm10, %xmm10
pxor %xmm9, %xmm10
packssdw %xmm10, %xmm10
packsswb %xmm10, %xmm10
movd %xmm10, %r10d
shrl $0x10, %r10d
testb $0x1, %r10b
je 0xac8e
movb $0x0, -0x208(%r9)
pshufhw $0x84, %xmm5, %xmm5     # xmm5 = xmm5[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm6, %xmm6     # xmm6 = xmm6[0,1,2,3,4,5,4,6]
pand %xmm5, %xmm6
pshufhw $0x84, %xmm7, %xmm5     # xmm5 = xmm7[0,1,2,3,4,5,4,6]
por %xmm6, %xmm5
pxor %xmm9, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
movd %xmm5, %r10d
shrl $0x18, %r10d
testb $0x1, %r10b
je 0xacc9
movb $0x0, -0x1e0(%r9)
movdqa %xmm14, %xmm5
pxor %xmm8, %xmm5
movdqa %xmm5, %xmm7
pcmpgtd %xmm4, %xmm7
pshufd $0xa0, %xmm7, %xmm6     # xmm6 = xmm7[0,0,2,2]
pshuflw $0xe8, %xmm6, %xmm10    # xmm10 = xmm6[0,2,2,3,4,5,6,7]
pcmpeqd %xmm4, %xmm5
pshufd $0xf5, %xmm5, %xmm5     # xmm5 = xmm5[1,1,3,3]
pshuflw $0xe8, %xmm5, %xmm11    # xmm11 = xmm5[0,2,2,3,4,5,6,7]
pand %xmm10, %xmm11
pshufd $0xf5, %xmm7, %xmm7     # xmm7 = xmm7[1,1,3,3]
pshuflw $0xe8, %xmm7, %xmm10    # xmm10 = xmm7[0,2,2,3,4,5,6,7]
por %xmm11, %xmm10
pxor %xmm9, %xmm10
packssdw %xmm10, %xmm10
packsswb %xmm10, %xmm10
pextrw $0x2, %xmm10, %r10d
testb $0x1, %r10b
je 0xad2d
movb $0x0, -0x1b8(%r9)
pand %xmm6, %xmm5
por %xmm7, %xmm5
packssdw %xmm5, %xmm5
pxor %xmm9, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
pextrw $0x2, %xmm5, %r10d
shrl $0x8, %r10d
testb $0x1, %r10b
je 0xad5e
movb $0x0, -0x190(%r9)
movdqa %xmm15, %xmm6
pxor %xmm8, %xmm6
movdqa %xmm6, %xmm7
pcmpgtd %xmm4, %xmm7
pshufd $0xa0, %xmm7, %xmm5     # xmm5 = xmm7[0,0,2,2]
pcmpeqd %xmm4, %xmm6
pshufd $0xf5, %xmm6, %xmm6     # xmm6 = xmm6[1,1,3,3]
movdqa %xmm6, %xmm10
pand %xmm5, %xmm10
pshufd $0xf5, %xmm7, %xmm7     # xmm7 = xmm7[1,1,3,3]
por %xmm7, %xmm10
packssdw %xmm10, %xmm10
pxor %xmm9, %xmm10
packssdw %xmm10, %xmm10
packsswb %xmm10, %xmm10
pextrw $0x3, %xmm10, %r10d
testb $0x1, %r10b
je 0xadba
movb $0x0, -0x168(%r9)
pshufhw $0x84, %xmm5, %xmm5     # xmm5 = xmm5[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm6, %xmm6     # xmm6 = xmm6[0,1,2,3,4,5,4,6]
pand %xmm5, %xmm6
pshufhw $0x84, %xmm7, %xmm5     # xmm5 = xmm7[0,1,2,3,4,5,4,6]
por %xmm6, %xmm5
pxor %xmm9, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
pextrw $0x3, %xmm5, %r10d
shrl $0x8, %r10d
testb $0x1, %r10b
je 0xadf6
movb $0x0, -0x140(%r9)
movdqa %xmm3, %xmm5
pxor %xmm8, %xmm5
movdqa %xmm5, %xmm7
pcmpgtd %xmm4, %xmm7
pshufd $0xa0, %xmm7, %xmm6     # xmm6 = xmm7[0,0,2,2]
pshuflw $0xe8, %xmm6, %xmm10    # xmm10 = xmm6[0,2,2,3,4,5,6,7]
pcmpeqd %xmm4, %xmm5
pshufd $0xf5, %xmm5, %xmm5     # xmm5 = xmm5[1,1,3,3]
pshuflw $0xe8, %xmm5, %xmm11    # xmm11 = xmm5[0,2,2,3,4,5,6,7]
pand %xmm10, %xmm11
pshufd $0xf5, %xmm7, %xmm7     # xmm7 = xmm7[1,1,3,3]
pshuflw $0xe8, %xmm7, %xmm10    # xmm10 = xmm7[0,2,2,3,4,5,6,7]
por %xmm11, %xmm10
pxor %xmm9, %xmm10
packssdw %xmm10, %xmm10
packsswb %xmm10, %xmm10
pextrw $0x4, %xmm10, %r10d
testb $0x1, %r10b
je 0xae59
movb $0x0, -0x118(%r9)
pand %xmm6, %xmm5
por %xmm7, %xmm5
packssdw %xmm5, %xmm5
pxor %xmm9, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
pextrw $0x4, %xmm5, %r10d
shrl $0x8, %r10d
testb $0x1, %r10b
je 0xae8a
movb $0x0, -0xf0(%r9)
movdqa %xmm2, %xmm6
pxor %xmm8, %xmm6
movdqa %xmm6, %xmm7
pcmpgtd %xmm4, %xmm7
pshufd $0xa0, %xmm7, %xmm5     # xmm5 = xmm7[0,0,2,2]
pcmpeqd %xmm4, %xmm6
pshufd $0xf5, %xmm6, %xmm6     # xmm6 = xmm6[1,1,3,3]
movdqa %xmm6, %xmm10
pand %xmm5, %xmm10
pshufd $0xf5, %xmm7, %xmm7     # xmm7 = xmm7[1,1,3,3]
por %xmm7, %xmm10
packssdw %xmm10, %xmm10
pxor %xmm9, %xmm10
packssdw %xmm10, %xmm10
packsswb %xmm10, %xmm10
pextrw $0x5, %xmm10, %r10d
testb $0x1, %r10b
je 0xaee5
movb $0x0, -0xc8(%r9)
pshufhw $0x84, %xmm5, %xmm5     # xmm5 = xmm5[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm6, %xmm6     # xmm6 = xmm6[0,1,2,3,4,5,4,6]
pand %xmm5, %xmm6
pshufhw $0x84, %xmm7, %xmm5     # xmm5 = xmm7[0,1,2,3,4,5,4,6]
por %xmm6, %xmm5
pxor %xmm9, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
pextrw $0x5, %xmm5, %r10d
shrl $0x8, %r10d
testb $0x1, %r10b
je 0xaf21
movb $0x0, -0xa0(%r9)
movdqa %xmm1, %xmm5
pxor %xmm8, %xmm5
movdqa %xmm5, %xmm7
pcmpgtd %xmm4, %xmm7
pshufd $0xa0, %xmm7, %xmm6     # xmm6 = xmm7[0,0,2,2]
pshuflw $0xe8, %xmm6, %xmm10    # xmm10 = xmm6[0,2,2,3,4,5,6,7]
pcmpeqd %xmm4, %xmm5
pshufd $0xf5, %xmm5, %xmm5     # xmm5 = xmm5[1,1,3,3]
pshuflw $0xe8, %xmm5, %xmm11    # xmm11 = xmm5[0,2,2,3,4,5,6,7]
pand %xmm10, %xmm11
pshufd $0xf5, %xmm7, %xmm7     # xmm7 = xmm7[1,1,3,3]
pshuflw $0xe8, %xmm7, %xmm10    # xmm10 = xmm7[0,2,2,3,4,5,6,7]
por %xmm11, %xmm10
pxor %xmm9, %xmm10
packssdw %xmm10, %xmm10
packsswb %xmm10, %xmm10
pextrw $0x6, %xmm10, %r10d
testb $0x1, %r10b
je 0xaf81
movb $0x0, -0x78(%r9)
pand %xmm6, %xmm5
por %xmm7, %xmm5
packssdw %xmm5, %xmm5
pxor %xmm9, %xmm5
packssdw %xmm5, %xmm5
packsswb %xmm5, %xmm5
pextrw $0x6, %xmm5, %r10d
shrl $0x8, %r10d
testb $0x1, %r10b
je 0xafaf
movb $0x0, -0x50(%r9)
movdqa %xmm0, %xmm6
pxor %xmm8, %xmm6
movdqa %xmm6, %xmm7
pcmpgtd %xmm4, %xmm7
pshufd $0xa0, %xmm7, %xmm5     # xmm5 = xmm7[0,0,2,2]
pcmpeqd %xmm4, %xmm6
pshufd $0xf5, %xmm6, %xmm4     # xmm4 = xmm6[1,1,3,3]
movdqa %xmm4, %xmm10
pand %xmm5, %xmm10
pshufd $0xf5, %xmm7, %xmm6     # xmm6 = xmm7[1,1,3,3]
por %xmm6, %xmm10
packssdw %xmm10, %xmm7
pxor %xmm9, %xmm7
packssdw %xmm7, %xmm7
packsswb %xmm7, %xmm7
pextrw $0x7, %xmm7, %r10d
testb $0x1, %r10b
je 0xb005
movb $0x0, -0x28(%r9)
pshufhw $0x84, %xmm5, %xmm5     # xmm5 = xmm5[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm4, %xmm4     # xmm4 = xmm4[0,1,2,3,4,5,4,6]
pand %xmm5, %xmm4
pshufhw $0x84, %xmm6, %xmm5     # xmm5 = xmm6[0,1,2,3,4,5,4,6]
por %xmm4, %xmm5
pxor %xmm9, %xmm5
packssdw %xmm5, %xmm4
packsswb %xmm4, %xmm4
pextrw $0x7, %xmm4, %r10d
shrl $0x8, %r10d
testb $0x1, %r10b
je 0xb03d
movb $0x0, (%r9)
movdqa 0x838b(%rip), %xmm4     # 0x133d0
paddq %xmm4, %xmm12
paddq %xmm4, %xmm13
paddq %xmm4, %xmm14
paddq %xmm4, %xmm15
paddq %xmm4, %xmm3
paddq %xmm4, %xmm2
paddq %xmm4, %xmm1
paddq %xmm4, %xmm0
addq $0x280, %r9             # imm = 0x280
addq $-0x10, %r8
jne 0xab96
incq %rsi
cmpq %rax, %rsi
jne 0xa5cb
movl $0x0, 0x30(%rbp)
movq 0x60(%r14), %r15
testq %r15, %r15
je 0xb0b8
movq 0x68(%r14), %rbp
shlq $0x3, %r15
xorl %r13d, %r13d
movq (%rbp,%r13), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
callq *0x18(%rax)
addq $0x8, %r13
cmpq %r13, %r15
jne 0xb0a1
movq 0x40(%rsp), %r13
cmpq %r12, %r13
je 0xb241
movq 0x70(%r14), %rsi
cmpl $0x0, 0x4(%rsi)
je 0xb241
movq %rbx, %rdi
callq 0xb31c
movq %rax, %r15
cmpl $0x0, 0x4(%rax)
je 0xb241
movq 0x8(%r14), %rdi
testq %rdi, %rdi
je 0xb299
movq %r15, %rsi
callq 0xb2d5
testb %al, %al
leaq 0xf8b1(%rip), %rax      # 0x1a9b8
je 0xb12b
movdqu 0x8(%rax), %xmm0
movdqu 0x18(%rax), %xmm1
movdqu %xmm1, 0x10(%rsp)
movdqu %xmm0, (%rsp)
movq %r15, %rdi
callq 0x5c32
jmp 0xb241
movq 0x70(%r14), %rax
movl (%rax), %ebp
movq %r15, %rdi
callq 0x83da
movq %rax, %r15
movq 0x8(%r14), %rdi
callq 0x83da
movq (%r14), %rcx
movq %rcx, 0x30(%rsp)
incl 0x11935(%rip)           # 0x1ca88
movq %rax, %r14
leaq 0xf8e3(%rip), %rax      # 0x1aa40
movq (%rax), %rsi
leaq 0x6b0b(%rip), %rdi      # 0x11c72
movl %ebp, %edx
xorl %eax, %eax
callq 0x2030
leaq 0xf8c1(%rip), %r13      # 0x1aa38
movb 0x1(%r13), %al
cmpb $0x1, %al
jne 0xb191
leaq 0x9a77(%rip), %rdi      # 0x14bfd
xorl %eax, %eax
callq 0x2030
movb 0x1(%r13), %al
testb $0x1, %al
je 0xb1a3
leaq 0x6adf(%rip), %rdi      # 0x11c7b
xorl %eax, %eax
callq 0x2030
leaq 0x620a(%rip), %rdi      # 0x113b4
leaq 0x9a3a(%rip), %rsi      # 0x14beb
xorl %eax, %eax
callq 0x2030
movb 0x1(%r13), %al
cmpb $0x1, %al
jne 0xb1d2
leaq 0x633e(%rip), %rdi      # 0x11505
xorl %eax, %eax
callq 0x2030
movb 0x1(%r13), %al
testb $0x1, %al
je 0xb1e4
leaq 0x6328(%rip), %rdi      # 0x11505
xorl %eax, %eax
callq 0x2030
leaq 0x61c9(%rip), %r13      # 0x113b4
leaq 0x8809(%rip), %rsi      # 0x139fb
movq %r13, %rdi
xorl %eax, %eax
callq 0x2030
movq %r13, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x2030
leaq 0x87f7(%rip), %rdi      # 0x13a07
leaq 0x881f(%rip), %rsi      # 0x13a36
leaq 0x8827(%rip), %rcx      # 0x13a45
leaq 0x772c(%rip), %r9       # 0x12951
movq %r14, %rdx
movq 0x30(%rsp), %r8
callq 0xf326
movl $0xa, %edi
callq 0x2160
movq 0x40(%rsp), %r13
xorl %edi, %edi
cmpq %r12, %r13
sete %dil
movq $0x0, 0x78(%rbx)
callq 0x5b11
movl $0x4, %edi
callq 0x2406
leaq 0x2f(%rsp), %rdi
callq 0x34dc
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x9504(%rip), %rdi      # 0x14785
leaq 0x9501(%rip), %rsi      # 0x14789
leaq 0x9509(%rip), %rcx      # 0x14798
movl $0x5e, %edx
callq 0x20b0
leaq 0x874a(%rip), %rdi      # 0x139ea
leaq 0x8157(%rip), %rsi      # 0x133fe
leaq 0x8703(%rip), %rcx      # 0x139b1
movl $0x342, %edx            # imm = 0x342
callq 0x20b0
jmp 0xb2c0
jmp 0xb2c0
jmp 0xb2c0
jmp 0xb2c0
movq %rax, %rbx
leaq 0x2f(%rsp), %rdi
callq 0x34dc
movq %rbx, %rdi
callq 0x21c0