// File: /workspace/github_c_makefile_star2_O3/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_group_s_parse
er_t xoico_group_s_parse( xoico_group_s* o, const xoico_host* host, bl_t parse_block, x_source* source )
{
    // xoico_group.x:454:1
    BLM_INIT_LEVEL(0);
    xoico_compiler_s* compiler = o->compiler;
    xoico_group_source_stack_s* stack = ((xoico_group_source_stack_s*)BLM_LEVEL_T_PUSH(0,xoico_group_source_stack_s,xoico_group_source_stack_s_create()));
    x_array_push_d(((x_array*)(stack)),((x_inst*)(((x_source*)bcore_fork(source)) )));
    
    sc_t group_termination = NULL;
    
    if( !o->source_point )
    {
        x_source_point_s_setup_from_source(BCORE_PASS_CREATE(x_source_point_s,o->source_point),source );
        o->pre_hash = bcore_tp_init();
        if( !o->tp_name ) o->tp_name = xoico_compiler_s_entypeof(compiler,o->st_name.sc );
    }
    
    if( parse_block ) // this group is nested in another group, the group body is enclosed in { ... }
    {
        BLM_TRY(x_source_parse_fa(source," {" ))
        group_termination = " #?'}'";
    }
    else if( x_source_parse_bl(source," #?'#ifdef XOILA_SECTION'" ) ) // this group is root
    {
        group_termination = " #?'#endif'";
    }
    
    bl_t extend_stump = false;
    
    while
    (
        stack->size >= 2 ||
        ( group_termination ? !x_source_parse_bl(source,group_termination ) : !x_source_eos(source) )
    )
    {
        if( x_source_eos(source) )
        {
            if( stack->size >= 2 )
            {
                x_source_a_attach( &(stack->data[ stack->size - 1 ] ), (x_source*)( NULL));
                source = stack->data[ stack->size - 2 ];
                x_array_set_size(((x_array*)(stack)),stack->size - 1 );
            }
            else if( group_termination )
            {
                BLM_RETURNV(er_t, x_source_parse_error_fa(source,"Unexpected end of file." ))
            }
            else
            {
                break;
            }
        }
        else if( x_source_parse_bl(source," #?w'stamp' " ) )
        {BLM_INIT_LEVEL(3);
            xoico_stamp_s* stamp = ((xoico_stamp_s*)BLM_LEVEL_T_PUSH(3,xoico_stamp_s,xoico_stamp_s_create()));
            stamp->group = o;
            BLM_TRY(xoico_stamp_s_parse(stamp,((const xoico_host*)(o)), source ))
            BLM_TRY(xoico_stamp_s_push_inexpandable_funcs(stamp))
            BLM_TRY(xoico_compiler_s_register_item(compiler,xoico_group_s_push_item_d(o,((xoico*)(((xoico_stamp_s*)bcore_fork(stamp)) ))) ))
        BLM_DOWN();}
    
        /// stumps are inexpandable stamps. They can be used as template.
        else if( x_source_parse_bl(source," #?w'stump' " ) )
        {BLM_INIT_LEVEL(3);
            xoico_stamp_s* stump = ((xoico_stamp_s*)BLM_LEVEL_T_PUSH(3,xoico_stamp_s,xoico_stamp_s_create()));
            stump->group = o;
            BLM_TRY(xoico_stamp_s_parse(stump,((const xoico_host*)(o)), source ))
            //stump.make_funcs_overloadable();
            BLM_TRY(xoico_compiler_s_register_item(compiler,((const xoico*)(stump ))))
            BLM_TRY(xoico_compiler_s_life_a_push(compiler,((bcore_inst*)(((xoico_stamp_s*)bcore_fork(stump)) ))))
            if( extend_stump )
            {
                o->extending_stamp = stump;
                extend_stump = false;
            }
        BLM_DOWN();}
        else if( x_source_parse_bl(source," #?w'signature' " ) )
        {BLM_INIT_LEVEL(3);
            xoico_signature_s* signature = ((xoico_signature_s*)BLM_LEVEL_T_PUSH(3,xoico_signature_s,xoico_signature_s_create()));
            BLM_TRY(xoico_signature_s_parse(signature,((const xoico_host*)(o)), source ))
            BLM_TRY(x_source_parse_fa(source," ; " ))
            BLM_TRY(xoico_compiler_s_register_item(compiler,xoico_group_s_push_item_d(o,((xoico*)(((xoico_signature_s*)bcore_fork(signature)) ))) ))
        BLM_DOWN();}
        else if( x_source_parse_bl(source," #?w'body' " ) )
        {BLM_INIT_LEVEL(3);
            xoico_body_s* body = ((xoico_body_s*)BLM_LEVEL_T_PUSH(3,xoico_body_s,xoico_body_s_create()));
            st_s body_name;BLM_T_INIT_SPUSH(st_s, &body_name);;
            BLM_TRY(xoico_group_s_parse_name_st(o,source,&( body_name )))
            if( body_name.size == 0 ) BLM_RETURNV(er_t, x_source_parse_error_fa(source,"Body name expected." ))
            body->name = xoico_host_a_entypeof(host,body_name.sc );
    
            BLM_TRY(xoico_body_s_parse(body,((const xoico_host*)(o)), source ))
    
            BLM_TRY(x_source_parse_fa(source," #-?';' " )) // closing semicolon is optional
            BLM_TRY(xoico_compiler_s_register_item(compiler,xoico_group_s_push_item_d(o,((xoico*)(((xoico_body_s*)bcore_fork(body)) ))) ))
        BLM_DOWN();}
        else if( x_source_parse_bl(source," #?w'feature' " ) )
        {BLM_INIT_LEVEL(3);
            xoico_feature_s* feature = ((xoico_feature_s*)BLM_LEVEL_T_PUSH(3,xoico_feature_s,xoico_feature_s_create()));
            feature->group = o;
            BLM_TRY(xoico_feature_s_parse(feature,((const xoico_host*)(o)), source ))
            BLM_TRY(xoico_compiler_s_register_item(compiler,xoico_group_s_push_item_d(o,((xoico*)(((xoico_feature_s*)bcore_fork(feature)) ))) ))
            bcore_hmap_tpvd_s_set(&(o->hmap_feature),feature->signature.name, ( vd_t )feature );
            {const xoico_funcs_s* __a=&(feature->funcs_return_to_group );if(__a)for(sz_t __i=0;__i<__a->size;__i++){xoico_func_s* func=__a->data[__i]; x_array_push_d(((x_array*)(&(o->funcs))),((x_inst*)(((xoico_func_s*)bcore_fork(func)) )));}}
            x_array_clear(((x_array*)(&(feature->funcs_return_to_group))));
        BLM_DOWN();}
        else if( x_source_parse_bl(source," #?w'func' " ) )
        {
            bl_t is_group_function = true;
            if( x_source_parse_bl(source," #=?'('" ) )
            {BLM_INIT_LEVEL(4);
                sz_t index = x_source_get_index(source);
                BLM_TRY(x_source_parse_fa(source,"(" ))
                st_s* stamp_name = ((st_s*)BLM_LEVEL_T_PUSH(4,st_s,st_s_create()));
                BLM_TRY(xoico_group_s_parse_name_st(o,source, stamp_name ))
                if( x_source_parse_bl(source," #?')'" ) )
                {
                    if( !st_s_ends_in_sc(stamp_name,"_s" ) ) BLM_RETURNV(er_t, x_source_parse_error_fa(source,"Stamp name '#<sc_t>' must end in '_s'.", stamp_name->sc ))
                    tp_t tp_stamp_name = btypeof( stamp_name->sc );
                    if( !xoico_compiler_s_is_stamp(compiler,tp_stamp_name ) )
                    {
                        BLM_RETURNV(er_t, x_source_parse_error_fa(source,"Cannot associate type name '#<sc_t>' with a stamp.", stamp_name->sc ))
                    }
    
                    xoico_stamp_s* stamp = xoico_compiler_s_get_stamp(compiler,tp_stamp_name );
    
                    if( stamp->finalized )
                    {
                        BLM_RETURNV(er_t, x_source_parse_error_fa(source,"Stamp '#<sc_t>' has already been finalized. Attempting to extend stamp outside its declarative scope.",
                            stamp_name->sc
                        ))
                    }
    
                    BLM_TRY(xoico_stamp_s_parse_func(stamp,source ))
                    o->pre_hash = bcore_tp_fold_tp( o->pre_hash, xoico_stamp_s_get_hash(stamp) );
                    is_group_function = false;
                }
                else
                {
                    x_source_set_index(source,index );
                    is_group_function = true;
                }
            BLM_DOWN();}
    
            if( is_group_function )
            {
                BLM_TRY(xoico_group_s_parse_func(o,source, true )) // group functions are registered
            }
        }
        else if( x_source_parse_bl(source," #?w'name' " ) )
        {
            while( !x_source_eos(source) )
            {BLM_INIT_LEVEL(4);
                xoico_name_s* name = ((xoico_name_s*)BLM_LEVEL_T_PUSH(4,xoico_name_s,xoico_name_s_create()));
                BLM_TRY(xoico_name_s_parse(name,((const xoico_host*)(o)), source ))
                xoico_group_s_push_item_d(o,((xoico*)(((xoico_name_s*)bcore_fork(name)) )));
                bcore_hmap_tp_s_set(&(o->compiler->hmap_declared_name),name->name );
                if( x_source_parse_bl(source," #?';'" ) ) BLM_BREAK_LEVEL(4);
                BLM_TRY(x_source_parse_fa(source," ," ))
            BLM_DOWN();}
        }
        else if( x_source_parse_bl(source," #?w'type' " ) )
        {
            while( !x_source_eos(source) )
            {BLM_INIT_LEVEL(4);
                xoico_name_s name;BLM_T_INIT_SPUSH(xoico_name_s, &name);xoico_name_s_parse(&(name),((const xoico_host*)(o)), source );
                BLM_TRY(xoico_compiler_s_register_external_type(compiler,name.name ))
                o->pre_hash = bcore_tp_fold_tp( o->pre_hash, xoico_name_s_get_hash(&(name)) );
                if( x_source_parse_bl(source," #?';'" ) ) BLM_BREAK_LEVEL(4);
                BLM_TRY(x_source_parse_fa(source," ," ))
            BLM_DOWN();}
        }
        else if( x_source_parse_bl(source," #?w'identifier' " ) )
        {
            while( !x_source_eos(source) )
            {BLM_INIT_LEVEL(4);
                xoico_name_s name;BLM_T_INIT_SPUSH(xoico_name_s, &name);xoico_name_s_parse(&(name),((const xoico_host*)(o)), source );
                BLM_TRY(xoico_compiler_s_register_external_identifier(compiler,name.name ))
                o->pre_hash = bcore_tp_fold_tp( o->pre_hash, xoico_name_s_get_hash(&(name)) );
                if( x_source_parse_bl(source," #?';'" ) ) BLM_BREAK_LEVEL(4);
                BLM_TRY(x_source_parse_fa(source," ," ))
            BLM_DOWN();}
        }
        else if( x_source_parse_bl(source," #?w'forward' " ) )
        {
            while( !x_source_eos(source) )
            {BLM_INIT_LEVEL(4);
                xoico_forward_s* forward = ((xoico_forward_s*)BLM_LEVEL_T_PUSH(4,xoico_forward_s,xoico_forward_s_create()));
                forward->group = o;
                BLM_TRY(xoico_forward_s_parse(forward,((const xoico_host*)(o)), source ))
                xoico_group_s_push_item_d(o,((xoico*)(((xoico_forward_s*)bcore_fork(forward)) )));
                if( x_source_parse_bl(source," #?';'" ) ) BLM_BREAK_LEVEL(4);
                BLM_TRY(x_source_parse_fa(source," ," ))
            BLM_DOWN();}
        }
        else if( x_source_parse_bl(source," #?w'extending'" ) )
        {
            o->extending_stamp = NULL;
            if( x_source_parse_bl(source," #=?';'" ) )
            {
                // just reset o->extending - nothing else
            }
            else if( x_source_parse_bl(source," #=?w'stump'" ) )
            {
                extend_stump = true;
            }
            else
            {BLM_INIT_LEVEL(4);
                st_s* templ_name = ((st_s*)BLM_LEVEL_T_PUSH(4,st_s,st_s_create()));
                BLM_TRY(xoico_group_s_parse_name_st(o,source, templ_name ))
                if( !st_s_ends_in_sc(templ_name,"_s" ) ) BLM_RETURNV(er_t, x_source_parse_error_fa(source,"Stamp name '#<sc_t>' must end in '_s'.", templ_name->sc ))
                const xoico* item = xoico_compiler_s_get_const_item(compiler,btypeof( templ_name->sc ) );
                if( !item ) BLM_RETURNV(er_t, x_source_parse_error_fa(source,"Template #<sc_t> not found.", templ_name->sc ))
                if( item->_ != ((tp_t)(TYPEOF_xoico_stamp_s)) ) BLM_RETURNV(er_t, x_source_parse_error_fa(source,"Template #<sc_t> is no stamp.", templ_name->sc ))
                o->extending_stamp = ((xoico_stamp_s*)(item));
                BLM_TRY(x_source_parse_fa(source," ;" ))
            BLM_DOWN();}
        }
        else if( x_source_parse_bl(source," #?w'group' " ) )
        {BLM_INIT_LEVEL(3);
            st_s st_group_name;BLM_T_INIT_SPUSH(st_s, &st_group_name);;
            BLM_TRY(xoico_group_s_parse_name_st(o,source,&( st_group_name )))
            bl_t retrievable = false;
    
            // using assignment symbol is optional
            if( x_source_parse_bl(source," #?'=' " ) )
            {
                // nothing (error in case use of assignment becomes illegal)
            }
    
            // flags
            if( x_source_parse_bl(source," #?w'retrievable' " ) ) retrievable = true;
    
            xoico_transient_map_s* transient_map = ((xoico_transient_map_s*)BLM_LEVEL_T_PUSH(3,xoico_transient_map_s,xoico_transient_map_s_clone(&(o->transient_map))));
            tp_t tp_trait_name = o->tp_name;
            st_s* st_trait_name = ((st_s*)BLM_LEVEL_T_PUSH(3,st_s,st_s_create()));
    
            // first test for 'trans' used instead of trait_name
            if( x_source_parse_bl(source," #?w'trans' " ) )
            {
                BLM_TRY(xoico_transient_map_s_parse_update(transient_map,((const xoico_host*)(o)), source ))
            }
            else
            {
                BLM_TRY(xoico_group_s_parse_name_st(o,source, st_trait_name ))
                if( st_trait_name->size > 0 )
                {
                    tp_trait_name = xoico_compiler_s_entypeof(compiler,st_trait_name->sc );
                }
                else
                {
                    st_s_copy_sc(st_trait_name,xoico_compiler_s_nameof(compiler,tp_trait_name ) );
                }
    
                // second test for trans in case it occurs after trait_name
                if( x_source_parse_bl(source," #?w'trans' " ) ) BLM_TRY(xoico_transient_map_s_parse_update(transient_map,((const xoico_host*)(o)), source ))
            }
    
            xoico_group_s* group = NULL;
            BLM_TRY(xoico_source_s_get_group_if_preexsting(o->xoico_source,host, source, st_group_name.sc, st_trait_name->sc, (&(group)) ))
    
            if( !group )
            {BLM_INIT_LEVEL(4);
                group = xoico_source_s_push_d(o->xoico_source,xoico_group_s_create() );
                group->lexical_parent = o;
                group->xoico_source = o->xoico_source;
                group->compiler = o->compiler;
                group->extending_stamp = o->extending_stamp;
                group->expandable = o->expandable;
                xoico_group_s_set_name_sc(group,host, st_group_name.sc );
                group->is_retrievable = retrievable;
                group->trait_name = tp_trait_name;
                xoico_transient_map_s_copy(&(group->transient_map),transient_map );
                BLM_TRY(xoico_group_s_parse(group,((const xoico_host*)(o)), true, source ))
                BLM_TRY(xoico_compiler_s_register_group(compiler,group ))
                xoico_nested_group_s* nested_group = ((xoico_nested_group_s*)BLM_LEVEL_T_PUSH(4,xoico_nested_group_s,xoico_nested_group_s_create()));
                nested_group->group = group;
                xoico_group_s_push_item_d(o,((xoico*)(((xoico_nested_group_s*)bcore_fork(nested_group)) )));
            BLM_DOWN();}
            else
            {
                xoico_transient_map_s_update(&(group->transient_map),transient_map );
                BLM_TRY(xoico_group_s_parse(group,((const xoico_host*)(o)), true, source ))
            }
    
            BLM_TRY(x_source_parse_fa(source," #-?';' " )) // closing semicolon is optional
        BLM_DOWN();}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x158, %rsp            # imm = 0x158
movq %rcx, %r12
movl %edx, %ebx
movq %rsi, 0x80(%rsp)
movq %rdi, %r15
leaq 0x17a123(%rip), %rax    # 0x19bdd0
movq (%rax), %rsi
leaq 0x90(%rsp), %r14
movq %r14, %rdi
callq 0xd6675
movq $0x0, 0x10(%r14)
movq 0x140(%r15), %rax
movq %rax, 0x18(%rsp)
callq 0x2027f
movabsq $0x753cecc8ce8a05b2, %rdx # imm = 0x753CECC8CE8A05B2
movq %r14, %rdi
xorl %esi, %esi
movq %rax, %rcx
callq 0xd68a8
movq %rax, %rbp
movq %r12, %rdi
callq 0xbe7e4
movq (%rbp), %rsi
movq %rbp, %rdi
movq %rax, %rdx
callq 0x55b79
cmpq $0x0, 0x148(%r15)
movq %r15, (%rsp)
jne 0x21e23
callq 0x5475f
movq %r15, %rcx
movq %rax, %r15
movq %rax, 0x148(%rcx)
leaq 0x8(%rax), %r14
movq %r12, %rdi
callq 0xbe7e4
movq %r14, %rdi
movq %rax, %rsi
callq 0x242ed
movq (%r12), %r13
leaq 0x17af78(%rip), %rax    # 0x19ccc8
movl (%rax), %ecx
movslq %ecx, %rcx
leaq (%rcx,%rcx,2), %rcx
movq 0x20(%rax,%rcx,8), %rdx
movq 0x18(%rax,%rcx,8), %rcx
andq %r13, %rcx
shlq $0x4, %rcx
leaq (%rdx,%rcx), %rax
movq (%rdx,%rcx), %rdx
movl $0x8, %ecx
cmpq %r13, %rdx
je 0x21da6
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r13, %rdx
je 0x21da6
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r13, %rdx
je 0x21da6
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r13, %rdx
jne 0x21daf
movq (%rax,%rcx), %r14
testq %r14, %r14
jne 0x21dd6
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %r13, %rsi
callq 0xe9bc5
movq %rax, %r14
leaq 0x17aefd(%rip), %rdi    # 0x19ccc8
movq %r13, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r14, %rdi
movq %r12, %rsi
callq 0xffe72
movq %rax, 0x10(%r15)
movabsq $-0x340d631b7bdddcdb, %rax # imm = 0xCBF29CE484222325
movq (%rsp), %r15
movq %rax, 0xb8(%r15)
cmpq $0x0, 0xa8(%r15)
jne 0x21e23
movq 0x90(%r15), %rsi
movq 0x18(%rsp), %rax
leaq 0x140(%rax), %rdi
callq 0xd3d8e
movq %rax, 0xa8(%r15)
testb %bl, %bl
je 0x21e5d
leaq 0x10bd6c(%rip), %rsi    # 0x12db9a
movq %r12, %rdi
xorl %eax, %eax
callq 0xda80
testq %rax, %rax
jne 0x241fa
movl $0x0, 0x5c(%rsp)
leaq 0x10c189(%rip), %rax    # 0x12dfd9
movq %rax, 0xe0(%rsp)
jmp 0x21f20
movq (%r12), %rbx
leaq 0x17ae60(%rip), %rax    # 0x19ccc8
movl (%rax), %ecx
movslq %ecx, %rcx
leaq (%rcx,%rcx,2), %rcx
movq 0x20(%rax,%rcx,8), %rdx
movq 0x18(%rax,%rcx,8), %rcx
andq %rbx, %rcx
shlq $0x4, %rcx
leaq (%rdx,%rcx), %rax
movq (%rdx,%rcx), %rdx
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x21ebe
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x21ebe
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x21ebe
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x21ec7
movq (%rax,%rcx), %r14
testq %r14, %r14
jne 0x21eee
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r14
leaq 0x17ade5(%rip), %rdi    # 0x19ccc8
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
leaq 0x10c0eb(%rip), %rdx    # 0x12dfe0
movq %r14, %rdi
movq %r12, %rsi
callq 0xffe2b
movl %eax, %ecx
xorb $0x1, %cl
movl %ecx, 0x5c(%rsp)
leaq 0x10c0ea(%rip), %rcx    # 0x12dffa
xorl %edx, %edx
testb %al, %al
cmovneq %rcx, %rdx
movq %rdx, 0xe0(%rsp)
leaq 0xe0(%r15), %rax
movq %rax, 0xd8(%rsp)
leaq 0x68(%r15), %rax
movq %rax, 0x120(%rsp)
leaq 0xc0(%r15), %rax
movq %rax, 0x118(%rsp)
movq 0x18(%rsp), %rax
leaq 0x140(%rax), %rcx
movq %rcx, 0x128(%rsp)
leaq 0x78(%rax), %rcx
movq %rcx, 0xc8(%rsp)
leaq 0xf0(%rax), %rcx
movq %rcx, 0x130(%rsp)
leaq 0xc8(%rax), %rcx
movq %rcx, 0x148(%rsp)
leaq 0x150(%r15), %rcx
movq %rcx, 0x140(%rsp)
leaq 0x118(%r15), %rcx
movq %rcx, 0x138(%rsp)
addq $0x20, %rax
movq %rax, 0x150(%rsp)
leaq 0x17ad0f(%rip), %r15    # 0x19ccc8
movl $0x0, 0x58(%rsp)
cmpq $0x1, 0x10(%rbp)
ja 0x220fb
movq (%r12), %rbx
movl (%r15), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %rbx, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
cmpb $0x0, 0x5c(%rsp)
je 0x22080
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x22031
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x22031
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x22031
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x2203a
movq (%rax,%rcx), %r13
testq %r13, %r13
jne 0x2205d
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r13
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq 0x40(%r13), %rax
testq %rax, %rax
jne 0x22079
movq %r13, %rdi
leaq 0x117d19(%rip), %rsi    # 0x139d89
callq 0xeb49c
movq 0x40(%r13), %rax
movq %r12, %rdi
callq *%rax
jmp 0x220f3
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x220b4
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x220b4
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x220b4
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x220bd
movq (%rax,%rcx), %r14
testq %r14, %r14
jne 0x220e0
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r14
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r14, %rdi
movq %r12, %rsi
movq 0xe0(%rsp), %rdx
callq 0xffe2b
testb %al, %al
jne 0x241c1
movq (%r12), %rbx
movl (%r15), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %rbx, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x22155
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x22155
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x22155
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x2215e
movq (%rax,%rcx), %r13
testq %r13, %r13
jne 0x22181
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r13
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq 0x40(%r13), %rax
testq %rax, %rax
jne 0x2219d
movq %r13, %rdi
leaq 0x117bf5(%rip), %rsi    # 0x139d89
callq 0xeb49c
movq 0x40(%r13), %rax
movq %r12, %rdi
callq *%rax
testb %al, %al
je 0x2232e
movq 0x10(%rbp), %rbx
cmpq $0x2, %rbx
jb 0x241d1
movq 0x8(%rbp), %rax
leaq (%rax,%rbx,8), %r13
addq $-0x8, %r13
je 0x22283
movq (%r13), %rbx
testq %rbx, %rbx
je 0x22273
movq (%rbx), %r12
leaq 0x17a287(%rip), %rdx    # 0x19c468
movl (%rdx), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%rdx,%rax,8), %rcx
movq 0x18(%rdx,%rax,8), %rdx
andq %r12, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r12, %rdx
je 0x22236
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r12, %rdx
je 0x22236
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r12, %rdx
je 0x22236
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r12, %rdx
jne 0x2223f
movq (%rax,%rcx), %r14
testq %r14, %r14
jne 0x22266
movabsq $0x782b96602f424981, %rdi # imm = 0x782B96602F424981
movq %r12, %rsi
callq 0xe9bc5
movq %rax, %r14
leaq 0x17a20d(%rip), %rdi    # 0x19c468
movq %r12, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r14, %rdi
movq %rbx, %rsi
callq *0xb8(%r14)
movq $0x0, (%r13)
movq 0x8(%rbp), %rax
movq 0x10(%rbp), %rbx
movq -0x10(%rax,%rbx,8), %r12
movq (%rbp), %r13
leaq 0x179b8d(%rip), %rdx    # 0x19be20
movl (%rdx), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%rdx,%rax,8), %rcx
movq 0x18(%rdx,%rax,8), %rdx
andq %r13, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r13, %rdx
je 0x222e8
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r13, %rdx
je 0x222e8
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r13, %rdx
je 0x222e8
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r13, %rdx
jne 0x222f1
movq (%rax,%rcx), %r14
testq %r14, %r14
jne 0x22318
movabsq $-0x5073d588c3beb52e, %rdi # imm = 0xAF8C2A773C414AD2
movq %r13, %rsi
callq 0xe9bc5
movq %rax, %r14
leaq 0x179b13(%rip), %rdi    # 0x19be20
movq %r13, %rsi
movq %rax, %rdx
callq 0x115fac
decq %rbx
movq %r14, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0xec548
jmp 0x225dd
movq (%r12), %rbx
movl (%r15), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %rbx, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x22388
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x22388
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x22388
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x22391
movq (%rax,%rcx), %r14
testq %r14, %r14
jne 0x223b4
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r14
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r14, %rdi
movq %r12, %rsi
leaq 0x10bc5d(%rip), %rdx    # 0x12e01e
callq 0xffe2b
testb %al, %al
je 0x22483
leaq 0xe8(%rsp), %rdi
movq %rdi, 0x20(%rsp)
leaq 0x90(%rsp), %rsi
callq 0xd6675
movq 0x20(%rsp), %rbx
movq $0x3, 0x10(%rbx)
callq 0x2888f
movl $0x3, %esi
movq %rbx, %rdi
movabsq $0x12d01d78049fae7, %rdx # imm = 0x12D01D78049FAE7
movq %rax, %rcx
callq 0xd68a8
movq %rax, %r13
movq (%rsp), %rsi
movq %rsi, 0xc8(%rax)
movq %rax, %rdi
movq %r12, %rdx
callq 0x243d2
testq %rax, %rax
jne 0x2424d
movq %r13, %rdi
callq 0x25032
testq %rax, %rax
jne 0x2424d
movq %r13, %rdi
callq 0xbe7e4
movq (%rsp), %rdi
movq (%rdi), %rsi
movq %rax, %rdx
callq 0x55b79
movq 0x18(%rsp), %rdi
movq %rax, %rsi
callq 0x1abe3
testq %rax, %rax
jne 0x2424d
leaq 0x20(%rsp), %rdi
callq 0xd6d0d
jmp 0x225dd
movq (%r12), %rbx
movl (%r15), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %rbx, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x224dd
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x224dd
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x224dd
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x224e6
movq (%rax,%rcx), %r14
testq %r14, %r14
jne 0x22509
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r14
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r14, %rdi
movq %r12, %rsi
leaq 0x10bb15(%rip), %rdx    # 0x12e02b
callq 0xffe2b
testb %al, %al
je 0x225fc
leaq 0xe8(%rsp), %rdi
movq %rdi, 0x20(%rsp)
leaq 0x90(%rsp), %rsi
callq 0xd6675
movq 0x20(%rsp), %rbx
movq $0x3, 0x10(%rbx)
callq 0x2888f
movl $0x3, %esi
movq %rbx, %rdi
movabsq $0x12d01d78049fae7, %rdx # imm = 0x12D01D78049FAE7
movq %rax, %rcx
callq 0xd68a8
movq %rax, %r13
movq (%rsp), %rsi
movq %rsi, 0xc8(%rax)
movq %rax, %rdi
movq %r12, %rdx
callq 0x243d2
testq %rax, %rax
jne 0x2424d
movq 0x18(%rsp), %rdi
movq %r13, %rsi
callq 0x1abe3
testq %rax, %rax
jne 0x2424d
movq %r13, %rdi
callq 0xbe7e4
movq 0x150(%rsp), %rdi
movq %rax, %rsi
callq 0xd6a3c
testb $0x1, 0x58(%rsp)
je 0x225cb
movq (%rsp), %rax
movq %r13, 0x110(%rax)
leaq 0x20(%rsp), %rdi
callq 0xd6d0d
movl $0x0, 0x58(%rsp)
movq %r12, %rdi
leaq 0x121406(%rip), %rsi    # 0x1439ed
xorl %eax, %eax
callq 0xda80
testq %rax, %rax
je 0x21fc1
jmp 0x241fa
movq (%r12), %rbx
movl (%r15), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %rbx, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x22656
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x22656
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x22656
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x2265f
movq (%rax,%rcx), %r14
testq %r14, %r14
jne 0x22682
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r14
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r14, %rdi
movq %r12, %rsi
leaq 0x10b9a9(%rip), %rdx    # 0x12e038
callq 0xffe2b
testb %al, %al
je 0x2270f
leaq 0xe8(%rsp), %rdi
movq %rdi, 0x20(%rsp)
leaq 0x90(%rsp), %rsi
callq 0xd6675
movq 0x20(%rsp), %rbx
movq $0x3, 0x10(%rbx)
callq 0x14463
movl $0x3, %esi
movq %rbx, %rdi
movabsq $-0x231a5c50432e84f2, %rdx # imm = 0xDCE5A3AFBCD17B0E
movq %rax, %rcx
callq 0xd68a8
movq %rax, %r13
movq %rax, %rdi
movq (%rsp), %rsi
movq %r12, %rdx
callq 0x14f2a
testq %rax, %rax
jne 0x2424d
movq %r12, %rdi
leaq 0x10b946(%rip), %rsi    # 0x12e049
xorl %eax, %eax
callq 0xda80
jmp 0x2243e
movq (%r12), %rbx
movl (%r15), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %rbx, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x22769
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x22769
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x22769
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x22772
movq (%rax,%rcx), %r14
testq %r14, %r14
jne 0x22795
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r14
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r14, %rdi
movq %r12, %rsi
leaq 0x10b8ab(%rip), %rdx    # 0x12e04d
callq 0xffe2b
testb %al, %al
je 0x22961
leaq 0xe8(%rsp), %rdi
movq %rdi, 0x60(%rsp)
leaq 0x90(%rsp), %rsi
callq 0xd6675
movq 0x60(%rsp), %rbx
movq $0x3, 0x10(%rbx)
callq 0x17f81
movl $0x3, %esi
movq %rbx, %rdi
movabsq $0x12dc29d312ad56e4, %rdx # imm = 0x12DC29D312AD56E4
movq %rax, %rcx
callq 0xd68a8
movq %rax, %r13
leaq 0x20(%rsp), %r14
movq %r14, %rdi
callq 0x109030
movq %rbx, %rdi
movabsq $-0x503db0e6e1c2e704, %rsi # imm = 0xAFC24F191E3D18FC
movq %r14, %rdx
callq 0xd68d9
movq (%rsp), %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x213bd
testq %rax, %rax
jne 0x24218
cmpq $0x0, 0x30(%rsp)
je 0x24207
movq 0x28(%rsp), %rsi
movq 0x80(%rsp), %rax
movq (%rax), %rbx
movl 0x16fe4c(%rip), %eax    # 0x1926a0
cltq
leaq (%rax,%rax,2), %rax
leaq 0x16fe3f(%rip), %rdx    # 0x1926a0
movq 0x20(%rdx,%rax,8), %rcx
movq 0x18(%rdx,%rax,8), %rdx
andq %rbx, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x228ae
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x228ae
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x228ae
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x228b7
movq (%rax,%rcx), %r14
testq %r14, %r14
jne 0x228e8
movabsq $-0x1e682f89ce03d7c8, %rdi # imm = 0xE197D07631FC2838
movq %rsi, 0x10(%rsp)
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r14
leaq 0x16fdc8(%rip), %rdi    # 0x1926a0
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq 0x10(%rsp), %rsi
movq 0x80(%rsp), %rdi
callq *0x50(%r14)
movq %rax, 0x8(%r13)
movq %r13, %rdi
movq (%rsp), %rsi
movq %r12, %rdx
callq 0x189ff
testq %rax, %rax
jne 0x24218
movq %r12, %rdi
leaq 0x10adfe(%rip), %rsi    # 0x12d718
xorl %eax, %eax
callq 0xda80
testq %rax, %rax
jne 0x24218
movq %r13, %rdi
callq 0xbe7e4
movq (%rsp), %rdi
movq (%rdi), %rsi
movq %rax, %rdx
callq 0x55b79
movq 0x18(%rsp), %rdi
movq %rax, %rsi
callq 0x1abe3
testq %rax, %rax
jne 0x24218
leaq 0x60(%rsp), %rdi
jmp 0x22479
movq (%r12), %rbx
movl (%r15), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %rbx, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x229bb
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x229bb
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x229bb
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x229c4
movq (%rax,%rcx), %r14
testq %r14, %r14
jne 0x229e7
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r14
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r14, %rdi
movq %r12, %rsi
leaq 0x10b679(%rip), %rdx    # 0x12e06d
callq 0xffe2b
testb %al, %al
je 0x22afe
leaq 0xe8(%rsp), %rdi
movq %rdi, 0x20(%rsp)
leaq 0x90(%rsp), %rsi
callq 0xd6675
movq 0x20(%rsp), %rbx
movq $0x3, 0x10(%rbx)
callq 0x1c427
movl $0x3, %esi
movq %rbx, %rdi
movabsq $0x320f5368e957d0a2, %rdx # imm = 0x320F5368E957D0A2
movq %rax, %rcx
callq 0xd68a8
movq %rax, %r13
movq (%rsp), %r14
movq %r14, 0x118(%rax)
movq %rax, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x1c893
testq %rax, %rax
jne 0x2424d
movq %r13, %rdi
callq 0xbe7e4
movq (%r14), %rsi
movq %r14, %rdi
movq %rax, %rdx
callq 0x55b79
movq 0x18(%rsp), %rdi
movq %rax, %rsi
callq 0x1abe3
testq %rax, %rax
jne 0x2424d
movq 0x10(%r13), %rsi
movq 0x140(%rsp), %rdi
movq %r13, %rdx
callq 0xca6bb
cmpq $0x0, 0xd0(%r13)
movq 0x138(%rsp), %r14
je 0x22aea
xorl %ebx, %ebx
movq 0xc8(%r13), %rax
movq (%rax,%rbx,8), %rdi
callq 0xbe7e4
movq (%r14), %rsi
movq %r14, %rdi
movq %rax, %rdx
callq 0x55b79
incq %rbx
cmpq 0xd0(%r13), %rbx
jb 0x22ac0
addq $0xc0, %r13
movq %r13, %rdi
callq 0x21853
jmp 0x22474
movq (%r12), %rbx
movl (%r15), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %rbx, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x22b58
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x22b58
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x22b58
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x22b61
movq (%rax,%rcx), %r14
testq %r14, %r14
jne 0x22b84
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r14
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r14, %rdi
movq %r12, %rsi
leaq 0x10b4eb(%rip), %rdx    # 0x12e07c
callq 0xffe2b
movq (%r12), %rbx
movl (%r15), %ecx
movslq %ecx, %rcx
leaq (%rcx,%rcx,2), %rcx
movq 0x20(%r15,%rcx,8), %rdx
movq 0x18(%r15,%rcx,8), %rsi
andq %rbx, %rsi
shlq $0x4, %rsi
leaq (%rdx,%rsi), %rcx
movq (%rdx,%rsi), %rdx
testb %al, %al
je 0x22e4e
movl $0x8, %eax
cmpq %rbx, %rdx
je 0x22bf9
movq 0x10(%rcx), %rdx
movl $0x18, %eax
cmpq %rbx, %rdx
je 0x22bf9
movq 0x20(%rcx), %rdx
movl $0x28, %eax
cmpq %rbx, %rdx
je 0x22bf9
movq 0x30(%rcx), %rdx
movl $0x38, %eax
cmpq %rbx, %rdx
jne 0x22c02
movq (%rcx,%rax), %r14
testq %r14, %r14
jne 0x22c25
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r14
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r14, %rdi
movq %r12, %rsi
leaq 0x10b456(%rip), %rdx    # 0x12e088
callq 0xffe2b
testb %al, %al
je 0x236b2
leaq 0xe8(%rsp), %rdi
movq %rdi, 0x20(%rsp)
leaq 0x90(%rsp), %rsi
callq 0xd6675
movq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq $0x4, 0x10(%rax)
movq (%r12), %rbx
movl (%r15), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %rbx, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x22cc5
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x22cc5
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x22cc5
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x22cce
movq (%rax,%rcx), %r14
testq %r14, %r14
jne 0x22cf1
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r14
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r14, %rdi
movq %r12, %rsi
callq 0xffe72
movq %rax, %r13
movq %r12, %rdi
leaq 0x10a7e5(%rip), %rsi    # 0x12d4ee
xorl %eax, %eax
callq 0xda80
testq %rax, %rax
jne 0x2424d
xorl %eax, %eax
callq 0x109c82
movl $0x4, %esi
movq 0x10(%rsp), %rdi
movabsq $-0x503db0e6e1c2e704, %rdx # imm = 0xAFC24F191E3D18FC
movq %rax, %rcx
callq 0xd68a8
movq %rax, %r14
movq (%rsp), %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x213bd
testq %rax, %rax
jne 0x2424d
movq %r12, %rdi
leaq 0x10b32f(%rip), %rsi    # 0x12e090
callq 0x1130c
testb %al, %al
je 0x2369d
movq %r14, %rdi
leaq 0x1244e7(%rip), %rsi    # 0x14725f
callq 0x10a962
movq 0x8(%r14), %rdx
testb %al, %al
je 0x2422f
movabsq $-0x509c42b379fe4821, %rbx # imm = 0xAF63BD4C8601B7DF
testq %rdx, %rdx
movabsq $0x100000001b3, %rsi    # imm = 0x100000001B3
je 0x22dd5
movb (%rdx), %al
movabsq $-0x340d631b7bdddcdb, %rbx # imm = 0xCBF29CE484222325
testb %al, %al
je 0x22dd5
incq %rdx
movabsq $-0x340d631b7bdddcdb, %rcx # imm = 0xCBF29CE484222325
movzbl %al, %ebx
xorq %rcx, %rbx
imulq %rsi, %rbx
movb (%rdx), %al
incq %rdx
movq %rbx, %rcx
testb %al, %al
jne 0x22dbf
movq 0xc8(%rsp), %rdi
movq %rbx, %rsi
callq 0xca94f
testq %rax, %rax
je 0x24222
movq (%rax), %rax
testq %rax, %rax
je 0x24222
movabsq $0x12d01d78049fae7, %rcx # imm = 0x12D01D78049FAE7
cmpq %rcx, (%rax)
jne 0x24222
movq 0xc8(%rsp), %rdi
movq %rbx, %rsi
callq 0xca94f
testq %rax, %rax
je 0x236d1
movq (%rax), %r13
testq %r13, %r13
je 0x236d1
movabsq $0x12d01d78049fae7, %rax # imm = 0x12D01D78049FAE7
cmpq %rax, (%r13)
movl $0x0, %eax
cmovneq %rax, %r13
jmp 0x236d4
movl $0x8, %eax
cmpq %rbx, %rdx
je 0x22e82
movq 0x10(%rcx), %rdx
movl $0x18, %eax
cmpq %rbx, %rdx
je 0x22e82
movq 0x20(%rcx), %rdx
movl $0x28, %eax
cmpq %rbx, %rdx
je 0x22e82
movq 0x30(%rcx), %rdx
movl $0x38, %eax
cmpq %rbx, %rdx
jne 0x22e8b
movq (%rcx,%rax), %r14
testq %r14, %r14
jne 0x22eae
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r14
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r14, %rdi
movq %r12, %rsi
leaq 0x10b275(%rip), %rdx    # 0x12e130
callq 0xffe2b
testb %al, %al
je 0x230d2
movq (%r12), %rbx
movl (%r15), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %rbx, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x22f22
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x22f22
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x22f22
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x22f2b
movq (%rax,%rcx), %r13
testq %r13, %r13
jne 0x22f4e
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r13
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq 0x40(%r13), %rax
testq %rax, %rax
jne 0x22f6a
movq %r13, %rdi
leaq 0x116e28(%rip), %rsi    # 0x139d89
callq 0xeb49c
movq 0x40(%r13), %rax
movq %r12, %rdi
callq *%rax
testb %al, %al
jne 0x225dd
leaq 0xe8(%rsp), %rdi
movq %rdi, 0x20(%rsp)
leaq 0x90(%rsp), %rsi
callq 0xd6675
movq 0x20(%rsp), %rbx
movq $0x4, 0x10(%rbx)
callq 0xe6fe
movl $0x4, %esi
movq %rbx, %rdi
movabsq $0x72c1e17e15481547, %rdx # imm = 0x72C1E17E15481547
movq %rax, %rcx
callq 0xd68a8
movq %rax, %r13
movq %rax, %rdi
movq (%rsp), %r14
movq %r14, %rsi
movq %r12, %rdx
callq 0xe925
testq %rax, %rax
jne 0x2424d
movq %r13, %rdi
callq 0xbe7e4
movq (%r14), %rsi
movq %r14, %rdi
movq %rax, %rdx
callq 0x55b79
movq 0x140(%r14), %rdi
movl $0x118, %eax            # imm = 0x118
addq %rax, %rdi
movq 0x8(%r13), %rsi
callq 0xcce08
movq (%r12), %rbx
movl (%r15), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %rbx, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x23063
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x23063
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x23063
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x2306c
movq (%rax,%rcx), %r14
testq %r14, %r14
jne 0x2308f
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r14
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r14, %rdi
movq %r12, %rsi
leaq 0x10b0a0(%rip), %rdx    # 0x12e13c
callq 0xffe2b
testb %al, %al
jne 0x2389e
movq %r12, %rdi
leaq 0x10b090(%rip), %rsi    # 0x12e143
xorl %eax, %eax
callq 0xda80
testq %rax, %rax
jne 0x2424d
leaq 0x20(%rsp), %rdi
callq 0xd6d0d
jmp 0x22ec8
movq (%r12), %rbx
movl (%r15), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %rbx, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x2312c
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x2312c
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x2312c
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x23135
movq (%rax,%rcx), %r14
testq %r14, %r14
jne 0x23158
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r14
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r14, %rdi
movq %r12, %rsi
leaq 0x10afe1(%rip), %rdx    # 0x12e146
callq 0xffe2b
testb %al, %al
je 0x233f7
movq (%r12), %rbx
movl (%r15), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %rbx, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x231cc
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x231cc
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x231cc
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x231d5
movq (%rax,%rcx), %r13
testq %r13, %r13
jne 0x231f8
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r13
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq 0x40(%r13), %rax
testq %rax, %rax
jne 0x23214
movq %r13, %rdi
leaq 0x116b7e(%rip), %rsi    # 0x139d89
callq 0xeb49c
movq 0x40(%r13), %rax
movq %r12, %rdi
callq *%rax
testb %al, %al
jne 0x225dd
leaq 0xe8(%rsp), %rdi
movq %rdi, 0x60(%rsp)
leaq 0x90(%rsp), %rsi
callq 0xd6675
movq 0x60(%rsp), %rbx
movq $0x4, 0x10(%rbx)
leaq 0x20(%rsp), %r13
movq %r13, %rdi
callq 0xe4cb
movq %rbx, %rdi
movabsq $0x72c1e17e15481547, %rsi # imm = 0x72C1E17E15481547
movq %r13, %rdx
callq 0xd68d9
movq %r13, %rdi
movq (%rsp), %r14
movq %r14, %rsi
movq %r12, %rdx
callq 0xe925
movq 0x28(%rsp), %rsi
movq 0x148(%rsp), %rdi
callq 0xcce08
movq 0xb8(%r14), %rbx
movq %r13, %rdi
callq 0xeab6
movq %rax, %rcx
movl $0xff, %edi
andq %rdi, %rcx
xorq %rbx, %rcx
movabsq $0x100000001b3, %rsi    # imm = 0x100000001B3
imulq %rsi, %rcx
movl %eax, %edx
shrl $0x8, %edx
movl $0xff, %r8d
andl %r8d, %edx
xorq %rcx, %rdx
imulq %rsi, %rdx
movl %eax, %ecx
shrl $0x10, %ecx
andl %r8d, %ecx
xorq %rdx, %rcx
imulq %rsi, %rcx
movl %eax, %edx
shrl $0x18, %edx
xorq %rcx, %rdx
imulq %rsi, %rdx
movq %rax, %rcx
shrq $0x20, %rcx
andq %rdi, %rcx
xorq %rdx, %rcx
imulq %rsi, %rcx
movq %rax, %rdx
shrq $0x28, %rdx
andq %rdi, %rdx
xorq %rcx, %rdx
imulq %rsi, %rdx
movq %rax, %rcx
shrq $0x30, %rcx
andq %rdi, %rcx
xorq %rdx, %rcx
imulq %rsi, %rcx
shrq $0x38, %rax
xorq %rcx, %rax
imulq %rsi, %rax
movq %rax, 0xb8(%r14)
movq (%r12), %rbx
movl (%r15), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %rbx, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x23388
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x23388
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x23388
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x23391
movq (%rax,%rcx), %r14
testq %r14, %r14
jne 0x233b4
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r14
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r14, %rdi
movq %r12, %rsi
leaq 0x10ad7b(%rip), %rdx    # 0x12e13c
callq 0xffe2b
testb %al, %al
jne 0x238a5
movq %r12, %rdi
leaq 0x10ad6b(%rip), %rsi    # 0x12e143
xorl %eax, %eax
callq 0xda80
testq %rax, %rax
jne 0x24218
leaq 0x60(%rsp), %rdi
callq 0xd6d0d
jmp 0x23172
movq %r12, %rdi
leaq 0x10ad51(%rip), %rsi    # 0x12e152
callq 0x1130c
testb %al, %al
movabsq $-0x503db0e6e1c2e704, %r14 # imm = 0xAFC24F191E3D18FC
je 0x2371d
movq (%r12), %rbx
movl (%r15), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %rbx, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x23472
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x23472
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x23472
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x2347b
movq (%rax,%rcx), %r13
testq %r13, %r13
jne 0x2349e
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r13
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq 0x40(%r13), %rax
testq %rax, %rax
jne 0x234ba
movq %r13, %rdi
leaq 0x1168d8(%rip), %rsi    # 0x139d89
callq 0xeb49c
movq 0x40(%r13), %rax
movq %r12, %rdi
callq *%rax
testb %al, %al
jne 0x225dd
leaq 0xe8(%rsp), %rdi
movq %rdi, 0x60(%rsp)
leaq 0x90(%rsp), %rsi
callq 0xd6675
movq 0x60(%rsp), %rbx
movq $0x4, 0x10(%rbx)
leaq 0x20(%rsp), %r13
movq %r13, %rdi
callq 0xe4cb
movq %rbx, %rdi
movabsq $0x72c1e17e15481547, %rsi # imm = 0x72C1E17E15481547
movq %r13, %rdx
callq 0xd68d9
movq %r13, %rdi
movq (%rsp), %r14
movq %r14, %rsi
movq %r12, %rdx
callq 0xe925
movq 0x28(%rsp), %rsi
movq 0x130(%rsp), %rdi
callq 0xcce08
movq 0xb8(%r14), %rbx
movq %r13, %rdi
callq 0xeab6
movq %rax, %rcx
movl $0xff, %edi
andq %rdi, %rcx
xorq %rbx, %rcx
movabsq $0x100000001b3, %rsi    # imm = 0x100000001B3
imulq %rsi, %rcx
movl %eax, %edx
shrl $0x8, %edx
movl $0xff, %r8d
andl %r8d, %edx
xorq %rcx, %rdx
imulq %rsi, %rdx
movl %eax, %ecx
shrl $0x10, %ecx
andl %r8d, %ecx
xorq %rdx, %rcx
imulq %rsi, %rcx
movl %eax, %edx
shrl $0x18, %edx
xorq %rcx, %rdx
imulq %rsi, %rdx
movq %rax, %rcx
shrq $0x20, %rcx
andq %rdi, %rcx
xorq %rdx, %rcx
imulq %rsi, %rcx
movq %rax, %rdx
shrq $0x28, %rdx
andq %rdi, %rdx
xorq %rcx, %rdx
imulq %rsi, %rdx
movq %rax, %rcx
shrq $0x30, %rcx
andq %rdi, %rcx
xorq %rdx, %rcx
imulq %rsi, %rcx
shrq $0x38, %rax
xorq %rcx, %rax
imulq %rsi, %rax
movq %rax, 0xb8(%r14)
movq (%r12), %rbx
movl (%r15), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %rbx, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x2362e
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x2362e
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x2362e
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x23637
movq (%rax,%rcx), %r14
testq %r14, %r14
jne 0x2365a
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r14
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r14, %rdi
movq %r12, %rsi
leaq 0x10aad5(%rip), %rdx    # 0x12e13c
callq 0xffe2b
testb %al, %al
jne 0x238a5
movq %r12, %rdi
leaq 0x10aac5(%rip), %rsi    # 0x12e143
xorl %eax, %eax
callq 0xda80
testq %rax, %rax
jne 0x24218
leaq 0x60(%rsp), %rdi
callq 0xd6d0d
jmp 0x23418
movq %r12, %rdi
movq %r13, %rsi
callq 0x18948
leaq 0x20(%rsp), %rdi
callq 0xd6d0d
movq (%rsp), %rdi
movq %r12, %rsi
movl $0x1, %edx
callq 0x21b0e
testq %rax, %rax
je 0x225dd
jmp 0x241fa
xorl %r13d, %r13d
cmpb $0x1, 0x3a(%r13)
je 0x24238
movq %r13, %rdi
movq %r12, %rsi
callq 0x2512b
testq %rax, %rax
jne 0x2424d
movq (%rsp), %r14
movq 0xb8(%r14), %rbx
movq %r13, %rdi
callq 0x25312
movq %rbx, %rdi
movq %rax, %rsi
callq 0xebcb
movq %rax, 0xb8(%r14)
jmp 0x22474
movq %r12, %rdi
leaq 0x10aa3d(%rip), %rsi    # 0x12e164
callq 0x1130c
testb %al, %al
je 0x238b9
movq (%r12), %rbx
movl (%r15), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %rbx, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbx, %rdx
je 0x2378e
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbx, %rdx
je 0x2378e
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbx, %rdx
je 0x2378e
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbx, %rdx
jne 0x23797
movq (%rax,%rcx), %r13
testq %r13, %r13
jne 0x237ba
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbx, %rsi
callq 0xe9bc5
movq %rax, %r13
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x115fac
movq 0x40(%r13), %rax
testq %rax, %rax
jne 0x237d6
movq %r13, %rdi
leaq 0x1165bc(%rip), %rsi    # 0x139d89
callq 0xeb49c
movq 0x40(%r13), %rax
movq %r12, %rdi
callq *%rax
testb %al, %al
jne 0x225dd
leaq 0xe8(%rsp), %rdi
movq %rdi, 0x20(%rsp)
leaq 0x90(%rsp), %rsi
callq 0xd6675
movq 0x20(%rsp), %rbx
movq $0x4, 0x10(%rbx)
callq 0xf18e
movl $0x4, %esi
movq %rbx, %rdi
movabsq $0x67ce6dd302fec85d, %rdx # imm = 0x67CE6DD302FEC85D
movq %rax, %rcx
callq 0xd68a8
movq %rax, %r14
movq (%rsp), %r13
movq %r13, 0x10(%rax)
movq %rax, %rdi
movq %r13, %rsi
movq %r12, %rdx
callq 0xf3b5
testq %rax, %rax
jne 0x2424d
movq %r14, %rdi
callq 0xbe7e4
movq (%r13), %rsi
movq %r13, %rdi
movq %rax, %rdx
callq 0x55b79
movq %r12, %rdi
leaq 0x10a8d0(%rip), %rsi    # 0x12e13c
callq 0x1130c
testb %al, %al
jne 0x2389e
movq %r12, %rdi
leaq 0x10a8c4(%rip), %rsi    # 0x12e143
xorl %eax, %eax
callq 0xda80
testq %rax, %rax
jne 0x2424d
leaq 0x20(%rsp), %rdi
callq 0xd6d0d
jmp 0x23734
movq 0x20(%rsp), %rdi
jmp 0x238aa
movq 0x60(%rsp), %rdi
movl $0x4, %esi
callq 0xd6d45
jmp 0x225dd
movq %r12, %rdi
leaq 0x10a8b0(%rip), %rsi    # 0x12e173
callq 0x1130c
testb %al, %al
je 0x23914
movq (%rsp), %rax
movq $0x0, 0x110(%rax)
movq %r12, %rdi
leaq 0x109e2b(%rip), %rsi    # 0x12d710
callq 0x1130c
testb %al, %al
jne 0x225dd
movq %r12, %rdi
leaq 0x10a887(%rip), %rsi    # 0x12e183
callq 0x1130c
testb %al, %al
je 0x23a69
movb $0x1, %al
movl %eax, 0x58(%rsp)
jmp 0x225dd
movq %r12, %rdi
leaq 0x10a8ac(%rip), %rsi    # 0x12e1ca
callq 0x1130c
testb %al, %al
je 0x23a2b
leaq 0xe8(%rsp), %rdi
movq %rdi, 0x50(%rsp)
leaq 0x90(%rsp), %rsi
callq 0xd6675
movq 0x50(%rsp), %r13
movq $0x3, 0x10(%r13)
leaq 0x60(%rsp), %rbx
movq %rbx, %rdi
callq 0x109030
movq %r13, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0xd68d9
movq (%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
movq %rbx, %rdx
callq 0x213bd
testq %rax, %rax
jne 0x2426f
movq %r12, %rdi
leaq 0x10a845(%rip), %rsi    # 0x12e1d7
callq 0x1130c
movq %r12, %rdi
leaq 0x10a83e(%rip), %rsi    # 0x12e1df
callq 0x1130c
movb %al, 0xf(%rsp)
movq 0xd8(%rsp), %rdi
callq 0x125bf
movl $0x3, %esi
movq %r13, %rdi
movabsq $0x2d2648b9bef99573, %rdx # imm = 0x2D2648B9BEF99573
movq %rax, %rcx
callq 0xd68a8
movq %rax, %rbx
movq 0xa8(%r14), %rax
movq %rax, 0xc0(%rsp)
xorl %eax, %eax
callq 0x109c82
movl $0x3, %esi
movq %r13, %rdi
movabsq $-0x503db0e6e1c2e704, %rdx # imm = 0xAFC24F191E3D18FC
movq %rax, %rcx
callq 0xd68a8
movq %rax, %r13
movq %r12, %rdi
leaq 0x10a7e1(%rip), %rsi    # 0x12e1f2
callq 0x1130c
testb %al, %al
movq %rbx, 0x10(%rsp)
je 0x23cee
movq %rbx, %rdi
jmp 0x23e33
movq %r12, %rdi
leaq 0x10a7ca(%rip), %rsi    # 0x12e1ff
callq 0x1130c
movq %r12, %rdi
testb %al, %al
je 0x23b89
leaq 0x10a793(%rip), %rsi    # 0x12e1df
callq 0x1130c
testb %al, %al
je 0x23d2e
movq (%rsp), %rax
movb $0x1, 0xca(%rax)
jmp 0x2412c
leaq 0xe8(%rsp), %rdi
movq %rdi, 0x20(%rsp)
leaq 0x90(%rsp), %rsi
callq 0xd6675
movq 0x20(%rsp), %rbx
movq $0x4, 0x10(%rbx)
xorl %eax, %eax
callq 0x109c82
movl $0x4, %esi
movq %rbx, %rdi
movabsq $-0x503db0e6e1c2e704, %rdx # imm = 0xAFC24F191E3D18FC
movq %rax, %rcx
callq 0xd68a8
movq %rax, %r13
movq (%rsp), %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x213bd
testq %rax, %rax
jne 0x2424d
movq %r13, %rdi
leaq 0x123789(%rip), %rsi    # 0x14725f
callq 0x10a962
movq 0x8(%r13), %rdx
testb %al, %al
je 0x2422f
movabsq $-0x509c42b379fe4821, %rsi # imm = 0xAF63BD4C8601B7DF
testq %rdx, %rdx
movabsq $0x100000001b3, %rdi    # imm = 0x100000001B3
je 0x23b33
movb (%rdx), %al
movabsq $-0x340d631b7bdddcdb, %rsi # imm = 0xCBF29CE484222325
testb %al, %al
je 0x23b33
incq %rdx
movabsq $-0x340d631b7bdddcdb, %rcx # imm = 0xCBF29CE484222325
movzbl %al, %esi
xorq %rcx, %rsi
imulq %rdi, %rsi
movb (%rdx), %al
incq %rdx
movq %rsi, %rcx
testb %al, %al
jne 0x23b1d
movq 0xc8(%rsp), %rdi
callq 0xca94f
testq %rax, %rax
je 0x2428c
movq (%rax), %rax
testq %rax, %rax
je 0x2428c
movabsq $0x12d01d78049fae7, %rcx # imm = 0x12D01D78049FAE7
cmpq %rcx, (%rax)
jne 0x24299
movq (%rsp), %rcx
movq %rax, 0x110(%rcx)
movq %r12, %rdi
leaq 0x10dd4a(%rip), %rsi    # 0x1318c7
xorl %eax, %eax
callq 0xda80
jmp 0x2246b
leaq 0x10a6be(%rip), %rsi    # 0x12e24e
callq 0x1130c
testb %al, %al
je 0x23d55
leaq 0xe8(%rsp), %rdi
movq %rdi, 0x20(%rsp)
leaq 0x90(%rsp), %rsi
callq 0xd6675
movq 0x20(%rsp), %rbx
movq $0x3, 0x10(%rbx)
movq %r12, %rdi
callq 0xdd68
movq %rax, %rdi
callq 0xbf2b1
movl $0x3, %esi
movq %rbx, %rdi
movq %r14, %rdx
movq %rax, %rcx
callq 0xd68a8
cmpq $0x0, 0x10(%rax)
jne 0x23bfb
movq %rax, %rdi
movl $0x2e, %esi
callq 0x10a448
xorl %eax, %eax
callq 0x109c82
movl $0x3, %esi
movq %rbx, %rdi
movabsq $-0x503db0e6e1c2e704, %rdx # imm = 0xAFC24F191E3D18FC
movq %rax, %rcx
callq 0xd68a8
movq %rax, %r13
movq %r12, %rdi
leaq 0x10a632(%rip), %rsi    # 0x12e25b
movq %rax, %rdx
xorl %eax, %eax
callq 0xda80
testq %rax, %rax
jne 0x2424d
movq %r12, %rdi
leaq 0x10dc81(%rip), %rsi    # 0x1318c7
xorl %eax, %eax
callq 0xda80
testq %rax, %rax
jne 0x2424d
movq 0x120(%rsp), %rdi
movq %r13, %rsi
callq 0xb9e01
movq $0x0, 0x60(%rsp)
movq 0x8(%r13), %rsi
movq %r12, %rdi
leaq 0x60(%rsp), %rdx
callq 0xdbcc
testq %rax, %rax
jne 0x2424d
cmpq $0x0, 0x10(%rbp)
movq 0x60(%rsp), %rax
movq %rax, 0x10(%rsp)
je 0x23cd5
xorl %ebx, %ebx
movq 0x8(%rbp), %rax
movq (%rax,%rbx,8), %r14
movq 0x10(%rsp), %rdi
callq 0xdd68
movq %rax, %r13
movq %r14, %rdi
callq 0xdd68
movq %r13, %rdi
movq %rax, %rsi
callq 0xdfa34
testl %eax, %eax
je 0x24279
incq %rbx
cmpq 0x10(%rbp), %rbx
jb 0x23c9c
movq (%rbp), %rsi
movq %rbp, %rdi
movq 0x10(%rsp), %r12
movq %r12, %rdx
callq 0x55b79
jmp 0x22474
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x213bd
testq %rax, %rax
jne 0x2426f
cmpq $0x0, 0x10(%r13)
je 0x23df7
movq 0x8(%r13), %rsi
movq 0x128(%rsp), %rdi
callq 0xd3d8e
movq %rax, 0xc0(%rsp)
jmp 0x23e14
movq %r12, %rdi
leaq 0x10a4d2(%rip), %rsi    # 0x12e20a
callq 0x1130c
testb %al, %al
je 0x24021
movq (%rsp), %rax
movb $0x0, 0xc8(%rax)
jmp 0x2412c
movq %r12, %rdi
leaq 0x10a51e(%rip), %rsi    # 0x12e27d
callq 0x1130c
testb %al, %al
je 0x24048
leaq 0xe8(%rsp), %rdi
movq %rdi, 0x20(%rsp)
leaq 0x90(%rsp), %rsi
callq 0xd6675
movq 0x20(%rsp), %r14
movq $0x3, 0x10(%r14)
movq %r12, %rdi
leaq 0x10a4ef(%rip), %rsi    # 0x12e28c
callq 0x1130c
testb %al, %al
je 0x24078
movb $0x0, 0x60(%rsp)
movq %r12, %rdi
leaq 0x10a4e1(%rip), %rsi    # 0x12e29a
leaq 0x60(%rsp), %rdx
xorl %eax, %eax
callq 0xda80
testq %rax, %rax
jne 0x2424d
movzbl 0x60(%rsp), %eax
cmpl $0x63, %eax
je 0x23de1
cmpl $0x68, %eax
jne 0x242e4
xorl %r13d, %r13d
cmpb $0x63, %al
sete %r13b
shll $0x5, %r13d
addq $0x28, %r13
jmp 0x24095
movq 0x18(%rsp), %rdi
movq 0xc0(%rsp), %rsi
callq 0xe3d7
movq %r13, %rdi
movq %rax, %rsi
callq 0x109612
movq 0x10(%rsp), %rbx
movq %r12, %rdi
leaq 0x10a3cf(%rip), %rsi    # 0x12e1f2
callq 0x1130c
testb %al, %al
je 0x23e48
movq %rbx, %rdi
movq (%rsp), %r14
movq %r14, %rsi
movq %r12, %rdx
callq 0x12757
testq %rax, %rax
je 0x23e4c
jmp 0x2426f
movq (%rsp), %r14
movq $0x0, 0x88(%rsp)
movq 0x138(%r14), %rdi
movq 0x68(%rsp), %rcx
movq 0x8(%r13), %r8
movq 0x80(%rsp), %rsi
movq %r12, %rdx
leaq 0x88(%rsp), %r9
callq 0x254d9
testq %rax, %rax
jne 0x2426f
movq 0x88(%rsp), %rbx
testq %rbx, %rbx
je 0x23ec9
leaq 0xe0(%rbx), %rdi
movq 0x10(%rsp), %rsi
callq 0x126e7
movq %rbx, %rdi
movq (%rsp), %rsi
movl $0x1, %edx
movq %r12, %rcx
callq 0x21c85
testq %rax, %rax
je 0x23ffd
jmp 0x2426f
movq 0x50(%rsp), %rsi
leaq 0x20(%rsp), %rdi
movq %rdi, 0xd0(%rsp)
callq 0xd6675
movq 0xd0(%rsp), %r13
movq $0x4, 0x10(%r13)
movq (%rsp), %r14
movq 0x138(%r14), %rbx
callq 0x206d9
movq (%rbx), %rsi
movq %rbx, %rdi
movq %rax, %rdx
callq 0x55b79
movq %rax, %rbx
movq %rax, 0x88(%rsp)
movq %r14, 0x20(%rax)
movups 0x138(%r14), %xmm0
movups %xmm0, 0x138(%rax)
movq 0x110(%r14), %rax
movq %rax, 0x110(%rbx)
movb 0xc8(%r14), %al
movb %al, 0xc8(%rbx)
movq 0x68(%rsp), %rdx
movq %rbx, %rdi
movq 0x80(%rsp), %rsi
callq 0x20900
movb 0xf(%rsp), %al
movb %al, 0xca(%rbx)
movq 0xc0(%rsp), %rax
movq %rax, 0xb0(%rbx)
leaq 0xe0(%rbx), %rdi
movq 0x10(%rsp), %rsi
callq 0x1238a
movq %rbx, %rdi
movq %r14, %rsi
movl $0x1, %edx
movq %r12, %rcx
callq 0x21c85
testq %rax, %rax
jne 0x242a6
movq 0x88(%rsp), %rbx
movq 0x18(%rsp), %rdi
movq %rbx, %rsi
callq 0x25878
callq 0x273b1
movl $0x4, %esi
movq %r13, %rdi
movabsq $-0x4b14f1d5a904cf79, %rdx # imm = 0xB4EB0E2A56FB3087
movq %rax, %rcx
callq 0xd68a8
movq %rbx, 0x8(%rax)
movq %rax, %rdi
callq 0xbe7e4
movq (%r14), %rsi
movq %r14, %rdi
movq %rax, %rdx
callq 0x55b79
leaq 0xd0(%rsp), %rdi
callq 0xd6d0d
movq %r12, %rdi
leaq 0x109711(%rip), %rsi    # 0x12d718
xorl %eax, %eax
callq 0xda80
testq %rax, %rax
jne 0x2426f
leaq 0x50(%rsp), %rdi
jmp 0x22479
movq %r12, %rdi
leaq 0x10a1f3(%rip), %rsi    # 0x12e21e
callq 0x1130c
testb %al, %al
je 0x240f7
movq (%rsp), %rax
movb $0x1, 0xd8(%rax)
jmp 0x2412c
movq %r12, %rdi
leaq 0x10a1a0(%rip), %rsi    # 0x12e1f2
callq 0x1130c
testb %al, %al
je 0x242b3
movq 0xd8(%rsp), %rdi
movq (%rsp), %rsi
movq %r12, %rdx
callq 0x12757
jmp 0x24123
movq %r12, %rdi
leaq 0x10a241(%rip), %rsi    # 0x12e2c3
callq 0x1130c
movl $0x28, %r13d
testb %al, %al
jne 0x242d2
xorl %eax, %eax
callq 0x109c82
movl $0x3, %esi
movq %r14, %rdi
movabsq $-0x503db0e6e1c2e704, %rdx # imm = 0xAFC24F191E3D18FC
movq %rax, %rcx
callq 0xd68a8
movq %rax, %r14
movq %r12, %rdi
leaq 0x10a254(%rip), %rsi    # 0x12e317
callq 0x1130c
testb %al, %al
je 0x24142
movq %r14, %rdi
movl $0x22, %esi
callq 0x10a448
movq %r12, %rdi
leaq 0x10a23b(%rip), %rsi    # 0x12e31e
movq %r14, %rdx
xorl %eax, %eax
callq 0xda80
movq %rax, %rbx
movb $0x22, %al
jmp 0x2417f
movq %r12, %rdi
leaq 0x10a135(%rip), %rsi    # 0x12e236
callq 0x1130c
testb %al, %al
je 0x2412c
movq %r12, %rdi
leaq 0x10a12e(%rip), %rsi    # 0x12e242
movq 0x118(%rsp), %rdx
xorl %eax, %eax
callq 0xda80
testq %rax, %rax
jne 0x241fa
movq %r12, %rdi
leaq 0x10d791(%rip), %rsi    # 0x1318c7
xorl %eax, %eax
callq 0xda80
jmp 0x236c3
movq %r12, %rdi
leaq 0x10a1de(%rip), %rsi    # 0x12e32a
callq 0x1130c
testb %al, %al
je 0x242db
movq %r14, %rdi
movl $0x3c, %esi
callq 0x10a448
movq %r12, %rdi
leaq 0x10a1c1(%rip), %rsi    # 0x12e331
movq %r14, %rdx
xorl %eax, %eax
callq 0xda80
movq %rax, %rbx
movb $0x3e, %al
testq %rbx, %rbx
jne 0x24250
movzbl %al, %esi
movq %r14, %rdi
callq 0x10a448
movq %r12, %rdi
leaq 0x10d72a(%rip), %rsi    # 0x1318c7
xorl %eax, %eax
callq 0xda80
testq %rax, %rax
jne 0x2424d
addq (%rsp), %r13
movq %r13, %rdi
movq %r14, %rsi
callq 0xb9e01
jmp 0x22474
cmpq $0x2, 0x10(%rbp)
jb 0x241d8
leaq 0x10a1cd(%rip), %rsi    # 0x12e39c
jmp 0x241f0
cmpb $0x0, 0x5c(%rsp)
je 0x241e9
leaq 0x90(%rsp), %rdi
callq 0xd6d2c
xorl %ebx, %ebx
jmp 0x2425a
leaq 0x109e16(%rip), %rsi    # 0x12e006
movq %r12, %rdi
xorl %eax, %eax
callq 0xde10
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
jmp 0x24255
leaq 0x109e4b(%rip), %rsi    # 0x12e059
movq %r12, %rdi
xorl %eax, %eax
callq 0xde10
movq %rax, %rbx
movq 0x60(%rsp), %rdi
jmp 0x24255
movq 0x8(%r14), %rdx
leaq 0x109e6a(%rip), %rsi    # 0x12e097
jmp 0x24243
leaq 0x10ab02(%rip), %rsi    # 0x12ed38
jmp 0x24243
movq 0x8(%r14), %rdx
leaq 0x109e87(%rip), %rsi    # 0x12e0ca
movq %r12, %rdi
xorl %eax, %eax
callq 0xde10
movq %rax, %rbx
movq 0x20(%rsp), %rdi
callq 0xd6d2c
movq %rbx, %rax
addq $0x158, %rsp            # imm = 0x158
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x50(%rsp), %rdi
jmp 0x24255
leaq 0x109fe4(%rip), %rsi    # 0x12e264
movq %r12, %rdi
xorl %eax, %eax
callq 0xde10
jmp 0x2424d
movq 0x8(%r13), %rdx
leaq 0x109ef9(%rip), %rsi    # 0x12e190
jmp 0x24243
movq 0x8(%r13), %rdx
leaq 0x109f08(%rip), %rsi    # 0x12e1ac
jmp 0x24243
movq %rax, %rbx
movq 0xd0(%rsp), %rdi
jmp 0x24255
movq %r12, %rdi
callq 0x18844
movq %r12, %rdi
movq %rax, %rsi
callq 0x18948
leaq 0x10a0a7(%rip), %rsi    # 0x12e374
jmp 0x241f0
leaq 0x109ffa(%rip), %rsi    # 0x12e2d3
jmp 0x24280
leaq 0x10a05b(%rip), %rsi    # 0x12e33d
jmp 0x24280
leaq 0x109fba(%rip), %rsi    # 0x12e2a5
jmp 0x24280