// File: /workspace/github_cpp_makefile_star2_O1/cphinton42[P]hinton-language/src/check.cpp
// Function: do_typecheck_job(Context*, Job)
bool do_typecheck_job(Context *ctx, Job job)
{
    Expr_AST *type = job.typecheck.type;
    AST *ast = job.typecheck.ast;
    
    switch(ast->type)
    {
        case AST_Type::decl_ast: {
            Decl_AST *decl_ast = static_cast<Decl_AST*>(ast);
            assert(type == nullptr);
            return typecheck_decl(ctx, job.stage, decl_ast);
        } break;
        case AST_Type::block_ast: {
            Block_AST *block_ast = static_cast<Block_AST*>(ast);
            assert(type == nullptr);
            for(u64 i = 0; i < block_ast->statements.count; ++i)
            {
                auto job = make_typecheck_job(nullptr, block_ast->statements[i]);
                do_typecheck_job(ctx, job);
            }
            return true;
        } break;
        case AST_Type::while_ast: {
            While_AST *while_ast = static_cast<While_AST*>(ast);
            assert(type == nullptr);
            
            auto job = make_typecheck_job(&boollike_t_ast, while_ast->guard);
            do_typecheck_job(ctx, job);
            job = make_typecheck_job(nullptr, while_ast->body);
            do_typecheck_job(ctx, job);
            return true;
        } break;
        case AST_Type::for_ast: {
            For_AST *for_ast = static_cast<For_AST*>(ast);
            assert(type == nullptr);
            
            if(for_ast->flags & FOR_FLAG_OVER_ARRAY)
            {
                // TODO: once built-in arrays are a thing, check this
                report_error("For loop over array not yet supported at type level", for_ast);
                ctx->success = false;
            }
            else
            {
                // TODO: find best type? (change to u64 if out of range for s64?)
                // If ints can't downcast, it might be a pain for 'it' to be big
                set_resolved_type(for_ast->induction_var, &s64_t_ast);
                
                auto job = make_typecheck_job(&intlike_t_ast, for_ast->low_expr);
                do_typecheck_job(ctx, job);
                job = make_typecheck_job(&intlike_t_ast, for_ast->high_expr);
                do_typecheck_job(ctx, job);
            }
            
            auto job = make_typecheck_job(nullptr, for_ast->body);
            do_typecheck_job(ctx, job);
            return true;
        } break;
        case AST_Type::if_ast: {
            If_AST *if_ast = static_cast<If_AST*>(ast);
            assert(type == nullptr);
            
            auto job = make_typecheck_job(&boollike_t_ast, if_ast->guard);
            do_typecheck_job(ctx, job);
            job = make_typecheck_job(nullptr, if_ast->then_block);
            do_typecheck_job(ctx, job);
            if(if_ast->else_block)
            {
                job = make_typecheck_job(nullptr, if_ast->else_block);
                do_typecheck_job(ctx, job);
            }
            return true;
        } break;
        case AST_Type::assign_ast: {
            Assign_AST *assign_ast = static_cast<Assign_AST*>(ast);
            assert(type == nullptr);
            return typecheck_assign(ctx, job.stage, assign_ast);
        } break;
        case AST_Type::return_ast: {
            Return_AST *return_ast = static_cast<Return_AST*>(ast);
            assert(type == nullptr);
            assert(job.stage == 0);
            return typecheck_return(ctx, return_ast);
        } break;
        
        case AST_Type::ident_ast: {
            Ident_AST *ident_ast = static_cast<Ident_AST*>(ast);
            return typecheck_ident(ctx, job.stage, type, ident_ast);
        } break;
        case AST_Type::function_type_ast: {
            Function_Type_AST *function_type_ast = static_cast<Function_Type_AST*>(ast);
            return typecheck_function_type(ctx, job.stage, type, function_type_ast);
        } break;
        case AST_Type::function_ast: {
            Function_AST *function_ast = static_cast<Function_AST*>(ast);
            return typecheck_function(ctx, job.stage, type, function_ast);
        } break;
        case AST_Type::function_call_ast: {
            Function_Call_AST *function_call_ast = static_cast<Function_Call_AST*>(ast);
            return typecheck_function_call(ctx, job.stage, type, function_call_ast);
        } break;
        case AST_Type::access_ast: {
            Access_AST *access_ast = static_cast<Access_AST*>(ast);
            return typecheck_access(ctx, job.stage, type, access_ast);
        } break;
        case AST_Type::binary_operator_ast: {
            Binary_Operator_AST *binop_ast = static_cast<Binary_Operator_AST*>(ast);
            return typecheck_binop_ast(ctx, job.stage, type, binop_ast);
        } break;
        case AST_Type::number_ast: {
            Number_AST *number_ast = static_cast<Number_AST*>(ast);
            assert(job.stage == 0);
            return typecheck_number(ctx, type, number_ast);
        } break;
        case AST_Type::enum_ast: {
            Enum_AST *enum_ast = static_cast<Enum_AST*>(ast);
            return typecheck_enum(ctx, job.stage, type, enum_ast);
        } break;
        case AST_Type::struct_ast: {
            Struct_AST *struct_ast = static_cast<Struct_AST*>(ast);
            return typecheck_struct(ctx, job.stage, type, struct_ast);
        } break;
        case AST_Type::unary_ast: {
            Unary_Operator_AST *unop_ast = static_cast<Unary_Operator_AST*>(ast);
            return typecheck_unary(ctx, job.stage, type, unop_ast);
        } break;
        case AST_Type::primitive_ast: {
            Primitive_AST *prim_ast = static_cast<Primitive_AST*>(ast);
            assert(job.stage == 0);
            return typecheck_primitive(ctx, type, prim_ast);
        } break;
        case AST_Type::string_ast: {
            String_AST *string_ast = static_cast<String_AST*>(ast);
            assert(job.stage == 0);
            return typecheck_string(ctx, type, string_ast);
        } break;
        case AST_Type::bool_ast: {
            Bool_AST *bool_ast = static_cast<Bool_AST*>(ast);
            assert(job.stage == 0);
            return typecheck_bool(ctx, type, bool_ast);
        } break;
    }
    
    assert(false);
    return false;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x208, %rsp            # imm = 0x208
movq %rdi, 0x20(%rsp)
leaq 0x240(%rsp), %rbx
leaq 0xbc95(%rip), %r12      # 0x10060
leaq 0x11aa6(%rip), %rbp     # 0x15e78
xorl %r8d, %r8d
movq 0x10(%rbx), %r13
movzwl (%r13), %eax
cmpq $0x13, %rax
ja 0x685d
movq 0x8(%rbx), %r14
movslq (%r12,%rax,4), %rax
addq %r12, %rax
jmpq *%rax
testq %r14, %r14
jne 0x681f
movq %r8, %r15
movq 0x10(%r13), %rax
movq $0x0, 0xf8(%rsp)
movq %rbp, 0x100(%rsp)
movq %rax, 0x108(%rsp)
movq %rax, 0x10(%rsp)
movups 0xf8(%rsp), %xmm0
movups %xmm0, (%rsp)
movq 0x20(%rsp), %rdi
callq 0x43a6
movq 0x18(%r13), %rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x1b0(%rsp)
movq %rax, 0x1c0(%rsp)
movaps %xmm0, 0x90(%rsp)
movq %rax, 0xa0(%rsp)
movaps 0x90(%rsp), %xmm0
movups %xmm0, (%rbx)
movq 0xa0(%rsp), %rax
movq %rax, 0x10(%rbx)
jmp 0x45e4
testq %r14, %r14
jne 0x683e
movq %r8, %r14
testb $0x8, 0x2(%r13)
movq 0x20(%rsp), %r15
jne 0x45f5
movq 0x10(%r13), %rax
movq $0x1, 0x10(%rax)
leaq 0x117ea(%rip), %rcx     # 0x15c98
movq %rcx, 0x18(%rax)
movq 0x18(%r13), %rax
xorl %ecx, %ecx
movq %rcx, 0xe0(%rsp)
leaq 0x11939(%rip), %rcx     # 0x15e00
movq %rcx, 0xe8(%rsp)
movq %rax, 0xf0(%rsp)
movq %rax, 0x10(%rsp)
movups 0xe0(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r15, %rdi
callq 0x43a6
movq 0x20(%r13), %rax
xorl %ecx, %ecx
movq %rcx, 0xc8(%rsp)
leaq 0x118fb(%rip), %rcx     # 0x15e00
movq %rcx, 0xd0(%rsp)
movq %rax, 0xd8(%rsp)
movq %rax, 0x10(%rsp)
movups 0xc8(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r15, %rdi
callq 0x43a6
jmp 0x4617
testq %r14, %r14
jne 0x6800
movq %r8, %r15
movq 0x10(%r13), %rax
movq $0x0, 0xb0(%rsp)
movq %rbp, 0xb8(%rsp)
movq %rax, 0xc0(%rsp)
movq %rax, 0x10(%rsp)
movups 0xb0(%rsp), %xmm0
movups %xmm0, (%rsp)
movq 0x20(%rsp), %r14
movq %r14, %rdi
callq 0x43a6
movq 0x18(%r13), %rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x110(%rsp)
movq %rax, 0x120(%rsp)
movq %rax, 0x10(%rsp)
movaps 0x110(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
callq 0x43a6
movq 0x20(%r13), %rax
testq %rax, %rax
je 0x53d9
xorps %xmm0, %xmm0
movaps %xmm0, 0x170(%rsp)
movq %rax, 0x180(%rsp)
movaps %xmm0, 0x1f0(%rsp)
movq %rax, 0x200(%rsp)
movq %rax, 0x10(%rbx)
movups %xmm0, (%rbx)
xorb $0x1, %r15b
orb %r15b, 0x1f(%rsp)
movb $0x1, %r8b
jmp 0x43d5
movl 0x8(%r13), %esi
movl 0xc(%r13), %edx
leaq 0xc764(%rip), %rdi      # 0x10d68
leaq 0xc7ef(%rip), %rcx      # 0x10dfa
xorl %eax, %eax
callq 0x4261
movb $0x0, 0x10(%r15)
movq 0x28(%r13), %rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x190(%rsp)
movq %rax, 0x1a0(%rsp)
movaps %xmm0, 0x1d0(%rsp)
movq %rax, 0x1e0(%rsp)
movq %rax, 0x10(%rbx)
movups %xmm0, (%rbx)
xorb $0x1, %r14b
orb %r14b, 0x1f(%rsp)
movb $0x1, %r8b
jmp 0x43d5
movl 0x4(%rbx), %ebp
cmpl $0x1, %ebp
je 0x4697
xorl %r15d, %r15d
movb $0x1, %bl
testl %ebp, %ebp
jne 0x50f8
testq %r14, %r14
je 0x4697
leaq 0x11761(%rip), %rdx     # 0x15dd8
movq 0x20(%rsp), %rdi
movq %r14, %rsi
movl $0x1, %ecx
movq %r8, %r12
callq 0x6c77
movq %r12, %r8
testl %eax, %eax
jne 0x50f8
movq $0x1, 0x10(%r13)
leaq 0x11732(%rip), %rax     # 0x15dd8
movq %rax, 0x18(%r13)
movl $0x2, %r15d
cmpq $0x0, 0x20(%r13)
je 0x572c
movq %r8, 0x28(%rsp)
xorl %ebx, %ebx
movq 0x20(%rsp), %r12
movq 0x28(%r13), %rax
movq (%rax,%rbx,8), %rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movq %rax, 0x40(%rsp)
movq %rax, 0x10(%rsp)
movaps 0x30(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r12, %rdi
callq 0x43a6
incq %rbx
cmpq 0x20(%r13), %rbx
jb 0x46c7
jmp 0x50f1
movl 0x4(%rbx), %r15d
movb $0x1, %bpl
cmpq $0x3, %r15
ja 0x5733
movq 0x20(%r13), %rbx
leaq 0xba38(%rip), %rax      # 0x10154
movslq (%rax,%r15,4), %rcx
addq %rax, %rcx
movb $0x1, %al
jmpq *%rcx
xorl %eax, %eax
testb %al, %al
jne 0x475a
cmpq $0x1, 0x10(%rbx)
je 0x475a
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movq %rbx, 0x40(%rsp)
movq %rbx, 0x10(%rsp)
movups %xmm0, (%rsp)
movq 0x20(%rsp), %rdi
movq %r8, %r12
callq 0x43a6
movq %r12, %r8
movl $0x1, %r12d
cmpq $0x1, 0x10(%rbx)
jne 0x647c
movq 0x20(%r13), %rax
movl $0x2, %r12d
testb $0x30, 0x2(%rax)
je 0x647c
movq %r8, %rbp
movq 0x18(%rbx), %rsi
leaq 0x50(%rsp), %rdx
movq 0x20(%rsp), %rdi
callq 0x6b4e
testl %eax, %eax
jne 0x6476
movq 0x50(%rsp), %rax
movzwl (%rax), %ecx
movw %cx, 0x68(%rsp)
cmpw $0x10, %cx
jne 0x47d6
cmpq $0x3, 0x20(%rax)
jne 0x6a2e
movq 0x28(%rax), %rsi
leaq 0x50(%rsp), %rdx
movq 0x20(%rsp), %rdi
callq 0x6b4e
testl %eax, %eax
jne 0x6476
movq 0x50(%rsp), %rdx
movzwl (%rdx), %eax
leaq 0xd0bc(%rip), %rcx      # 0x118a1
cmpl $0xe, %eax
je 0x60cd
cmpl $0xf, %eax
jne 0x6459
movq 0x40(%rdx), %rdi
movq 0x28(%r13), %rsi
movq %rdx, %rbx
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x9988
testq %rax, %rax
jne 0x60f0
leaq 0x28(%r13), %rax
addq $0x48, %rbx
movq %rbx, %rdx
jmp 0x60e1
cmpl $0x0, 0x4(%rbx)
jne 0x68d9
movzwl 0x2(%r13), %ebx
movl %ebx, %eax
orl $0x20, %eax
movw %ax, 0x2(%r13)
testq %r14, %r14
movq 0x20(%rsp), %rdi
je 0x53e8
movq %r8, %r12
leaq 0x30(%rsp), %rdx
movq %r14, %rsi
callq 0x6b4e
testl %eax, %eax
je 0x56e7
xorl %ebp, %ebp
jmp 0x5bf3
testq %r14, %r14
jne 0x68f8
movl 0x4(%rbx), %r14d
xorl %ebp, %ebp
cmpq $0x3, %r14
movq 0x20(%rsp), %r15
ja 0x59e2
leaq 0xb8e5(%rip), %rax      # 0x10174
movslq (%rax,%r14,4), %rdx
addq %rax, %rdx
movb $0x1, %cl
xorl %ebx, %ebx
xorl %eax, %eax
jmpq *%rdx
xorl %ecx, %ecx
testb %cl, %cl
jne 0x48d3
movq 0x18(%r13), %rax
cmpq $0x1, 0x10(%rax)
je 0x48d3
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movq %rax, 0x40(%rsp)
movq %rax, 0x10(%rsp)
movups %xmm0, (%rsp)
movq %r15, %rdi
movq %r8, %rbx
callq 0x43a6
movq %rbx, %r8
movq 0x18(%r13), %rax
movl $0x1, %ebp
movb $0x1, %bl
cmpq $0x1, 0x10(%rax)
jne 0x5a4a
movq 0x18(%r13), %rax
movzwl 0x2(%rax), %eax
shrl $0x4, %eax
andl $0x3, %eax
leaq 0xb886(%rip), %rcx      # 0x10184
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
xorl %r15d, %r15d
jmp 0x5999
movl 0x4(%rbx), %r15d
cmpl $0x2, %r15d
je 0x55d0
cmpl $0x1, %r15d
je 0x5588
xorl %r12d, %r12d
testl %r15d, %r15d
jne 0x5d08
orb $0x20, 0x2(%r13)
xorl %eax, %eax
jmp 0x558a
movl 0x4(%rbx), %r12d
movb $0x1, %bl
cmpl $0x2, %r12d
je 0x5d63
cmpl $0x1, %r12d
movb 0x1f(%rsp), %al
je 0x5d4f
xorl %ebp, %ebp
testl %r12d, %r12d
jne 0x5dba
movq %r8, 0x28(%rsp)
orb $0x10, 0x2(%r13)
movq 0x38(%r13), %rdi
movq 0x20(%r13), %rsi
movq 0x30(%r13), %rdx
movq %rsi, %rax
shrq $0x1e, %rax
xorq %rsi, %rax
movabsq $-0x40a7b892e31b1a47, %rcx # imm = 0xBF58476D1CE4E5B9
imulq %rax, %rcx
movq %rcx, %rax
shrq $0x1b, %rax
xorq %rcx, %rax
movabsq $-0x6b2fb644ecceee15, %r8 # imm = 0x94D049BB133111EB
imulq %rax, %r8
movq %r8, %rcx
shrq $0x1f, %rcx
xorq %r8, %rcx
movl $0x1, %r8d
callq 0x99ca
movq %rax, %r15
testq %rax, %rax
je 0x5d17
movq 0x28(%r13), %rax
andl $0x7, %eax
orq %r15, %rax
movq %rax, 0x28(%r13)
jmp 0x5d41
movq %r8, 0x28(%rsp)
movl 0x4(%rbx), %ecx
cmpq $0x3, %rcx
movq %rcx, 0x68(%rsp)
ja 0x573b
leaq 0xb764(%rip), %rax      # 0x10164
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
orb $0x20, 0x2(%r13)
movq 0x20(%r13), %rax
movl $0x1, %ecx
movq %rcx, 0x10(%rax)
leaq 0x113b6(%rip), %rbx     # 0x15dd8
movq %rbx, 0x18(%rax)
movq 0x20(%r13), %rax
movq %rcx, 0x10(%r13)
movq %rax, 0x18(%r13)
movq 0x20(%rax), %r12
testq %r12, %r12
je 0x4a7f
movq 0x28(%rax), %rbp
xorl %r15d, %r15d
movq (%rbp,%r15,8), %rax
testq %rax, %rax
je 0x4a77
movq $0x0, 0x30(%rsp)
movq %rbx, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movq %rax, 0x10(%rsp)
movups 0x30(%rsp), %xmm0
movups %xmm0, (%rsp)
movq 0x20(%rsp), %rdi
callq 0x43a6
incq %r15
cmpq %r15, %r12
jne 0x4a42
movq 0x20(%r13), %rax
movq 0x30(%rax), %r12
testq %r12, %r12
je 0x4ad4
movq 0x38(%rax), %rbp
xorl %r15d, %r15d
movq (%rbp,%r15,8), %rax
testq %rax, %rax
je 0x687c
movq $0x0, 0x50(%rsp)
movq %rbx, 0x58(%rsp)
movq %rax, 0x60(%rsp)
movq %rax, 0x10(%rsp)
movups 0x50(%rsp), %xmm0
movups %xmm0, (%rsp)
movq 0x20(%rsp), %rdi
callq 0x43a6
incq %r15
cmpq %r15, %r12
jne 0x4a93
movq 0x20(%r13), %rcx
movq 0x20(%rcx), %rax
movq 0x28(%rcx), %rbx
movq 0x40(%r13), %r12
testq %rax, %rax
je 0x4b1d
xorl %ecx, %ecx
cmpq $0x0, (%r12,%rcx,8)
je 0x4b02
movq (%rbx,%rcx,8), %rdx
testq %rdx, %rdx
je 0x4b02
cmpq $0x1, 0x10(%rdx)
jne 0x4b09
xorl %edx, %edx
movb $0x1, %sil
jmp 0x4b10
movl $0xc, %edx
xorl %esi, %esi
testb %sil, %sil
je 0x4b22
incq %rcx
cmpq %rcx, %rax
jne 0x4aeb
movl $0x9, %edx
cmpl $0x9, %edx
jne 0x4b7b
movq 0x38(%r13), %rbp
testq %rbp, %rbp
je 0x4b79
xorl %r15d, %r15d
movq (%r12,%r15,8), %rax
testq %rax, %rax
je 0x4b71
movq (%rbx,%r15,8), %rcx
movq $0x0, 0x78(%rsp)
movq %rcx, 0x80(%rsp)
movq %rax, 0x88(%rsp)
movq %rax, 0x10(%rsp)
movups 0x78(%rsp), %xmm0
movups %xmm0, (%rsp)
movq 0x20(%rsp), %rdi
callq 0x43a6
incq %r15
cmpq %r15, %rbp
jne 0x4b33
xorl %edx, %edx
movl $0x1, %ebp
testl %edx, %edx
jne 0x5b58
movq 0x20(%r13), %rax
movq 0x20(%rax), %rcx
movq 0x28(%rax), %rax
testq %rcx, %rcx
je 0x5ab6
movq 0x40(%r13), %rdx
xorl %esi, %esi
movq 0x20(%rsp), %rdi
cmpq $0x0, (%rax,%rsi,8)
jne 0x4be1
movq (%rdx,%rsi,8), %r9
testq %r9, %r9
je 0x68ba
movq 0x10(%r9), %r8
movl $0xc, %r10d
cmpq $0x1, %r8
jne 0x4bd7
movq 0x18(%r9), %r9
movq %r9, (%rax,%rsi,8)
xorl %r10d, %r10d
cmpq $0x1, %r8
jne 0x5ac1
incq %rsi
cmpq %rsi, %rcx
jne 0x4ba8
movl $0x10, %r10d
jmp 0x5ac1
movl 0x4(%rbx), %r15d
movq 0x20(%r13), %rax
xorl %r12d, %r12d
cmpq $0x4, %rax
ja 0x584c
leaq 0xb4b4(%rip), %rcx      # 0x100c4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x3, %ebp
cmpl $0x2, %r15d
je 0x4cab
cmpl $0x1, %r15d
je 0x4c63
testl %r15d, %r15d
jne 0x66c2
testq %r14, %r14
je 0x4c63
leaq 0x1120d(%rip), %rsi     # 0x15e50
movq 0x20(%rsp), %rdi
movq %r14, %rdx
movl $0x1, %ecx
movq %r8, %rbx
callq 0x6c77
movq %rbx, %r8
testl %eax, %eax
jne 0x66c2
orb $0x20, 0x2(%r13)
testq %r14, %r14
leaq 0x111de(%rip), %rax     # 0x15e50
cmovneq %r14, %rax
movq 0x28(%r13), %rcx
movq $0x0, 0x30(%rsp)
movq %rax, 0x38(%rsp)
movq %rcx, 0x40(%rsp)
movq %rcx, 0x10(%rsp)
movups 0x30(%rsp), %xmm0
movups %xmm0, (%rsp)
movq 0x20(%rsp), %rdi
movq %r8, %rbx
callq 0x43a6
movq %rbx, %r8
movq 0x28(%r13), %rax
movl $0x2, %r12d
cmpq $0x1, 0x10(%rax)
jne 0x66c2
movq 0x18(%rax), %rax
movq $0x1, 0x10(%r13)
movq %rax, 0x18(%r13)
movl $0x3, %ebp
movl $0x3, %r12d
jmp 0x66c2
movl 0x4(%rbx), %r15d
movq 0x20(%r13), %rax
xorl %r12d, %r12d
cmpq $0xc, %rax
ja 0x5f4e
leaq 0xb414(%rip), %rcx      # 0x10110
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x4, %ebp
cmpl $0x3, %r15d
ja 0x66c2
movl %r15d, %eax
leaq 0xb426(%rip), %rcx      # 0x10144
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
orb $0x20, 0x2(%r13)
testq %r14, %r14
je 0x4d60
leaq 0x11140(%rip), %rsi     # 0x15e78
movq 0x20(%rsp), %rdi
movq %r14, %rdx
movl $0x1, %ecx
movq %r8, %rbx
callq 0x6c77
movq %rbx, %r8
testl %eax, %eax
jne 0x66c2
movq %r14, %rax
testq %r14, %r14
jne 0x4d67
leaq 0x10f59(%rip), %rax     # 0x15cc0
movq $0x1, 0x10(%r13)
movq %rax, 0x18(%r13)
movq 0x28(%r13), %rax
xorl %ecx, %ecx
movq %rcx, 0x30(%rsp)
leaq 0x110cb(%rip), %r12     # 0x15e50
movq %r12, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movq %rax, 0x10(%rsp)
movups 0x30(%rsp), %xmm0
movups %xmm0, (%rsp)
movl %r15d, %ebx
movq 0x20(%rsp), %r15
movq %r15, %rdi
movq %r8, %rbp
callq 0x43a6
movq 0x30(%r13), %rax
xorl %ecx, %ecx
movq %rcx, 0x50(%rsp)
movq %r12, 0x58(%rsp)
movq %rax, 0x60(%rsp)
movq %rax, 0x10(%rsp)
movups 0x50(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r15, %rdi
movl %ebx, %r15d
callq 0x43a6
movq %rbp, %r8
movl $0x4, %ebp
movq 0x28(%r13), %rax
movl $0x3, %r12d
cmpq $0x1, 0x10(%rax)
jne 0x66c2
movq 0x30(%r13), %rcx
cmpq $0x1, 0x10(%rcx)
jne 0x66c2
movq 0x18(%rax), %rsi
movq 0x18(%rcx), %rdx
movq 0x20(%rsp), %rdi
movl $0x1, %ecx
movq %r8, %rbx
callq 0x6c77
movq %rbx, %r8
xorl %r12d, %r12d
cmpl $0x1, %eax
adcl $0x3, %r12d
jmp 0x66c2
testq %r14, %r14
jne 0x6917
cmpl $0x0, 0x4(%rbx)
movq 0x20(%rsp), %r14
jne 0x69d1
movq 0x10(%r13), %rax
movq 0x20(%rax), %rax
movq 0x30(%rax), %rcx
movq 0x38(%rax), %rax
testq %rcx, %rcx
sete %r12b
je 0x58cc
movq (%rax), %rdx
cmpq $0x1, 0x10(%rdx)
jne 0x4e9a
leaq -0x1(%rcx), %rsi
xorl %edx, %edx
cmpq %rdx, %rsi
je 0x58c9
movq 0x8(%rax,%rdx,8), %rdi
incq %rdx
cmpq $0x1, 0x10(%rdi)
je 0x4e7b
cmpq %rcx, %rdx
setae %r12b
movq 0x8(%r14), %rdi
xorps %xmm0, %xmm0
movaps %xmm0, 0x50(%rsp)
movq %r13, 0x60(%rsp)
movq 0x10cb6(%rip), %rsi     # 0x15b68
movq 0x10cb7(%rip), %rdx     # 0x15b70
movq 0x60(%rsp), %rax
movq %rax, 0x10(%rsp)
movaps 0x50(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r8, %rbx
callq 0xef61
movq %rbx, %r8
jmp 0x6730
testq %r14, %r14
jne 0x6936
movb $0x1, %r12b
cmpq $0x0, 0x10(%r13)
movq 0x20(%rsp), %r15
je 0x6730
movq %r8, %r14
xorl %ebx, %ebx
movq 0x18(%r13), %rax
movq (%rax,%rbx,8), %rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x130(%rsp)
movq %rax, 0x140(%rsp)
movq %rax, 0x10(%rsp)
movaps 0x130(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r15, %rdi
callq 0x43a6
incq %rbx
cmpq 0x10(%r13), %rbx
jb 0x4efd
jmp 0x52b2
testq %r14, %r14
jne 0x6955
movl 0x4(%rbx), %r14d
movb $0x1, %bl
cmpl $0x2, %r14d
movq 0x20(%rsp), %r12
je 0x5e90
cmpl $0x1, %r14d
je 0x4fb2
xorl %ebp, %ebp
testl %r14d, %r14d
jne 0x5ee1
movq 0x50(%r13), %rax
testq %rax, %rax
je 0x4fb2
movq $0x0, 0x30(%rsp)
leaq 0x10e51(%rip), %rcx     # 0x15dd8
movq %rcx, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movq %rax, 0x10(%rsp)
movups 0x30(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r12, %rdi
movq %r8, %r15
callq 0x43a6
movq %r15, %r8
movq 0x20(%rsp), %r12
movq 0x50(%r13), %rax
testq %rax, %rax
je 0x4fcb
movl $0x1, %ebp
cmpq $0x1, 0x10(%rax)
jne 0x5ee1
movq 0x58(%r13), %rcx
testq %rcx, %rcx
je 0x5e90
movq %r8, %r15
testq %rax, %rax
je 0x5e5d
cmpq $0x1, 0x10(%rax)
je 0x5e5f
leaq 0xc644(%rip), %rdi      # 0x1163a
leaq 0xbd9d(%rip), %rsi      # 0x10d9a
leaq 0xc659(%rip), %rcx      # 0x1165d
movl $0x100, %edx            # imm = 0x100
callq 0x3080
movl 0x4(%rbx), %ebp
cmpl $0x1, %ebp
je 0x504f
xorl %r15d, %r15d
movb $0x1, %bl
testl %ebp, %ebp
jne 0x50f8
testq %r14, %r14
je 0x504f
leaq 0x10da9(%rip), %rdx     # 0x15dd8
movq 0x20(%rsp), %rdi
movq %r14, %rsi
movl $0x1, %ecx
movq %r8, %r12
callq 0x6c77
movq %r12, %r8
testl %eax, %eax
jne 0x50f8
movq %r8, 0x28(%rsp)
movq $0x1, 0x10(%r13)
leaq 0x10d75(%rip), %rax     # 0x15dd8
movq %rax, 0x18(%r13)
cmpq $0x0, 0x20(%r13)
movq 0x20(%rsp), %r15
je 0x50a9
xorl %ebx, %ebx
movq 0x28(%r13), %rax
movq (%rax,%rbx,8), %rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movq %rax, 0x40(%rsp)
movq %rax, 0x10(%rsp)
movaps 0x30(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r15, %rdi
callq 0x43a6
incq %rbx
cmpq 0x20(%r13), %rbx
jb 0x5075
movl $0x2, %r15d
cmpq $0x0, 0x30(%r13)
je 0x50f1
xorl %ebx, %ebx
movq 0x20(%rsp), %r12
movq 0x38(%r13), %rax
movq (%rax,%rbx,8), %rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x50(%rsp)
movq %rax, 0x60(%rsp)
movq %rax, 0x10(%rsp)
movaps 0x50(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r12, %rdi
callq 0x43a6
incq %rbx
cmpq 0x30(%r13), %rbx
jb 0x50bd
xorl %ebx, %ebx
movq 0x28(%rsp), %r8
testb %bl, %bl
je 0x515e
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rbx
movq 0x10(%rbx), %rax
cmpq %rax, (%rbx)
jne 0x513a
movq 0x10a5b(%rip), %rcx     # 0x15b70
movq 0x10a4c(%rip), %rdx     # 0x15b68
shlq $0x2, %rax
testq %rax, %rax
movl $0x4, %esi
cmovneq %rax, %rsi
movq %rbx, %rdi
movq %r8, %r12
callq 0xefbb
movq %r12, %r8
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
leaq (%rax,%rax,2), %rax
movl $0x0, (%rcx,%rax,8)
movl %r15d, 0x4(%rcx,%rax,8)
movq %r14, 0x8(%rcx,%rax,8)
movq %r13, 0x10(%rcx,%rax,8)
incq (%rbx)
cmpl %ebp, %r15d
jmp 0x672c
cmpl $0x0, 0x4(%rbx)
jne 0x6974
movq %r8, %rbp
testq %r14, %r14
movq 0x20(%rsp), %rdi
je 0x5402
leaq 0x30(%rsp), %rdx
movq %r14, %rsi
callq 0x6b4e
movl %eax, %r15d
testl %eax, %eax
movq %rbp, %r8
jne 0x6523
movq 0x30(%rsp), %rax
cmpw $0x11, (%rax)
jne 0x51b3
movq 0x20(%rax), %rax
testb %al, %al
js 0x5fdb
movl 0x8(%r13), %esi
movl 0xc(%r13), %edx
leaq 0xbba6(%rip), %rdi      # 0x10d68
leaq 0xca4c(%rip), %rcx      # 0x11c15
xorl %r12d, %r12d
xorl %eax, %eax
callq 0x4261
movq %rbp, %r8
movq 0x20(%rsp), %rax
movb $0x0, 0x10(%rax)
jmp 0x6523
cmpl $0x0, 0x4(%rbx)
jne 0x6993
movq %r8, %rbp
testq %r14, %r14
je 0x5413
leaq 0x10bd7(%rip), %r15     # 0x15dd8
movq 0x20(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
movl $0x1, %ecx
callq 0x6c77
testl %eax, %eax
je 0x5711
movq 0x8(%rbx), %rbx
movq 0x10(%rbx), %rax
cmpq %rax, (%rbx)
jne 0x5254
movq 0x1093b(%rip), %rcx     # 0x15b70
movq 0x1092c(%rip), %rdx     # 0x15b68
shlq $0x2, %rax
testq %rax, %rax
movl $0x4, %esi
cmovneq %rax, %rsi
movq %rbx, %rdi
callq 0xefbb
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
leaq (%rax,%rax,2), %rax
movq $0x0, (%rcx,%rax,8)
movq %r14, 0x8(%rcx,%rax,8)
movq %r13, 0x10(%rcx,%rax,8)
incq (%rbx)
xorl %r12d, %r12d
jmp 0x5720
cmpl $0x0, 0x4(%rbx)
jne 0x69b2
movq %r8, %r14
movl 0x8(%r13), %esi
movl 0xc(%r13), %edx
leaq 0xbad0(%rip), %rdi      # 0x10d68
leaq 0xc94e(%rip), %rcx      # 0x11bed
xorl %r12d, %r12d
xorl %eax, %eax
callq 0x4261
movq 0x20(%rsp), %rax
movb $0x0, 0x10(%rax)
movb 0x1f(%rsp), %al
movq %r14, %r8
jmp 0x6734
movq %r8, 0x28(%rsp)
movl 0x4(%rbx), %ebp
cmpl $0x2, %ebp
je 0x5318
movb $0x1, %bl
cmpl $0x1, %ebp
je 0x52e2
xorl %r12d, %r12d
testl %ebp, %ebp
jne 0x5857
orb $0x20, 0x2(%r13)
leaq 0x10aef(%rip), %r15     # 0x15dd8
movl $0x1, %r12d
movq 0x20(%rsp), %rdi
movq %r14, %rsi
movq %r15, %rdx
movl $0x1, %ecx
callq 0x6c77
testl %eax, %eax
jne 0x5857
movq $0x1, 0x10(%r13)
movq %r15, 0x18(%r13)
movl %ebp, 0x68(%rsp)
movq 0x20(%r13), %rbx
testq %rbx, %rbx
movq 0x20(%rsp), %rbp
je 0x536d
movq 0x28(%r13), %r15
xorl %r12d, %r12d
movq (%r15,%r12,8), %rax
movq $0x0, 0x30(%rsp)
leaq 0x10a93(%rip), %rcx     # 0x15dd8
movq %rcx, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movq %rax, 0x10(%rsp)
movups 0x30(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %rbp, %rdi
callq 0x43a6
incq %r12
cmpq %r12, %rbx
jne 0x5331
movq 0x30(%r13), %rbx
movl $0x3, %r12d
testq %rbx, %rbx
je 0x5851
movq 0x38(%r13), %r15
xorl %r12d, %r12d
movq 0x20(%rsp), %rbp
movq (%r15,%r12,8), %rax
movq $0x0, 0x50(%rsp)
leaq 0x10a38(%rip), %rcx     # 0x15dd8
movq %rcx, 0x58(%rsp)
movq %rax, 0x60(%rsp)
movq %rax, 0x10(%rsp)
movups 0x50(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %rbp, %rdi
callq 0x43a6
incq %r12
cmpq %r12, %rbx
jne 0x538c
xorl %ebx, %ebx
movl 0x68(%rsp), %ebp
movl $0x3, %r12d
jmp 0x5857
movb $0x1, %r12b
movb 0x1f(%rsp), %al
movq %r15, %r8
jmp 0x6734
testb $0x40, %bl
leaq 0x10996(%rip), %r15     # 0x15d88
leaq 0x1089f(%rip), %rax     # 0x15c98
cmoveq %rax, %r15
jmp 0x5bff
movq $0x1, 0x10(%r13)
leaq 0x108af(%rip), %rax     # 0x15cc0
jmp 0x5422
movq $0x1, 0x10(%r13)
leaq 0x109b6(%rip), %rax     # 0x15dd8
movq %rax, 0x18(%r13)
jmp 0x571d
movl $0x3, %ebp
cmpl $0x2, %r15d
je 0x54fc
cmpl $0x1, %r15d
je 0x547e
testl %r15d, %r15d
jne 0x66c2
movq %r8, 0x28(%rsp)
orb $0x20, 0x2(%r13)
testq %r14, %r14
je 0x548b
leaq 0x109f1(%rip), %rsi     # 0x15e50
movq 0x20(%rsp), %rdi
movq %r14, %rdx
movl $0x1, %ecx
callq 0x6c77
testl %eax, %eax
movq 0x28(%rsp), %r8
jne 0x66c2
movq %r8, 0x28(%rsp)
movq %r14, %rbx
testq %r14, %r14
jne 0x5492
leaq 0x109be(%rip), %rbx     # 0x15e50
movq 0x28(%r13), %rax
xorl %r12d, %r12d
movq %r12, 0x30(%rsp)
movq %rbx, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movq %rax, 0x10(%rsp)
movups 0x30(%rsp), %xmm0
movups %xmm0, (%rsp)
movl %r15d, %ebp
movq 0x20(%rsp), %r15
movq %r15, %rdi
callq 0x43a6
movq 0x30(%r13), %rax
movq %r12, 0x50(%rsp)
movq %rbx, 0x58(%rsp)
movq %rax, 0x60(%rsp)
movq %rax, 0x10(%rsp)
movups 0x50(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r15, %rdi
movl %ebp, %r15d
movl $0x3, %ebp
callq 0x43a6
movq 0x28(%rsp), %r8
movq 0x28(%r13), %rax
movl $0x2, %r12d
cmpq $0x1, 0x10(%rax)
jne 0x66c2
movq 0x30(%r13), %rcx
cmpq $0x1, 0x10(%rcx)
jne 0x66c2
movq %r8, %rbx
movq 0x18(%rax), %rsi
movq 0x18(%rcx), %rdx
leaq 0x78(%rsp), %rcx
movq 0x20(%rsp), %rdi
callq 0xcb5f
movl $0x2, %r12d
testl %eax, %eax
jne 0x578a
testq %r14, %r14
movq %rbx, %r8
je 0x5572
movq 0x78(%rsp), %rdx
movq 0x20(%rsp), %rdi
movq %r14, %rsi
movl $0x1, %ecx
callq 0x6c77
movq %rbx, %r8
testl %eax, %eax
jne 0x66c2
movq 0x78(%rsp), %rax
movq $0x1, 0x10(%r13)
movq %rax, 0x18(%r13)
jmp 0x4cd5
movb $0x1, %al
movq 0x20(%r13), %rbx
testb %al, %al
jne 0x55bf
cmpq $0x1, 0x10(%rbx)
je 0x55bf
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movq %rbx, 0x40(%rsp)
movq %rbx, 0x10(%rsp)
movups %xmm0, (%rsp)
movq 0x20(%rsp), %rdi
movq %r8, %r12
callq 0x43a6
movq %r12, %r8
movl $0x1, %r12d
cmpq $0x1, 0x10(%rbx)
jne 0x5d08
movq %r8, 0x28(%rsp)
movq 0x20(%r13), %rax
movq 0x18(%rax), %rsi
leaq 0x78(%rsp), %rdx
movq 0x20(%rsp), %rdi
callq 0x6b4e
movl $0x2, %r12d
testl %eax, %eax
jne 0x5d03
movq 0x78(%rsp), %rax
cmpw $0x8, (%rax)
jne 0x5cdb
movq 0x30(%rax), %rdx
movq 0x38(%rax), %rcx
testq %rdx, %rdx
movq 0x28(%rsp), %r8
je 0x5634
xorl %esi, %esi
movq (%rcx,%rsi,8), %rdi
cmpq $0x1, 0x10(%rdi)
jne 0x5d08
incq %rsi
cmpq %rsi, %rdx
jne 0x561d
movq (%rcx), %rcx
movq $0x1, 0x10(%r13)
movq %rcx, 0x18(%r13)
movq 0x20(%rax), %rsi
movq 0x28(%rax), %rbx
testq %rsi, %rsi
je 0x5669
xorl %eax, %eax
movq (%rbx,%rax,8), %rcx
cmpq $0x1, 0x10(%rcx)
jne 0x5d08
incq %rax
cmpq %rax, %rsi
jne 0x5652
cmpq %rsi, 0x28(%r13)
jne 0x60be
movl $0x3, %r12d
testq %rsi, %rsi
je 0x5d08
movl %r15d, 0x74(%rsp)
movq 0x30(%r13), %rax
movq %rax, 0x68(%rsp)
xorl %ebp, %ebp
movq (%rbx,%rbp,8), %rax
movq 0x68(%rsp), %rcx
movq (%rcx,%rbp,8), %rcx
movq $0x0, 0x50(%rsp)
movq %rax, 0x58(%rsp)
movq %rcx, 0x60(%rsp)
movq %rcx, 0x10(%rsp)
movups 0x50(%rsp), %xmm0
movups %xmm0, (%rsp)
movq 0x20(%rsp), %rdi
movq %rsi, %r15
callq 0x43a6
movq %r15, %rsi
incq %rbp
cmpq %rbp, %r15
jne 0x5692
movq 0x28(%rsp), %r8
movl 0x74(%rsp), %r15d
jmp 0x5d08
movq 0x30(%rsp), %r15
cmpw $0x11, (%r15)
jne 0x5bcb
movb $0x1, %bpl
testb $0x60, 0x20(%r15)
jne 0x5bf3
leaq 0xc28e(%rip), %rcx      # 0x1199a
jmp 0x5bd2
movq $0x1, 0x10(%r13)
movq %r15, 0x18(%r13)
movb $0x1, %r12b
movb 0x1f(%rsp), %al
movq %rbp, %r8
jmp 0x6734
xorl %ebx, %ebx
jmp 0x50f8
xorl %r12d, %r12d
jmp 0x647c
xorl %ebp, %ebp
jmp 0x5b58
movl $0x2, %ebp
cmpl $0x1, %r15d
je 0x618a
testl %r15d, %r15d
jne 0x66c2
movq %r8, %rbx
testq %r14, %r14
je 0x6151
leaq 0x1070b(%rip), %rsi     # 0x15e78
movq 0x20(%rsp), %rdi
movq %r14, %rdx
movl $0x1, %ecx
callq 0x6c77
movq %r14, %rcx
testl %eax, %eax
je 0x6158
movq %rbx, %r8
jmp 0x66c2
movl $0x2, %ebp
cmpl $0x1, %r15d
je 0x61f6
testl %r15d, %r15d
jne 0x66c2
movq %r8, %rbx
orb $0x10, 0x2(%r13)
testq %r14, %r14
je 0x61bf
movq 0x20(%rsp), %r12
movq (%r12), %rdi
movl $0x30, %esi
callq 0x95e6
movl $0x10, (%rax)
movl 0x1039e(%rip), %ecx     # 0x15b78
leal 0x1(%rcx), %edx
movl %edx, 0x10395(%rip)     # 0x15b78
movl %ecx, 0x4(%rax)
movq $0x0, 0x8(%rax)
movw $0x1, 0x2(%rax)
movq $0x1, 0x10(%rax)
leaq 0x105d5(%rip), %rcx     # 0x15dd8
movq %rcx, 0x18(%rax)
movq $0x3, 0x20(%rax)
movq %r14, 0x28(%rax)
jmp 0x61c6
xorl %ebx, %ebx
testq %r14, %r14
je 0x62c5
movq %r8, 0x28(%rsp)
leaq 0x30(%rsp), %rdx
movq 0x20(%rsp), %rdi
movq %r14, %rsi
callq 0x6b4e
xorl %r12d, %r12d
testl %eax, %eax
je 0x609b
xorl %ebp, %ebp
jmp 0x62b2
jmp 0x66c2
xorl %ebx, %ebx
movl 0x68(%rsp), %ebp
testb %bl, %bl
movq 0x28(%rsp), %r8
je 0x58c1
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rbx
movq 0x10(%rbx), %rax
cmpq %rax, (%rbx)
jne 0x589d
movq 0x102f7(%rip), %rcx     # 0x15b70
movq 0x102e8(%rip), %rdx     # 0x15b68
shlq $0x2, %rax
testq %rax, %rax
movl $0x4, %esi
cmovneq %rax, %rsi
movq %rbx, %rdi
callq 0xefbb
movq 0x28(%rsp), %r8
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
leaq (%rax,%rax,2), %rax
movl $0x0, (%rcx,%rax,8)
movl %r12d, 0x4(%rcx,%rax,8)
movq %r14, 0x8(%rcx,%rax,8)
movq %r13, 0x10(%rcx,%rax,8)
incq (%rbx)
cmpl %ebp, %r12d
jmp 0x672c
movb $0x1, %r12b
movq %r8, %rbx
cmpq $0x1, %rcx
jne 0x5907
movq (%rax), %rax
movq 0x18(%r13), %rcx
movq $0x0, 0x30(%rsp)
movq %rax, 0x38(%rsp)
movq %rcx, 0x40(%rsp)
movq %rcx, 0x10(%rsp)
movups 0x30(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
callq 0x43a6
jmp 0x591a
leaq 0xbe9e(%rip), %rdi      # 0x117ac
xorl %eax, %eax
callq 0x4261
movb $0x0, 0x10(%r14)
movb 0x1f(%rsp), %al
movq %rbx, %r8
jmp 0x6734
testq %r14, %r14
je 0x600c
leaq 0x10542(%rip), %rsi     # 0x15e78
movl $0x1, %ebp
movq 0x20(%rsp), %rdi
movq %r14, %rdx
movl $0x1, %ecx
movq %r8, %rbx
callq 0x6c77
movq %rbx, %r8
movq %r14, %rbx
testl %eax, %eax
jne 0x66c2
jmp 0x6013
movl 0x8(%r13), %esi
movl 0xc(%r13), %edx
leaq 0xb3f6(%rip), %rdi      # 0x10d68
leaq 0xbd7a(%rip), %rcx      # 0x116f3
xorl %r15d, %r15d
xorl %eax, %eax
movq %r8, %r12
callq 0x4261
movq %r12, %r8
movq 0x20(%rsp), %rax
movb $0x0, 0x10(%rax)
jmp 0x5999
movb $0x1, %r15b
movb $0x1, %bl
movl $0x2, %ebp
movl %ebx, %eax
testb %r15b, %r15b
movq 0x20(%rsp), %r15
je 0x59e2
movq 0x10(%r13), %rcx
leaq -0x1(%rcx), %rdx
cmpq $0x4, %rdx
jae 0x59e6
movl 0x8(%r13), %esi
movl 0xc(%r13), %edx
leaq 0xb3a1(%rip), %rdi      # 0x10d68
leaq 0xbd9e(%rip), %rcx      # 0x1176c
xorl %eax, %eax
movq %r8, %rbx
callq 0x4261
movq %rbx, %r8
movb $0x0, 0x10(%r15)
jmp 0x5a43
movb $0x1, %bl
jmp 0x5a4a
testq %rcx, %rcx
jne 0x5a43
movq 0x20(%r13), %rcx
cmpq $0x1, 0x10(%rcx)
je 0x5a31
testb %al, %al
je 0x5a31
movq 0x18(%r13), %rax
movq 0x18(%rax), %rax
movq $0x0, 0x50(%rsp)
movq %rax, 0x58(%rsp)
movq %rcx, 0x60(%rsp)
movq %rcx, 0x10(%rsp)
movups 0x50(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r15, %rdi
movq %r8, %rbx
callq 0x43a6
movq %rbx, %r8
movq 0x20(%r13), %rax
movl $0x3, %ebp
cmpq $0x1, 0x10(%rax)
movb $0x1, %bl
jne 0x5a4a
movl $0x4, %ebp
xorl %ebx, %ebx
testb %bl, %bl
je 0x5aae
movq 0x8(%r15), %rbx
movq 0x10(%rbx), %rax
cmpq %rax, (%rbx)
jne 0x5a87
movq 0x1010e(%rip), %rcx     # 0x15b70
movq 0x100ff(%rip), %rdx     # 0x15b68
shlq $0x2, %rax
testq %rax, %rax
movl $0x4, %esi
cmovneq %rax, %rsi
movq %rbx, %rdi
movq %r8, %r15
callq 0xefbb
movq %r15, %r8
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
leaq (%rax,%rax,2), %rax
movl $0x0, (%rcx,%rax,8)
movl %ebp, 0x4(%rcx,%rax,8)
movq $0x0, 0x8(%rcx,%rax,8)
movq %r13, 0x10(%rcx,%rax,8)
incq (%rbx)
cmpl %r14d, %ebp
jmp 0x672c
movl $0x10, %r10d
movq 0x20(%rsp), %rdi
cmpl $0x10, %r10d
jne 0x5b30
movq 0x28(%r13), %rcx
testq %rcx, %rcx
je 0x5b00
movq 0x30(%r13), %rdx
xorl %esi, %esi
movq (%rax,%rsi,8), %r9
testq %r9, %r9
je 0x689b
movq (%rdx,%rsi,8), %r8
testq %r8, %r8
je 0x5af8
movq $0x1, 0x10(%r8)
movq %r9, 0x18(%r8)
incq %rsi
cmpq %rsi, %rcx
jne 0x5ad6
movq 0x48(%r13), %rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x150(%rsp)
movq %rax, 0x160(%rsp)
movq %rax, 0x10(%rsp)
movaps 0x150(%rsp), %xmm0
movups %xmm0, (%rsp)
callq 0x43a6
xorl %r10d, %r10d
movl $0x2, %ebp
testl %r10d, %r10d
jne 0x5b58
movq 0x18(%r13), %rdx
movq 0x20(%rsp), %rdi
movq %r14, %rsi
movl $0x1, %ecx
callq 0x6c77
xorl %ebp, %ebp
cmpl $0x1, %eax
adcl $0x3, %ebp
cmpl $0x3, %ebp
movq 0x28(%rsp), %r8
ja 0x5bc2
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rbx
movq 0x10(%rbx), %rax
cmpq %rax, (%rbx)
jne 0x5b9f
movq 0xfff5(%rip), %rcx      # 0x15b70
movq 0xffe6(%rip), %rdx      # 0x15b68
shlq $0x2, %rax
testq %rax, %rax
movl $0x4, %esi
cmovneq %rax, %rsi
movq %rbx, %rdi
callq 0xefbb
movq 0x28(%rsp), %r8
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
leaq (%rax,%rax,2), %rax
movl $0x0, (%rcx,%rax,8)
movl %ebp, 0x4(%rcx,%rax,8)
movq %r14, 0x8(%rcx,%rax,8)
movq %r13, 0x10(%rcx,%rax,8)
incq (%rbx)
cmpl 0x68(%rsp), %ebp
jmp 0x672c
leaq 0xbe5e(%rip), %rcx      # 0x11a30
movl 0x8(%r14), %esi
movl 0xc(%r14), %edx
leaq 0xb187(%rip), %rdi      # 0x10d68
xorl %ebp, %ebp
xorl %eax, %eax
callq 0x4261
movq 0x20(%rsp), %rax
movb $0x0, 0x10(%rax)
testb %bpl, %bpl
movq %r12, %r8
je 0x63dd
movq 0x20(%r15), %rcx
movl %ecx, %eax
andl $0x7, %eax
testb $0x40, %bl
jne 0x5c2f
testb $0x20, %cl
movq 0x20(%rsp), %r15
jne 0x5c66
movl 0x8(%r13), %esi
movl 0xc(%r13), %edx
leaq 0xb142(%rip), %rdi      # 0x10d68
leaq 0xbe77(%rip), %rcx      # 0x11aa4
jmp 0x5c4f
testb $0x40, %cl
movq 0x20(%rsp), %r15
jne 0x5ca0
movl 0x8(%r13), %esi
movl 0xc(%r13), %edx
leaq 0xb120(%rip), %rdi      # 0x10d68
leaq 0xbdf9(%rip), %rcx      # 0x11a48
xorl %eax, %eax
movq %r8, %rbx
callq 0x4261
movq %rbx, %r8
movb $0x0, 0x10(%r15)
jmp 0x63dd
andl $0x18, %ecx
cmpl $0x10, %ecx
jne 0x5e2f
cmpq $0x4, %rax
ja 0x6a6c
leaq 0xa479(%rip), %rcx      # 0x100fc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq $0x1, 0x10(%r13)
leaq 0xff5d(%rip), %rax      # 0x15bf8
jmp 0x63d9
testq %rax, %rax
je 0x5cc7
cmpl $0x4, %eax
je 0x5cc7
cmpl $0x3, %eax
jne 0x6a0f
movq $0x1, 0x10(%r13)
leaq 0x1009e(%rip), %rax     # 0x15d60
jmp 0x63d9
movq $0x1, 0x10(%r13)
leaq 0x100b2(%rip), %rax     # 0x15d88
jmp 0x63d9
movq 0x20(%r13), %rax
leaq 0xbb50(%rip), %rcx      # 0x11836
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
leaq 0xb075(%rip), %rdi      # 0x10d68
xorl %eax, %eax
callq 0x4261
movq 0x20(%rsp), %rax
movb $0x0, 0x10(%rax)
movq 0x28(%rsp), %r8
cmpl $0x2, %r12d
jbe 0x66c7
jmp 0x6729
movq 0x20(%r13), %rax
movl 0x8(%r13), %esi
movl 0xc(%r13), %edx
movq (%rax), %rcx
movq 0x8(%rax), %r8
leaq 0xbe90(%rip), %rdi      # 0x11bc1
xorl %eax, %eax
callq 0x4261
movq 0x20(%rsp), %rax
movb $0x0, 0x10(%rax)
testq %r15, %r15
movb 0x1f(%rsp), %al
movq 0x28(%rsp), %r8
je 0x5dba
movq 0x28(%r13), %rax
andq $-0x8, %rax
movl $0x1, %ebp
cmpq $0x1, 0x10(%rax)
jne 0x5db6
movq 0x28(%r13), %r15
andq $-0x8, %r15
testq %r14, %r14
je 0x5d99
movq 0x18(%r15), %rdx
movq 0x20(%rsp), %rdi
movq %r14, %rsi
movl $0x1, %ecx
movq %r8, %rbp
callq 0x6c77
movq %rbp, %r8
movl $0x2, %ebp
testl %eax, %eax
movb 0x1f(%rsp), %al
jne 0x5dba
movq 0x18(%r15), %rax
movq $0x1, 0x10(%r13)
movq %rax, 0x18(%r13)
movb 0x1f(%rsp), %al
movl $0x3, %ebp
xorl %ebx, %ebx
jmp 0x5dba
movb 0x1f(%rsp), %al
testb %bl, %bl
je 0x5e23
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rbx
movq 0x10(%rbx), %rax
cmpq %rax, (%rbx)
jne 0x5dfc
movq 0xfd99(%rip), %rcx      # 0x15b70
movq 0xfd8a(%rip), %rdx      # 0x15b68
shlq $0x2, %rax
testq %rax, %rax
movl $0x4, %esi
cmovneq %rax, %rsi
movq %rbx, %rdi
movq %r8, %r15
callq 0xefbb
movq %r15, %r8
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
leaq (%rax,%rax,2), %rax
movl $0x0, (%rcx,%rax,8)
movl %ebp, 0x4(%rcx,%rax,8)
movq %r14, 0x8(%rcx,%rax,8)
movq %r13, 0x10(%rcx,%rax,8)
incq (%rbx)
movb 0x1f(%rsp), %al
cmpl %r12d, %ebp
setne %r12b
jmp 0x6734
cmpq $0x4, %rax
ja 0x6a8b
leaq 0xa2a8(%rip), %rcx      # 0x100e8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq $0x1, 0x10(%r13)
leaq 0xfe40(%rip), %rax      # 0x15c98
jmp 0x63d9
xorl %eax, %eax
movq $0x0, 0x50(%rsp)
movq %rax, 0x58(%rsp)
movq %rcx, 0x60(%rsp)
movq %rcx, 0x10(%rsp)
movups 0x50(%rsp), %xmm0
movups %xmm0, (%rsp)
movq 0x20(%rsp), %r12
movq %r12, %rdi
callq 0x43a6
movq %r15, %r8
movq 0x58(%r13), %rax
testq %rax, %rax
je 0x5eb8
movl $0x2, %ebp
cmpq $0x1, 0x10(%rax)
jne 0x5ee1
testq %rax, %rax
je 0x5eb8
movq 0x38(%r13), %rcx
andl $0x7, %ecx
orq %rax, %rcx
movq %rcx, 0x38(%r13)
movq 0x50(%r13), %rax
testq %rax, %rax
jne 0x5ece
movq 0x58(%r13), %rax
testq %rax, %rax
je 0x5eda
movq 0x18(%rax), %rax
movq $0x1, 0x20(%r13)
movq %rax, 0x28(%r13)
movl $0x3, %ebp
xorl %ebx, %ebx
testb %bl, %bl
je 0x5f46
movq 0x8(%r12), %rbx
movq 0x10(%rbx), %rax
cmpq %rax, (%rbx)
jne 0x5f1f
movq 0xfc76(%rip), %rcx      # 0x15b70
movq 0xfc67(%rip), %rdx      # 0x15b68
shlq $0x2, %rax
testq %rax, %rax
movl $0x4, %esi
cmovneq %rax, %rsi
movq %rbx, %rdi
movq %r8, %r15
callq 0xefbb
movq %r15, %r8
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
leaq (%rax,%rax,2), %rax
movl $0x0, (%rcx,%rax,8)
movl %ebp, 0x4(%rcx,%rax,8)
movq $0x0, 0x8(%rcx,%rax,8)
movq %r13, 0x10(%rcx,%rax,8)
incq (%rbx)
cmpl %r14d, %ebp
jmp 0x672c
xorl %ebp, %ebp
jmp 0x66c2
movl $0x2, %ebp
cmpl $0x1, %r15d
je 0x65fd
testl %r15d, %r15d
jne 0x66c2
movq %r8, %r12
orb $0x10, 0x2(%r13)
testq %r14, %r14
je 0x6593
movq 0x20(%rsp), %rbp
movq (%rbp), %rdi
movl $0x30, %esi
callq 0x95e6
movl $0x10, (%rax)
movl 0xfbdb(%rip), %ecx      # 0x15b78
leal 0x1(%rcx), %edx
movl %edx, 0xfbd2(%rip)      # 0x15b78
movl %ecx, 0x4(%rax)
movq $0x0, 0x8(%rax)
movw $0x1, 0x2(%rax)
movq $0x1, 0x10(%rax)
leaq 0xfe12(%rip), %rcx      # 0x15dd8
movq %rcx, 0x18(%rax)
movq $0x3, 0x20(%rax)
movq %r14, 0x28(%rax)
jmp 0x659a
andl $0x7, %eax
cmpq $0x4, %rax
ja 0x6aaa
leaq 0xa0c1(%rip), %rcx      # 0x100b0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq $0x1, 0x10(%r13)
leaq 0xfcb9(%rip), %rax      # 0x15cc0
jmp 0x651c
leaq 0xfcad(%rip), %rbx      # 0x15cc0
orb $0x20, 0x2(%r13)
movq 0x28(%r13), %rax
xorl %ecx, %ecx
movq %rcx, 0x30(%rsp)
movq %rbx, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movq %rax, 0x10(%rsp)
movups 0x30(%rsp), %xmm0
movups %xmm0, (%rsp)
movl %r15d, %r12d
movq 0x20(%rsp), %r15
movq %r15, %rdi
movq %r8, %rbp
callq 0x43a6
movq 0x30(%r13), %rax
xorl %ecx, %ecx
movq %rcx, 0x50(%rsp)
movq %rbx, 0x58(%rsp)
movq %rax, 0x60(%rsp)
movq %rax, 0x10(%rsp)
movups 0x50(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r15, %rdi
movl %r12d, %r15d
callq 0x43a6
movq %rbp, %r8
movq $0x1, 0x10(%r13)
movq %rbx, 0x18(%r13)
movl $0x1, %ebp
movl $0x1, %r12d
jmp 0x66c2
movq 0x30(%rsp), %rax
cmpw $0x10, (%rax)
jne 0x6279
cmpq $0x3, 0x20(%rax)
jne 0x6a4d
movq 0x28(%rax), %rbx
jmp 0x62af
leaq 0xb784(%rip), %rcx      # 0x11849
movq %r13, %rax
jmp 0x5ce6
cmpw $0x10, 0x68(%rsp)
je 0x6459
addq $0x30, %rdx
leaq 0x28(%r13), %rax
movq (%rdx), %rdi
movq (%rax), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x9988
testq %rax, %rax
je 0x644f
movq %rax, 0x30(%r13)
movw $0x10, %ax
cmpw $0x10, 0x68(%rsp)
je 0x6114
movq 0x20(%r13), %rax
movzwl 0x2(%rax), %eax
andl $0x30, %eax
orw %ax, 0x2(%r13)
movq %rbp, %r8
movb $0x1, %bpl
movq 0x30(%r13), %rax
movl $0x3, %r12d
cmpq $0x1, 0x10(%rax)
jne 0x647c
movq 0x18(%rax), %rax
movq $0x1, 0x10(%r13)
movq %rax, 0x18(%r13)
movl $0x4, %r12d
xorl %ebp, %ebp
jmp 0x647c
leaq 0xfb68(%rip), %rcx      # 0x15cc0
movq 0x28(%r13), %rax
movq $0x0, 0x30(%rsp)
movq %rcx, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movq %rax, 0x10(%rsp)
movups 0x30(%rsp), %xmm0
movups %xmm0, (%rsp)
movq 0x20(%rsp), %rdi
callq 0x43a6
movq %rbx, %r8
movq 0x28(%r13), %rax
movl $0x1, %r12d
cmpq $0x1, 0x10(%rax)
jne 0x66c2
movq 0x18(%rax), %rax
movq $0x1, 0x10(%r13)
movq %rax, 0x18(%r13)
movl $0x2, %ebp
movl $0x2, %r12d
jmp 0x66c2
xorl %eax, %eax
movq 0x20(%rsp), %r12
movq 0x28(%r13), %rcx
movq $0x0, 0x30(%rsp)
movq %rax, 0x38(%rsp)
movq %rcx, 0x40(%rsp)
movq %rcx, 0x10(%rsp)
movups 0x30(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r12, %rdi
callq 0x43a6
movq %rbx, %r8
movq 0x28(%r13), %rax
movl $0x1, %r12d
cmpq $0x1, 0x10(%rax)
jne 0x66c2
movq %r8, %rbp
movq 0x18(%rax), %rsi
leaq 0x50(%rsp), %rdx
movq 0x20(%rsp), %rdi
callq 0x6b4e
movl $0x1, %r12d
testl %eax, %eax
jne 0x66ba
movq 0x50(%rsp), %rbx
cmpw $0x10, (%rbx)
jne 0x6692
leaq 0xfb93(%rip), %rax      # 0x15dd8
cmpq %rax, 0x18(%rbx)
jne 0x6ac9
cmpq $0x3, 0x20(%rbx)
je 0x665d
leaq 0xb8d4(%rip), %rdi      # 0x11b35
leaq 0xab32(%rip), %rsi      # 0x10d9a
leaq 0xb87f(%rip), %rcx      # 0x11aee
movl $0x523, %edx            # imm = 0x523
callq 0x3080
leaq 0xfb58(%rip), %rbx      # 0x15dd8
cmpq %rbx, %rax
je 0x62af
movl 0x8(%r13), %esi
movl 0xc(%r13), %edx
leaq 0xaad4(%rip), %rdi      # 0x10d68
leaq 0xb8eb(%rip), %rcx      # 0x11b86
xorl %ebp, %ebp
xorl %eax, %eax
callq 0x4261
movq 0x20(%rsp), %rax
movb $0x0, 0x10(%rax)
jmp 0x62b2
movb $0x1, %bpl
movq 0x28(%rsp), %r8
testb %bpl, %bpl
movl $0x2, %ebp
je 0x66c2
movl $0x2, %ebp
cmpl $0x1, %r15d
je 0x630e
testl %r15d, %r15d
jne 0x636d
movq 0x28(%r13), %rax
movq $0x0, 0x30(%rsp)
movq %rbx, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movq %rax, 0x10(%rsp)
movups 0x30(%rsp), %xmm0
movups %xmm0, (%rsp)
movq 0x20(%rsp), %rdi
movq %r8, %r12
callq 0x43a6
movq %r12, %r8
movq 0x28(%r13), %rax
movl $0x1, %r12d
cmpq $0x1, 0x10(%rax)
jne 0x66c2
leaq 0xfaae(%rip), %rbp      # 0x15dd8
cmpq %rbp, %rbx
je 0x6349
movzwl 0x2(%rax), %ecx
shrl $0x4, %ecx
andl $0x3, %ecx
leaq 0x9d98(%rip), %rdx      # 0x100d8
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
cmpq %rbp, 0x18(%rax)
je 0x6756
testq %r14, %r14
je 0x6798
movq $0x1, 0x10(%r13)
movq %r14, 0x18(%r13)
jmp 0x61af
xorl %r12d, %r12d
jmp 0x66c2
movq $0x1, 0x10(%r13)
leaq 0xf84c(%rip), %rax      # 0x15bd0
jmp 0x63d9
movq $0x1, 0x10(%r13)
leaq 0xf8db(%rip), %rax      # 0x15c70
jmp 0x63d9
movq $0x1, 0x10(%r13)
leaq 0xf7da(%rip), %rax      # 0x15b80
jmp 0x63d9
movq $0x1, 0x10(%r13)
leaq 0xf869(%rip), %rax      # 0x15c20
jmp 0x63d9
movq $0x1, 0x10(%r13)
leaq 0xf7e0(%rip), %rax      # 0x15ba8
jmp 0x63d9
movq $0x1, 0x10(%r13)
leaq 0xf86f(%rip), %rax      # 0x15c48
movq %rax, 0x18(%r13)
cmpq $0x1, 0x10(%r13)
sete %r12b
je 0x6730
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rbx
movq 0x10(%rbx), %rax
cmpq %rax, (%rbx)
jne 0x642a
movq 0xf76b(%rip), %rcx      # 0x15b70
movq 0xf75c(%rip), %rdx      # 0x15b68
shlq $0x2, %rax
testq %rax, %rax
movl $0x4, %esi
cmovneq %rax, %rsi
movq %rbx, %rdi
movq %r8, %r15
callq 0xefbb
movq %r15, %r8
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
leaq (%rax,%rax,2), %rax
movq $0x0, (%rcx,%rax,8)
movq %r14, 0x8(%rcx,%rax,8)
movq %r13, 0x10(%rcx,%rax,8)
incq (%rbx)
jmp 0x6730
leaq 0xb477(%rip), %rcx      # 0x118cd
movq %r13, %rbx
movl 0x8(%rbx), %esi
movl 0xc(%rbx), %edx
leaq 0xa902(%rip), %rdi      # 0x10d68
xorl %eax, %eax
callq 0x4261
movq 0x20(%rsp), %rax
movb $0x0, 0x10(%rax)
movq %rbp, %r8
movb $0x1, %bpl
testb %bpl, %bpl
je 0x64e3
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rbx
movq 0x10(%rbx), %rax
cmpq %rax, (%rbx)
jne 0x64bf
movq 0xf6d6(%rip), %rcx      # 0x15b70
movq 0xf6c7(%rip), %rdx      # 0x15b68
shlq $0x2, %rax
testq %rax, %rax
movl $0x4, %esi
cmovneq %rax, %rsi
movq %rbx, %rdi
movq %r8, %rbp
callq 0xefbb
movq %rbp, %r8
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
leaq (%rax,%rax,2), %rax
movl $0x0, (%rcx,%rax,8)
movl %r12d, 0x4(%rcx,%rax,8)
movq %r14, 0x8(%rcx,%rax,8)
movq %r13, 0x10(%rcx,%rax,8)
incq (%rbx)
cmpl %r15d, %r12d
jmp 0x672c
movq $0x1, 0x10(%r13)
leaq 0xf83e(%rip), %rax      # 0x15d38
jmp 0x651c
movq $0x1, 0x10(%r13)
leaq 0xf7dd(%rip), %rax      # 0x15ce8
jmp 0x651c
movq $0x1, 0x10(%r13)
leaq 0xf7f4(%rip), %rax      # 0x15d10
movq %rax, 0x18(%r13)
movb $0x1, %r12b
testl %r15d, %r15d
movb 0x1f(%rsp), %al
je 0x6734
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rbx
movq 0x10(%rbx), %rax
cmpq %rax, (%rbx)
jne 0x656b
movq 0xf627(%rip), %rcx      # 0x15b70
movq 0xf618(%rip), %rdx      # 0x15b68
shlq $0x2, %rax
testq %rax, %rax
movl $0x4, %esi
cmovneq %rax, %rsi
movq %rbx, %rdi
callq 0xefbb
movq %rbp, %r8
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
leaq (%rax,%rax,2), %rax
movq $0x0, (%rcx,%rax,8)
movq %r14, 0x8(%rcx,%rax,8)
movq %r13, 0x10(%rcx,%rax,8)
incq (%rbx)
xorl %r12d, %r12d
jmp 0x6730
xorl %eax, %eax
movq 0x20(%rsp), %rbp
movq 0x28(%r13), %rcx
xorl %ebx, %ebx
movq %rbx, 0x30(%rsp)
movq %rax, 0x38(%rsp)
movq %rcx, 0x40(%rsp)
movq %rcx, 0x10(%rsp)
movups 0x30(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %rbp, %rdi
callq 0x43a6
movq 0x30(%r13), %rax
movq %rbx, 0x50(%rsp)
leaq 0xf87b(%rip), %rcx      # 0x15e50
movq %rcx, 0x58(%rsp)
movq %rax, 0x60(%rsp)
movq %rax, 0x10(%rsp)
movups 0x50(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %rbp, %rdi
callq 0x43a6
movq %r12, %r8
movl $0x2, %ebp
movq 0x28(%r13), %rax
movl $0x1, %r12d
cmpq $0x1, 0x10(%rax)
jne 0x66c2
movq %r8, %rbp
movq 0x18(%rax), %rsi
leaq 0x78(%rsp), %rdx
movq 0x20(%rsp), %rdi
callq 0x6b4e
movl $0x1, %r12d
testl %eax, %eax
jne 0x66ba
movq 0x78(%rsp), %rbx
cmpw $0x10, (%rbx)
jne 0x6692
leaq 0xf790(%rip), %rax      # 0x15dd8
cmpq %rax, 0x18(%rbx)
jne 0x6b07
cmpq $0x3, 0x20(%rbx)
jne 0x6b26
movq 0x28(%rbx), %rdx
movq 0x20(%rsp), %rdi
movq %r14, %rsi
movl $0x1, %ecx
callq 0x6c77
testl %eax, %eax
movq %rbp, %r8
jne 0x66bd
movq 0x28(%rbx), %rax
movq $0x1, 0x10(%r13)
movq %rax, 0x18(%r13)
movl $0x2, %r12d
jmp 0x66bd
movq 0x28(%r13), %rax
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
leaq 0xa6c5(%rip), %rdi      # 0x10d68
leaq 0xb23b(%rip), %rcx      # 0x118e5
xorl %eax, %eax
callq 0x4261
movq 0x20(%rsp), %rax
movb $0x0, 0x10(%rax)
movq %rbp, %r8
movl $0x2, %ebp
cmpl %ebp, %r12d
jae 0x6729
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rbx
movq 0x10(%rbx), %rax
cmpq %rax, (%rbx)
jne 0x6705
movq 0xf490(%rip), %rcx      # 0x15b70
movq 0xf481(%rip), %rdx      # 0x15b68
shlq $0x2, %rax
testq %rax, %rax
movl $0x4, %esi
cmovneq %rax, %rsi
movq %rbx, %rdi
movq %r8, %rbp
callq 0xefbb
movq %rbp, %r8
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
leaq (%rax,%rax,2), %rax
movl $0x0, (%rcx,%rax,8)
movl %r12d, 0x4(%rcx,%rax,8)
movq %r14, 0x8(%rcx,%rax,8)
movq %r13, 0x10(%rcx,%rax,8)
incq (%rbx)
cmpl %r15d, %r12d
setne %r12b
movb 0x1f(%rsp), %al
movzbl %al, %ecx
movzbl %r12b, %eax
testb $0x1, %r8b
cmovnel %ecx, %eax
andb $0x1, %al
addq $0x208, %rsp            # imm = 0x208
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq $0x1, 0x10(%r13)
movq %rbp, 0x18(%r13)
jmp 0x61af
movl 0x8(%r13), %esi
movl 0xc(%r13), %edx
leaq 0xa5f2(%rip), %rdi      # 0x10d68
leaq 0xb422(%rip), %rcx      # 0x11b9f
xorl %eax, %eax
movq %r8, %rbx
callq 0x4261
movq %rbx, %r8
movq 0x20(%rsp), %rax
movb $0x0, 0x10(%rax)
jmp 0x66bd
movq 0x20(%rsp), %rax
movq (%rax), %rdi
movl $0x30, %esi
movq %r8, %rbx
callq 0x95e6
movq %rbx, %r8
movl $0x10, (%rax)
movl 0xf3bc(%rip), %ecx      # 0x15b78
leal 0x1(%rcx), %edx
movl %edx, 0xf3b3(%rip)      # 0x15b78
movl %ecx, 0x4(%rax)
movq $0x0, 0x8(%rax)
movw $0x1, 0x2(%rax)
movl $0x1, %ecx
movq %rcx, 0x10(%rax)
movq %rbp, 0x18(%rax)
movq $0x3, 0x20(%rax)
movq 0x28(%r13), %rdx
movq 0x18(%rdx), %rdx
movq %rdx, 0x28(%rax)
movq %rcx, 0x10(%r13)
jmp 0x61ab
leaq 0xa5bd(%rip), %rdi      # 0x10dc4
leaq 0xa58c(%rip), %rsi      # 0x10d9a
leaq 0xa5bf(%rip), %rcx      # 0x10dd4
movl $0x8f, %edx
callq 0x3080
leaq 0xa59e(%rip), %rdi      # 0x10dc4
leaq 0xa56d(%rip), %rsi      # 0x10d9a
leaq 0xa5a0(%rip), %rcx      # 0x10dd4
movl $0x6b, %edx
callq 0x3080
leaq 0xa57f(%rip), %rdi      # 0x10dc4
leaq 0xa54e(%rip), %rsi      # 0x10d9a
leaq 0xa581(%rip), %rcx      # 0x10dd4
movl $0x75, %edx
callq 0x3080
leaq 0xa46c(%rip), %rdi      # 0x10cd0
leaq 0xa52f(%rip), %rsi      # 0x10d9a
leaq 0xa562(%rip), %rcx      # 0x10dd4
movl $0xe2, %edx
callq 0x3080
leaq 0xaf48(%rip), %rdi      # 0x117cb
leaq 0xa510(%rip), %rsi      # 0x10d9a
leaq 0xaf4a(%rip), %rcx      # 0x117db
movl $0x1ef, %edx            # imm = 0x1EF
callq 0x3080
leaq 0xaf81(%rip), %rdi      # 0x11823
leaq 0xa4f1(%rip), %rsi      # 0x10d9a
leaq 0xaf2b(%rip), %rcx      # 0x117db
movl $0x222, %edx            # imm = 0x222
callq 0x3080
leaq 0xaf5e(%rip), %rdi      # 0x1181f
leaq 0xa4d2(%rip), %rsi      # 0x10d9a
leaq 0xaf0c(%rip), %rcx      # 0x117db
movl $0x214, %edx            # imm = 0x214
callq 0x3080
leaq 0xa54e(%rip), %rdi      # 0x10e2e
leaq 0xa4b3(%rip), %rsi      # 0x10d9a
leaq 0xa4e6(%rip), %rcx      # 0x10dd4
movl $0xc2, %edx
callq 0x3080
leaq 0xa4c5(%rip), %rdi      # 0x10dc4
leaq 0xa494(%rip), %rsi      # 0x10d9a
leaq 0xa4c7(%rip), %rcx      # 0x10dd4
movl $0x9e, %edx
callq 0x3080
leaq 0xa4a6(%rip), %rdi      # 0x10dc4
leaq 0xa475(%rip), %rsi      # 0x10d9a
leaq 0xa4a8(%rip), %rcx      # 0x10dd4
movl $0xa3, %edx
callq 0x3080
leaq 0xa487(%rip), %rdi      # 0x10dc4
leaq 0xa456(%rip), %rsi      # 0x10d9a
leaq 0xa489(%rip), %rcx      # 0x10dd4
movl $0x61, %edx
callq 0x3080
leaq 0xa468(%rip), %rdi      # 0x10dc4
leaq 0xa437(%rip), %rsi      # 0x10d9a
leaq 0xa46a(%rip), %rcx      # 0x10dd4
movl $0x5c, %edx
callq 0x3080
leaq 0xa4b3(%rip), %rdi      # 0x10e2e
leaq 0xa418(%rip), %rsi      # 0x10d9a
leaq 0xa44b(%rip), %rcx      # 0x10dd4
movl $0xdd, %edx
callq 0x3080
leaq 0xa494(%rip), %rdi      # 0x10e2e
leaq 0xa3f9(%rip), %rsi      # 0x10d9a
leaq 0xa42c(%rip), %rcx      # 0x10dd4
movl $0xd3, %edx
callq 0x3080
leaq 0xa475(%rip), %rdi      # 0x10e2e
leaq 0xa3da(%rip), %rsi      # 0x10d9a
leaq 0xa40d(%rip), %rcx      # 0x10dd4
movl $0xd8, %edx
callq 0x3080
leaq 0xa456(%rip), %rdi      # 0x10e2e
leaq 0xa3bb(%rip), %rsi      # 0x10d9a
leaq 0xa3ee(%rip), %rcx      # 0x10dd4
movl $0xa4, %edx
callq 0x3080
leaq 0xad20(%rip), %rdi      # 0x11717
leaq 0xa39c(%rip), %rsi      # 0x10d9a
leaq 0xad33(%rip), %rcx      # 0x11738
movl $0x150, %edx            # imm = 0x150
callq 0x3080
leaq 0xa2ba(%rip), %rdi      # 0x10cd0
leaq 0xa37d(%rip), %rsi      # 0x10d9a
leaq 0xb045(%rip), %rcx      # 0x11a69
movl $0x42d, %edx            # imm = 0x42D
callq 0x3080
leaq 0xa46c(%rip), %rdi      # 0x10ea1
leaq 0xa35e(%rip), %rsi      # 0x10d9a
leaq 0xae1e(%rip), %rcx      # 0x11861
movl $0x2c3, %edx            # imm = 0x2C3
callq 0x3080
leaq 0xb109(%rip), %rdi      # 0x11b5d
leaq 0xa33f(%rip), %rsi      # 0x10d9a
leaq 0xb08c(%rip), %rcx      # 0x11aee
movl $0x53c, %edx            # imm = 0x53C
callq 0x3080
leaq 0xa25d(%rip), %rdi      # 0x10cd0
leaq 0xa320(%rip), %rsi      # 0x10d9a
leaq 0xafe8(%rip), %rcx      # 0x11a69
movl $0x44c, %edx            # imm = 0x44C
callq 0x3080
leaq 0xa23e(%rip), %rdi      # 0x10cd0
leaq 0xa301(%rip), %rsi      # 0x10d9a
leaq 0xafc9(%rip), %rcx      # 0x11a69
movl $0x463, %edx            # imm = 0x463
callq 0x3080
leaq 0xa21f(%rip), %rdi      # 0x10cd0
leaq 0xa2e2(%rip), %rsi      # 0x10d9a
leaq 0xb16e(%rip), %rcx      # 0x11c2d
movl $0x638, %edx            # imm = 0x638
callq 0x3080
leaq 0xaff3(%rip), %rdi      # 0x11ac3
leaq 0xa2c3(%rip), %rsi      # 0x10d9a
leaq 0xb010(%rip), %rcx      # 0x11aee
movl $0x522, %edx            # imm = 0x522
callq 0x3080
leaq 0xac28(%rip), %rdi      # 0x11717
leaq 0xa2a4(%rip), %rsi      # 0x10d9a
leaq 0xaff1(%rip), %rcx      # 0x11aee
movl $0x56f, %edx            # imm = 0x56F
callq 0x3080
leaq 0xadf5(%rip), %rdi      # 0x11903
leaq 0xa285(%rip), %rsi      # 0x10d9a
leaq 0xae0e(%rip), %rcx      # 0x1192a
movl $0x3be, %edx            # imm = 0x3BE
callq 0x3080
leaq 0xae49(%rip), %rdi      # 0x11976
leaq 0xa266(%rip), %rsi      # 0x10d9a
leaq 0xadef(%rip), %rcx      # 0x1192a
movl $0x3bf, %edx            # imm = 0x3BF
callq 0x3080