// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_feature_s_setup_functions
er_t xoico_feature_s_setup_functions( xoico_feature_s* o, const xoico_host* host )
{
    // xoico_feature.x:170:1
    BLM_INIT_LEVEL(0);
    xoico_compiler_s* compiler = xoico_host_a_compiler(host);
    sc_t sc_name = xoico_compiler_s_nameof(compiler,o->signature.name );
    sc_t sc_obj_type = xoico_compiler_s_nameof(compiler,xoico_host_a_obj_type(host) );
    sc_t sc_spect_name = ((st_s*)BLM_LEVEL_T_PUSH(0,st_s,xoico_host_a_create_spect_name(host)))->sc;
    
    st_s* st_ret_typespec = ((st_s*)BLM_LEVEL_T_PUSH(0,st_s,st_s_create()));
    
    bl_t has_ret = xoico_signature_s_returns_a_value(&(o->signature));
    BLM_TRY(xoico_signature_s_expand_ret_x(&(o->signature),host,((x_sink*)( st_ret_typespec ))))
    
    sc_t sc_ret_typespec = st_ret_typespec->sc;
    bl_t flag_const = o->signature.arg_o->typespec.access_class == TYPEOF_const;
    bl_t flag_discardable = o->signature.arg_o->typespec.access_class == TYPEOF_discardable;
    
    bl_t always_defined = ( o->strict || o->default_body || o->st_default_func_name.size > 0 );
    
    if( o->flag_a )
    {BLM_INIT_LEVEL(1);
        st_s* st = ((st_s*)BLM_LEVEL_T_PUSH(1,st_s,st_s_create()));
        st_s_push_fa(st,"#<sc_t> a_#<sc_t>( ", sc_ret_typespec, sc_name );
        st_s_push_fa(st,flag_const ? "c" : flag_discardable ? "d" : "m" );
        st_s_push_fa(st," @* o" );
        BLM_TRY(xoico_args_s_expand_x(&(o->signature.args),host, false,((x_sink*)( st ))))
        st_s_push_fa(st," ) { verbatim_C{" );
        st_s_push_fa(st,"const #<sc_t>* p = #<sc_t>_get_aware( o ); ", sc_spect_name, sc_spect_name );
        st_s_push_fa(st,"assert( p->#<sc_t> ); ", sc_name );
        if( has_ret ) st_s_push_fa(st,"return " );
        st_s_push_fa(st,"p->#<sc_t>( o", sc_name );
        BLM_TRY(xoico_args_s_expand_name(&(o->signature.args),host, false,((x_sink*)( st ))))
        st_s_push_fa(st," ); } };" );
    
        xoico_func_s* func = xoico_feature_s_push_func_from_sc(o,host, st->sc );
        func->declare_in_expand_forward = false;
    
        xoico_func_s* func_to_group = xoico_func_s_clone(func);
        xoico_body_s_attach( &(func_to_group->body ),  NULL);
        BLM_TRY(xoico_func_s_freeze_global_name(func_to_group,host )) // set global name before local name is changed
        func_to_group->name = o->signature.name;
        func_to_group->expandable = false;
        x_array_push_d(((x_array*)(&(o->funcs_return_to_group))),((x_inst*)(func_to_group )));
    BLM_DOWN();}
    
    if( o->flag_a )
    {BLM_INIT_LEVEL(1);
        st_s* st = ((st_s*)BLM_LEVEL_T_PUSH(1,st_s,st_s_create()));
        st_s_push_fa(st,"bl_t defines_#<sc_t>( c @* o ) ", sc_name );
        if( always_defined )
        {
            st_s_push_fa(st,"{ return true; };", sc_name );
        }
        else
        {
            st_s_push_fa(st,"{ verbatim_C { return #<sc_t>_get_aware( o )->#<sc_t> != NULL; } };", sc_spect_name, sc_name );
        }
    
        xoico_func_s* func = xoico_feature_s_push_func_from_sc(o,host, st->sc );
        func->declare_in_expand_forward = false;
    
        xoico_func_s* func_to_group = xoico_func_s_clone(func);
        xoico_body_s_attach( &(func_to_group->body ),  NULL);
        func_to_group->expandable = false;
        x_array_push_d(((x_array*)(&(o->funcs_return_to_group))),((x_inst*)(func_to_group )));
    BLM_DOWN();}
    
    if( o->flag_t )
    {BLM_INIT_LEVEL(1);
        /// new
        st_s* st = ((st_s*)BLM_LEVEL_T_PUSH(1,st_s,st_s_create()));
        st_s_push_fa(st,"#<sc_t> t_#<sc_t>( ", sc_ret_typespec, sc_name );
        st_s_push_fa(st,flag_const ? "c" : flag_discardable ? "d" : "m" );
        st_s_push_fa(st," #<sc_t>* o, tp_t t", sc_obj_type );
        BLM_TRY(xoico_args_s_expand_x(&(o->signature.args),host, false,((x_sink*)( st ))))
        st_s_push_fa(st," ) { verbatim_C{" );
        st_s_push_fa(st,"const #<sc_t>* p = #<sc_t>_get_typed( t ); ", sc_spect_name, sc_spect_name );
        st_s_push_fa(st,"assert( p->#<sc_t> ); ", sc_name );
        if( has_ret ) st_s_push_fa(st,"return " );
        st_s_push_fa(st,"p->#<sc_t>( o", sc_name );
        BLM_TRY(xoico_args_s_expand_name(&(o->signature.args),host, false,((x_sink*)( st ))))
        st_s_push_fa(st," ); } };" );
    
        xoico_func_s* func = xoico_feature_s_push_func_from_sc(o,host, st->sc );
        func->declare_in_expand_forward = false;
    
        xoico_func_s* func_to_group = xoico_func_s_clone(func);
        xoico_body_s_attach( &(func_to_group->body ),  NULL);
        func_to_group->expandable = false;
        x_array_push_d(((x_array*)(&(o->funcs_return_to_group))),((x_inst*)(func_to_group )));
    BLM_DOWN();}
    
    if( o->flag_t )
    {BLM_INIT_LEVEL(1);
        st_s* st = ((st_s*)BLM_LEVEL_T_PUSH(1,st_s,st_s_create()));
        st_s_push_fa(st,"bl_t t_defines_#<sc_t>( tp_t t ) ", sc_name );
        if( always_defined )
        {
            st_s_push_fa(st,"{ return true; };", sc_name );
        }
        else
        {
            st_s_push_fa(st,"{ verbatim_C{ return #<sc_t>_get_typed( t )->#<sc_t> != NULL; } };", sc_spect_name, sc_name );
        }
    
        xoico_func_s* func = xoico_feature_s_push_func_from_sc(o,host, st->sc );
        func->declare_in_expand_forward = false;
    
        xoico_func_s* func_to_group = xoico_func_s_clone(func);
        xoico_body_s_attach( &(func_to_group->body ),  NULL);
        func_to_group->expandable = false;
        x_array_push_d(((x_array*)(&(o->funcs_return_to_group))),((x_inst*)(func_to_group )));
    BLM_DOWN();}
    
    if( o->flag_p )
    {BLM_INIT_LEVEL(1);
        st_s* st = ((st_s*)BLM_LEVEL_T_PUSH(1,st_s,st_s_create()));
        st_s_push_fa(st,"#<sc_t> p_#<sc_t>( c #<sc_t>* p, ", sc_ret_typespec, sc_name, sc_spect_name );
        st_s_push_fa(st,flag_const ? "c" : flag_discardable ? "d" : "m" );
        st_s_push_fa(st," #<sc_t>* o", sc_obj_type );
        BLM_TRY(xoico_args_s_expand_x(&(o->signature.args),host, false,((x_sink*)( st ))))
        st_s_push_fa(st," ) { verbatim_C {" );
        st_s_push_fa(st,"assert( p->#<sc_t> ); ", sc_name );
        if( has_ret ) st_s_push_fa(st,"return " );
        st_s_push_fa(st,"p->#<sc_t>( o", sc_name );
        BLM_TRY(xoico_args_s_expand_name(&(o->signature.args),host, false,((x_sink*)( st ))))
        st_s_push_fa(st," ); } };" );
    
        xoico_func_s* func = xoico_feature_s_push_func_from_sc(o,host, st->sc );
        func->declare_in_expand_forward = false;
    BLM_DOWN();}
    
    if( o->flag_p )
    {BLM_INIT_LEVEL(1);
        st_s* st = ((st_s*)BLM_LEVEL_T_PUSH(1,st_s,st_s_create()));
        st_s_push_fa(st,"bl_t p_defines_#<sc_t>( c #<sc_t>* p ) ", sc_name, sc_spect_name );
        if( always_defined )
        {
            st_s_push_fa(st,"{ return true; };", sc_name );
        }
        else
        {
            st_s_push_fa(st,"{ verbatim_C{ return p->#<sc_t> != NULL; } };", sc_name );
        }
    
        xoico_func_s* func = xoico_feature_s_push_func_from_sc(o,host, st->sc );
        func->declare_in_expand_forward = false;
    BLM_DOWN();}
    
    if( o->flag_r )
    {BLM_INIT_LEVEL(1);
        st_s* st = ((st_s*)BLM_LEVEL_T_PUSH(1,st_s,st_s_create()));
        st_s_push_fa(st,"#<sc_t> r_#<sc_t>(", sc_ret_typespec, sc_name );
        st_s_push_fa(st," c sr_s* o" );
        BLM_TRY(xoico_args_s_expand_x(&(o->signature.args),host, false,((x_sink*)( st ))))
        st_s_push_fa(st," ) { verbatim_C {" );
        if( !flag_const ) st_s_push_fa(st,"ASSERT( !sr_s_is_const( o ) ); " );
        st_s_push_fa(st,"const #<sc_t>* p = (const #<sc_t>*)ch_spect_p( o->p, TYPEOF_#<sc_t> ); ",
            sc_spect_name,
            sc_spect_name,
            sc_spect_name
        );
    
        st_s_push_fa(st,"assert( p->#<sc_t> ); ", sc_name );
        if( has_ret ) st_s_push_fa(st,"return " );
        st_s_push_fa(st,"p->#<sc_t>( o->o", sc_name );
        BLM_TRY(xoico_args_s_expand_name(&(o->signature.args),host, false,((x_sink*)( st ))))
        st_s_push_fa(st," ); } };" );
    
        xoico_func_s* func = xoico_feature_s_push_func_from_sc(o,host, st->sc );
        func->declare_in_expand_forward = false;
    BLM_DOWN();}
    
    if( o->flag_r )
    {BLM_INIT_LEVEL(1);
        st_s* st = ((st_s*)BLM_LEVEL_T_PUSH(1,st_s,st_s_create()));
    
        st_s_push_fa(st,"bl_t r_defines_#<sc_t>( c sr_s* o ) ", sc_name );
        if( always_defined )
        {
            st_s_push_fa(st,"{ return true; };", sc_name );
        }
        else
        {
            st_s_push_fa(st,"{ verbatim_C{ return ( (#<sc_t>*)ch_spect_p( o->p, TYPEOF_#<sc_t> ) )->#<sc_t> != NULL; } };", sc_spect_name, sc_spect_name, sc_name );
        }
    
        xoico_func_s* func = xoico_feature_s_push_func_from_sc(o,host, st->sc );
        func->declare_in_expand_forward = false;
    BLM_DOWN();}
    
    if( o->st_default_func_name.size > 0 )
    {BLM_INIT_LEVEL(1);
        st_s* st = ((st_s*)BLM_LEVEL_T_PUSH(1,st_s,st_s_create()));
    
        if( o->signature.direct_return_arg )
        {
            st_s_push_fa(st,"#<sc_t>", xoico_compiler_s_nameof(compiler,o->signature.direct_return_arg->name ) );
        }
        else
        {
            st_s_push_fa(st,"#<sc_t>", sc_ret_typespec );
        }
    
        st_s_push_fa(st," #<sc_t>(", o->st_default_func_name.sc );
        st_s_push_fa(st,flag_const ? " c" : " m" );
        st_s_push_fa(st," #<sc_t>* o", sc_obj_type );
        BLM_TRY(xoico_args_s_expand_x(&(o->signature.args),host, false,((x_sink*)( st ))))
        st_s_push_fa(st," );" );
    
        xoico_func_s* func = xoico_feature_s_push_func_from_sc(o,host, st->sc );
        func->declare_in_expand_forward = false;
        if( o->default_body ) xoico_body_s_attach( &(func->body ),  ((xoico_body_s*)bcore_fork(o->default_body)));
    
        xoico_func_s* func_to_group = xoico_func_s_clone(func);
        xoico_body_s_attach( &(func_to_group->body ),  NULL);
        func_to_group->expandable = false;
        x_array_push_d(((x_array*)(&(o->funcs_return_to_group))),((x_inst*)(func_to_group )));
    BLM_DOWN();}
    
    BLM_RETURNV(er_t, 0)
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x18b5e4(%rip), %rax    # 0x1a8dd0
movq (%rax), %rsi
leaq 0x38(%rsp), %r15
movq %r15, %rdi
callq 0xe0431
movq $0x0, 0x10(%r15)
movq (%r14), %r12
leaq 0x181e92(%rip), %r15    # 0x19f6a0
movl 0x181e8c(%rip), %eax    # 0x19f6a0
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %r12, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r12, %rdx
je 0x1d86b
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r12, %rdx
je 0x1d86b
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r12, %rdx
je 0x1d86b
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r12, %rdx
jne 0x1e6c3
movq (%rax,%rcx), %r13
testq %r13, %r13
jne 0x1d89b
movabsq $-0x1e682f89ce03d7c8, %rdi # imm = 0xE197D07631FC2838
movq %r12, %rsi
callq 0xf3f85
movq %rax, %r13
leaq 0x181e10(%rip), %rdi    # 0x19f6a0
movq %r12, %rsi
movq %rax, %rdx
callq 0x12128c
movq %r14, %rdi
callq *0x20(%r13)
movq 0x10(%rbx), %rsi
movq %rax, 0x30(%rsp)
movq %rax, %rdi
callq 0xe39f
movq %rax, %r13
movq (%r14), %r12
movl 0x181de1(%rip), %eax    # 0x19f6a0
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %r12, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r12, %rdx
je 0x1d916
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r12, %rdx
je 0x1d916
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r12, %rdx
je 0x1d916
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r12, %rdx
jne 0x1e6cb
movq (%rax,%rcx), %rbp
testq %rbp, %rbp
jne 0x1d946
movabsq $-0x1e682f89ce03d7c8, %rdi # imm = 0xE197D07631FC2838
movq %r12, %rsi
callq 0xf3f85
movq %rax, %rbp
leaq 0x181d65(%rip), %rdi    # 0x19f6a0
movq %r12, %rsi
movq %rax, %rdx
callq 0x12128c
movq %r14, %rdi
callq *0x30(%rbp)
movq 0x30(%rsp), %rdi
movq %rax, %rsi
callq 0xe39f
movq %rax, 0x28(%rsp)
movq (%r14), %r12
movl 0x181d39(%rip), %eax    # 0x19f6a0
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r15,%rax,8), %rcx
movq 0x18(%r15,%rax,8), %rdx
andq %r12, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r12, %rdx
je 0x1d9be
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r12, %rdx
je 0x1d9be
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r12, %rdx
je 0x1d9be
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r12, %rdx
jne 0x1e6d2
movq (%rax,%rcx), %rbp
testq %rbp, %rbp
jne 0x1d9ee
movabsq $-0x1e682f89ce03d7c8, %rdi # imm = 0xE197D07631FC2838
movq %r12, %rsi
callq 0xf3f85
movq %rax, %rbp
leaq 0x181cbd(%rip), %rdi    # 0x19f6a0
movq %r12, %rsi
movq %rax, %rdx
callq 0x12128c
leaq 0x8(%rbx), %r12
movabsq $-0x503db0e6e1c2e704, %r15 # imm = 0xAFC24F191E3D18FC
movq %r14, %rdi
callq *0x38(%rbp)
leaq 0x38(%rsp), %rbp
movq %rbp, %rdi
xorl %esi, %esi
movq %r15, %rdx
movq %rax, %rcx
callq 0xe0676
movq 0x8(%rax), %rax
movq %rax, 0x10(%rsp)
xorl %eax, %eax
callq 0x114bbb
movq %rbp, %rdi
xorl %esi, %esi
movq %r15, %rdx
movq %rax, %rcx
callq 0xe0676
movq %rax, %rbp
movq 0x30(%rbx), %rax
movabsq $0x3173c900e37ae1df, %rcx # imm = 0x3173C900E37AE1DF
cmpq %rcx, %rax
je 0x1da57
movb $0x1, 0x7(%rsp)
testq %rax, %rax
jne 0x1da61
cmpq $0x0, 0x48(%rbx)
setne 0x7(%rsp)
movq %r12, %rdi
movq %r14, %rsi
movq %rbp, %rdx
callq 0x14c62
movq 0x58(%rbx), %rax
movb $0x1, 0x6(%rsp)
cmpb $0x0, 0x110(%rbx)
jne 0x1da98
cmpq $0x0, 0x108(%rbx)
jne 0x1da98
cmpq $0x0, 0xf8(%rbx)
setne 0x6(%rsp)
movq 0x8(%rbp), %rcx
movq %rcx, 0x18(%rsp)
cmpb $0x1, 0x113(%rbx)
movq 0x30(%rax), %rax
movq %rax, 0x20(%rsp)
jne 0x1dc94
leaq 0x68(%rsp), %rdi
movq %rdi, 0x8(%rsp)
leaq 0x38(%rsp), %rsi
callq 0xe0431
movq 0x8(%rsp), %r12
movq $0x1, 0x10(%r12)
xorl %eax, %eax
callq 0x114bbb
movl $0x1, %esi
movq %r12, %rdi
movq %r15, %rdx
movq %rax, %rcx
callq 0xe0676
movq %rax, %rbp
leaq 0x11aea4(%rip), %rsi    # 0x1389a1
movq %rax, %rdi
movq 0x18(%rsp), %rdx
movq %r13, %rcx
xorl %eax, %eax
callq 0x1157cb
movq 0x20(%rsp), %rdx
movabsq $-0x12e90733f18038df, %rax # imm = 0xED16F8CC0E7FC721
cmpq %rax, %rdx
leaq 0x11f67c(%rip), %rax    # 0x13d1a4
leaq 0x11b1eb(%rip), %rcx    # 0x138d1a
cmoveq %rax, %rcx
movabsq $0x65c9718e19e3df34, %rax # imm = 0x65C9718E19E3DF34
cmpq %rax, %rdx
leaq 0x11b1d0(%rip), %rsi    # 0x138d17
cmovneq %rcx, %rsi
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1157cb
leaq 0x11ae59(%rip), %rsi    # 0x1389b5
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1157cb
leaq 0x60(%rbx), %r12
movq %r12, %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rbp, %rcx
callq 0x143aa
leaq 0x11ae3a(%rip), %rsi    # 0x1389bb
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1157cb
leaq 0x11ae3a(%rip), %rsi    # 0x1389cc
movq %rbp, %rdi
movq 0x10(%rsp), %rcx
movq %rcx, %rdx
xorl %eax, %eax
callq 0x1157cb
leaq 0x11ae4d(%rip), %rsi    # 0x1389f8
movq %rbp, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x1157cb
cmpb $0x0, 0x7(%rsp)
je 0x1dbd0
leaq 0x11ae49(%rip), %rsi    # 0x138a0f
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1157cb
leaq 0x11ae40(%rip), %rsi    # 0x138a17
xorl %r15d, %r15d
movq %rbp, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x1157cb
movq %r12, %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rbp, %rcx
callq 0x14417
leaq 0x11ae27(%rip), %rsi    # 0x138a25
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1157cb
movq 0x8(%rbp), %rdx
leaq 0xa0(%rbx), %r12
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1e6d9
movq 0xa0(%rbx), %rsi
movq %r12, %rdi
movq %rax, %rdx
callq 0x5b3a7
movb %r15b, 0x2a(%rax)
movq %rax, %rdi
callq 0x19dee
movq %rax, %r12
movq 0x38(%rax), %rdi
callq 0x18554
movq $0x0, 0x38(%r12)
movq %r12, %rdi
movq %r14, %rsi
callq 0x1a412
movq 0x10(%rbx), %rax
movq %rax, 0x8(%r12)
movb %r15b, 0x28(%r12)
leaq 0xc0(%rbx), %rdi
movq 0xc0(%rbx), %rsi
movq %r12, %rdx
callq 0x5b3a7
leaq 0x8(%rsp), %rdi
callq 0xe0b11
movabsq $-0x503db0e6e1c2e704, %r15 # imm = 0xAFC24F191E3D18FC
cmpb $0x1, 0x113(%rbx)
jne 0x1dd9b
leaq 0x68(%rsp), %rdi
movq %rdi, 0x8(%rsp)
leaq 0x38(%rsp), %rsi
callq 0xe0431
movq 0x8(%rsp), %r12
movq $0x1, 0x10(%r12)
xorl %eax, %eax
callq 0x114bbb
movl $0x1, %esi
movq %r12, %rdi
movq %r15, %rdx
movq %rax, %rcx
callq 0xe0676
movq %rax, %r12
leaq 0x11ad47(%rip), %rsi    # 0x138a2e
movq %rax, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x1157cb
cmpb $0x0, 0x6(%rsp)
je 0x1dd11
leaq 0x11ad4c(%rip), %rsi    # 0x138a4e
movq %r12, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x1157cb
jmp 0x1dd2a
leaq 0x11ad48(%rip), %rsi    # 0x138a60
movq %r12, %rdi
movq 0x10(%rsp), %rdx
movq %r13, %rcx
xorl %eax, %eax
callq 0x1157cb
movq 0x8(%r12), %rdx
leaq 0xa0(%rbx), %r12
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1e6d9
movq 0xa0(%rbx), %rsi
movq %r12, %rdi
movq %rax, %rdx
callq 0x5b3a7
xorl %ebp, %ebp
movb %bpl, 0x2a(%rax)
movq %rax, %rdi
callq 0x19dee
movq %rax, %r12
movq 0x38(%rax), %rdi
callq 0x18554
movq $0x0, 0x38(%r12)
movb %bpl, 0x28(%r12)
leaq 0xc0(%rbx), %rdi
movq 0xc0(%rbx), %rsi
movq %r12, %rdx
callq 0x5b3a7
leaq 0x8(%rsp), %rdi
callq 0xe0b11
cmpb $0x1, 0x112(%rbx)
jne 0x1df76
leaq 0x68(%rsp), %rdi
movq %rdi, 0x8(%rsp)
leaq 0x38(%rsp), %rsi
callq 0xe0431
movq 0x8(%rsp), %r12
movq $0x1, 0x10(%r12)
xorl %eax, %eax
callq 0x114bbb
movl $0x1, %esi
movq %r12, %rdi
movq %r15, %rdx
movq %rax, %rcx
callq 0xe0676
movq %rax, %rbp
leaq 0x11acb6(%rip), %rsi    # 0x138aa4
movq %rax, %rdi
movq 0x18(%rsp), %rdx
movq %r13, %rcx
xorl %eax, %eax
callq 0x1157cb
movq 0x20(%rsp), %rdx
movabsq $-0x12e90733f18038df, %rax # imm = 0xED16F8CC0E7FC721
cmpq %rax, %rdx
leaq 0x11f38b(%rip), %rax    # 0x13d1a4
leaq 0x11aefa(%rip), %rcx    # 0x138d1a
cmoveq %rax, %rcx
movabsq $0x65c9718e19e3df34, %rax # imm = 0x65C9718E19E3DF34
cmpq %rax, %rdx
leaq 0x11aedf(%rip), %rsi    # 0x138d17
cmovneq %rcx, %rsi
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1157cb
leaq 0x11ac6b(%rip), %rsi    # 0x138ab8
movq %rbp, %rdi
movq 0x28(%rsp), %rdx
xorl %eax, %eax
callq 0x1157cb
leaq 0x60(%rbx), %r12
movq %r12, %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rbp, %rcx
callq 0x143aa
leaq 0x11ab44(%rip), %rsi    # 0x1389bb
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1157cb
leaq 0x11ac44(%rip), %rsi    # 0x138acc
movq %rbp, %rdi
movq 0x10(%rsp), %rcx
movq %rcx, %rdx
xorl %eax, %eax
callq 0x1157cb
leaq 0x11ab57(%rip), %rsi    # 0x1389f8
movq %rbp, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x1157cb
cmpb $0x0, 0x7(%rsp)
je 0x1dec6
leaq 0x11ab53(%rip), %rsi    # 0x138a0f
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1157cb
leaq 0x11ab4a(%rip), %rsi    # 0x138a17
xorl %r15d, %r15d
movq %rbp, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x1157cb
movq %r12, %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rbp, %rcx
callq 0x14417
leaq 0x11ab31(%rip), %rsi    # 0x138a25
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1157cb
movq 0x8(%rbp), %rdx
leaq 0xa0(%rbx), %r12
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1e6d9
movq 0xa0(%rbx), %rsi
movq %r12, %rdi
movq %rax, %rdx
callq 0x5b3a7
movb %r15b, 0x2a(%rax)
movq %rax, %rdi
callq 0x19dee
movq %rax, %r12
movq 0x38(%rax), %rdi
callq 0x18554
movq $0x0, 0x38(%r12)
movb %r15b, 0x28(%r12)
leaq 0xc0(%rbx), %rdi
movq 0xc0(%rbx), %rsi
movq %r12, %rdx
callq 0x5b3a7
leaq 0x8(%rsp), %rdi
callq 0xe0b11
movabsq $-0x503db0e6e1c2e704, %r15 # imm = 0xAFC24F191E3D18FC
cmpb $0x1, 0x112(%rbx)
jne 0x1e07d
leaq 0x68(%rsp), %rdi
movq %rdi, 0x8(%rsp)
leaq 0x38(%rsp), %rsi
callq 0xe0431
movq 0x8(%rsp), %r12
movq $0x1, 0x10(%r12)
xorl %eax, %eax
callq 0x114bbb
movl $0x1, %esi
movq %r12, %rdi
movq %r15, %rdx
movq %rax, %rcx
callq 0xe0676
movq %rax, %r12
leaq 0x11ab2f(%rip), %rsi    # 0x138af8
movq %rax, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x1157cb
cmpb $0x0, 0x6(%rsp)
je 0x1dff3
leaq 0x11aa6a(%rip), %rsi    # 0x138a4e
movq %r12, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x1157cb
jmp 0x1e00c
leaq 0x11ab20(%rip), %rsi    # 0x138b1a
movq %r12, %rdi
movq 0x10(%rsp), %rdx
movq %r13, %rcx
xorl %eax, %eax
callq 0x1157cb
movq 0x8(%r12), %rdx
leaq 0xa0(%rbx), %r12
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1e6d9
movq 0xa0(%rbx), %rsi
movq %r12, %rdi
movq %rax, %rdx
callq 0x5b3a7
xorl %ebp, %ebp
movb %bpl, 0x2a(%rax)
movq %rax, %rdi
callq 0x19dee
movq %rax, %r12
movq 0x38(%rax), %rdi
callq 0x18554
movq $0x0, 0x38(%r12)
movb %bpl, 0x28(%r12)
leaq 0xc0(%rbx), %rdi
movq 0xc0(%rbx), %rsi
movq %r12, %rdx
callq 0x5b3a7
leaq 0x8(%rsp), %rdi
callq 0xe0b11
cmpb $0x1, 0x111(%rbx)
jne 0x1e1ff
leaq 0x68(%rsp), %rdi
movq %rdi, 0x8(%rsp)
leaq 0x38(%rsp), %rsi
callq 0xe0431
movq 0x8(%rsp), %r12
movq $0x1, 0x10(%r12)
xorl %eax, %eax
callq 0x114bbb
movl $0x1, %esi
movq %r12, %rdi
movq %r15, %rdx
movq %rax, %rcx
callq 0xe0676
movq %rax, %rbp
leaq 0x11aa8d(%rip), %rsi    # 0x138b5d
movq %rax, %rdi
movq 0x18(%rsp), %rdx
movq %r13, %rcx
movq 0x10(%rsp), %r8
xorl %eax, %eax
callq 0x1157cb
movq 0x20(%rsp), %rdx
movabsq $-0x12e90733f18038df, %rax # imm = 0xED16F8CC0E7FC721
cmpq %rax, %rdx
leaq 0x11f0a4(%rip), %rax    # 0x13d1a4
leaq 0x11ac13(%rip), %rcx    # 0x138d1a
cmoveq %rax, %rcx
movabsq $0x65c9718e19e3df34, %rax # imm = 0x65C9718E19E3DF34
cmpq %rax, %rdx
leaq 0x11abf8(%rip), %rsi    # 0x138d17
cmovneq %rcx, %rsi
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1157cb
leaq 0x11aa4b(%rip), %rsi    # 0x138b7f
movq %rbp, %rdi
movq 0x28(%rsp), %rdx
xorl %eax, %eax
callq 0x1157cb
leaq 0x60(%rbx), %r12
movq %r12, %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rbp, %rcx
callq 0x143aa
leaq 0x11aa2d(%rip), %rsi    # 0x138b8b
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1157cb
leaq 0x11a889(%rip), %rsi    # 0x1389f8
movq %rbp, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x1157cb
cmpb $0x0, 0x7(%rsp)
je 0x1e194
leaq 0x11a885(%rip), %rsi    # 0x138a0f
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1157cb
leaq 0x11a87c(%rip), %rsi    # 0x138a17
movq %rbp, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x1157cb
movq %r12, %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rbp, %rcx
callq 0x14417
leaq 0x11a866(%rip), %rsi    # 0x138a25
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1157cb
movq 0x8(%rbp), %rdx
leaq 0xa0(%rbx), %r12
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1e6d9
movq 0xa0(%rbx), %rsi
movq %r12, %rdi
movq %rax, %rdx
callq 0x5b3a7
movb $0x0, 0x2a(%rax)
leaq 0x8(%rsp), %rdi
callq 0xe0b11
cmpb $0x1, 0x111(%rbx)
jne 0x1e2be
leaq 0x8(%rsp), %r12
leaq 0x68(%rsp), %rdi
movq %rdi, (%r12)
leaq 0x38(%rsp), %rsi
callq 0xe0431
movq (%r12), %rbp
movq $0x1, 0x10(%rbp)
xorl %eax, %eax
callq 0x114bbb
movl $0x1, %esi
movq %rbp, %rdi
movq %r15, %rdx
movq %rax, %rcx
callq 0xe0676
movq %rax, %rbp
leaq 0x11a949(%rip), %rsi    # 0x138b9d
movq %rax, %rdi
movq %r13, %rdx
movq 0x10(%rsp), %rcx
xorl %eax, %eax
callq 0x1157cb
leaq 0x11a7e1(%rip), %rax    # 0x138a4e
leaq 0x11a951(%rip), %rsi    # 0x138bc5
cmpb $0x0, 0x6(%rsp)
cmovneq %rax, %rsi
movq %rbp, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x1157cb
movq 0x8(%rbp), %rdx
leaq 0xa0(%rbx), %rbp
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1e6d9
movq 0xa0(%rbx), %rsi
movq %rbp, %rdi
movq %rax, %rdx
callq 0x5b3a7
movb $0x0, 0x2a(%rax)
movq %r12, %rdi
callq 0xe0b11
cmpb $0x1, 0x114(%rbx)
jne 0x1e42e
leaq 0x68(%rsp), %rdi
movq %rdi, 0x8(%rsp)
leaq 0x38(%rsp), %rsi
callq 0xe0431
movq 0x8(%rsp), %r12
movq $0x1, 0x10(%r12)
xorl %eax, %eax
callq 0x114bbb
movl $0x1, %esi
movq %r12, %rdi
movq %r15, %rdx
movq %rax, %rcx
callq 0xe0676
movq %rax, %rbp
leaq 0x11a8e2(%rip), %rsi    # 0x138bf3
movq %rax, %rdi
movq 0x18(%rsp), %rdx
movq %r13, %rcx
xorl %eax, %eax
callq 0x1157cb
leaq 0x11a8dc(%rip), %rsi    # 0x138c06
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1157cb
leaq 0x60(%rbx), %r12
movq %r12, %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rbp, %rcx
callq 0x143aa
leaq 0x11a83c(%rip), %rsi    # 0x138b8b
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1157cb
movabsq $0x65c9718e19e3df34, %rax # imm = 0x65C9718E19E3DF34
cmpq %rax, 0x20(%rsp)
je 0x1e37b
leaq 0x11a8a0(%rip), %rsi    # 0x138c11
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1157cb
leaq 0x11a8af(%rip), %rsi    # 0x138c31
movq %rbp, %rdi
movq 0x10(%rsp), %rcx
movq %rcx, %rdx
movq %rcx, %r8
xorl %eax, %eax
callq 0x1157cb
leaq 0x11a65a(%rip), %rsi    # 0x1389f8
movq %rbp, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x1157cb
cmpb $0x0, 0x7(%rsp)
je 0x1e3c3
leaq 0x11a656(%rip), %rsi    # 0x138a0f
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1157cb
leaq 0x11a8af(%rip), %rsi    # 0x138c79
movq %rbp, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x1157cb
movq %r12, %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rbp, %rcx
callq 0x14417
leaq 0x11a637(%rip), %rsi    # 0x138a25
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1157cb
movq 0x8(%rbp), %rdx
leaq 0xa0(%rbx), %r12
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1e6d9
movq 0xa0(%rbx), %rsi
movq %r12, %rdi
movq %rax, %rdx
callq 0x5b3a7
movb $0x0, 0x2a(%rax)
leaq 0x8(%rsp), %rdi
callq 0xe0b11
cmpb $0x1, 0x114(%rbx)
jne 0x1e508
leaq 0x68(%rsp), %rdi
movq %rdi, 0x8(%rsp)
leaq 0x38(%rsp), %rsi
callq 0xe0431
movq 0x8(%rsp), %r12
movq $0x1, 0x10(%r12)
xorl %eax, %eax
callq 0x114bbb
movl $0x1, %esi
movq %r12, %rdi
movq %r15, %rdx
movq %rax, %rcx
callq 0xe0676
movq %rax, %r12
leaq 0x11a809(%rip), %rsi    # 0x138c8a
movq %rax, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x1157cb
cmpb $0x0, 0x6(%rsp)
je 0x1e4ab
leaq 0x11a5b2(%rip), %rsi    # 0x138a4e
movq %r12, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x1157cb
jmp 0x1e4c7
leaq 0x11a7fd(%rip), %rsi    # 0x138caf
movq %r12, %rdi
movq 0x10(%rsp), %rcx
movq %rcx, %rdx
movq %r13, %r8
xorl %eax, %eax
callq 0x1157cb
movq 0x8(%r12), %rdx
leaq 0xa0(%rbx), %r15
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1e6d9
movq 0xa0(%rbx), %rsi
movq %r15, %rdi
movq %rax, %rdx
callq 0x5b3a7
movb $0x0, 0x2a(%rax)
leaq 0x8(%rsp), %rdi
callq 0xe0b11
movabsq $-0x503db0e6e1c2e704, %r15 # imm = 0xAFC24F191E3D18FC
cmpq $0x0, 0xf8(%rbx)
je 0x1e6a5
leaq 0x68(%rsp), %rdi
movq %rdi, 0x8(%rsp)
leaq 0x38(%rsp), %rsi
callq 0xe0431
movq %r15, %r12
movq 0x8(%rsp), %r15
movq $0x1, 0x10(%r15)
xorl %eax, %eax
callq 0x114bbb
movl $0x1, %esi
movq %r15, %rdi
movq %r12, %rdx
movq %rax, %rcx
callq 0xe0676
movq %rax, %r15
movq 0x80(%rbx), %rax
testq %rax, %rax
je 0x1e580
movq 0x50(%rax), %rsi
movq 0x30(%rsp), %rdi
callq 0xe39f
leaq 0x1316ec(%rip), %rsi    # 0x14fc64
movq %r15, %rdi
movq %rax, %rdx
jmp 0x1e58f
leaq 0x1316dd(%rip), %rsi    # 0x14fc64
movq %r15, %rdi
movq 0x18(%rsp), %rdx
xorl %eax, %eax
callq 0x1157cb
movq 0xf0(%rbx), %rdx
leaq 0x11a768(%rip), %rsi    # 0x138d0c
movq %r15, %rdi
xorl %eax, %eax
callq 0x1157cb
movabsq $0x65c9718e19e3df34, %rax # imm = 0x65C9718E19E3DF34
cmpq %rax, 0x20(%rsp)
leaq 0x11a752(%rip), %rax    # 0x138d16
leaq 0x11a74e(%rip), %rsi    # 0x138d19
cmoveq %rax, %rsi
movq %r15, %rdi
xorl %eax, %eax
callq 0x1157cb
leaq 0x11a59f(%rip), %rsi    # 0x138b7f
movq %r15, %rdi
movq 0x28(%rsp), %rdx
xorl %eax, %eax
callq 0x1157cb
leaq 0x60(%rbx), %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %r15, %rcx
callq 0x143aa
leaq 0x130158(%rip), %rsi    # 0x14e75f
movq %r15, %rdi
xorl %eax, %eax
callq 0x1157cb
movq 0x8(%r15), %rdx
leaq 0xa0(%rbx), %r15
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1e6d9
movq 0xa0(%rbx), %rsi
movq %r15, %rdi
movq %rax, %rdx
callq 0x5b3a7
movq %rax, %r14
movb $0x0, 0x2a(%rax)
movq 0x108(%rbx), %rdi
testq %rdi, %rdi
je 0x1e661
callq 0xc8348
movq %rax, %r15
movq 0x38(%r14), %rdi
callq 0x18554
movq %r15, 0x38(%r14)
movq %r14, %rdi
callq 0x19dee
movq %rax, %r14
movq 0x38(%rax), %rdi
callq 0x18554
movq $0x0, 0x38(%r14)
movb $0x0, 0x28(%r14)
movq 0xc0(%rbx), %rsi
addq $0xc0, %rbx
movq %rbx, %rdi
movq %r14, %rdx
callq 0x5b3a7
leaq 0x8(%rsp), %rdi
callq 0xe0b11
leaq 0x38(%rsp), %rdi
callq 0xe0b30
xorl %eax, %eax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r13d, %r13d
jmp 0x1d86f
xorl %ebp, %ebp
jmp 0x1d91a
xorl %ebp, %ebp
jmp 0x1d9c2