LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: x_stamp_path_s_parse
x_stamp_path_s* x_stamp_path_s_parse( x_stamp_path_s* o, x_source* source )
{
    // bcore_x_stamp.h:265:1
    BLM_INIT_LEVEL(0);
    x_stamp_path_s_clear(o);
    st_s name;BLM_T_INIT_SPUSH(st_s, &name);;
    
    while( !x_source_eos(source) )
    {
        st_s_clear(&(name));
        if( x_source_parse_bl(source," #?'['" ) )
        {
            uz_t index = 0;
            BLM_TRY_EXIT(x_source_parse_fa(source," #<uz_t*>", &index ))
            BLM_TRY_EXIT(x_source_parse_fa(source," ]" ))
            x_stamp_path_s_push_index(o,index );
        }
        else
        {
            BLM_TRY_EXIT(x_source_parse_fa(source," #name", (&(name)) ))
            if( name.size == 0 ) break;
            x_stamp_path_s_push(o,btypeof( name.sc ) );
        }
        if( !x_source_parse_bl(source," #?'.'" ) ) break;
    }
    BLM_RETURNV(x_stamp_path_s*, o)
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rsi, %r14
movq %rdi, %rbx
leaq 0xe8fe6(%rip), %rax     # 0x117dd0
movq (%rax), %rsi
leaq 0x28(%rsp), %r15
movq %r15, %rdi
callq 0x717f5
andq $0x0, 0x10(%r15)
movq %rbx, %rdi
callq 0x30a5d
leaq 0x8(%rsp), %r12
movq %r12, %rdi
callq 0x8e048
movabsq $-0x503db0e6e1c2e704, %rsi # imm = 0xAFC24F191E3D18FC
movq %r15, %rdi
movq %r12, %rdx
callq 0x71998
leaq 0x7b8d9(%rip), %rbp     # 0xaa709
movq %r14, %rdi
callq 0x2ef3b
testb %al, %al
jne 0x2ef1f
movq %r12, %rdi
callq 0x8f0c3
movq %r14, %rdi
leaq 0x85a3c(%rip), %rsi     # 0xb488e
callq 0x2ef75
testb %al, %al
je 0x2eec3
andq $0x0, (%rsp)
movq %r14, %rdi
leaq 0x85a2b(%rip), %rsi     # 0xb4895
movq %rsp, %rdx
xorl %eax, %eax
callq 0x2ef9c
testq %rax, %rax
je 0x2ee8c
movq %rax, %r13
movq %r15, %rdi
callq 0x71b64
movl %r13d, %edi
callq 0x2dc20
movq %r14, %rdi
leaq 0x861a0(%rip), %rsi     # 0xb5036
xorl %eax, %eax
callq 0x2ef9c
testq %rax, %rax
je 0x2eeb5
movq %rax, %r13
movq %r15, %rdi
callq 0x71b64
movl %r13d, %edi
callq 0x2dc20
movq (%rsp), %rsi
movq %rbx, %rdi
callq 0x2ecfd
jmp 0x2ef0c
movq %r14, %rdi
leaq 0x9325a(%rip), %rsi     # 0xc2127
movq %r12, %rdx
xorl %eax, %eax
callq 0x2ef9c
testq %rax, %rax
je 0x2eeef
movq %rax, %r13
movq %r15, %rdi
callq 0x71b64
movl %r13d, %edi
callq 0x2dc20
cmpq $0x0, 0x18(%rsp)
je 0x2ef1f
movq 0x10(%rsp), %rdi
callq 0x2f020
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2ed25
movq %r14, %rdi
movq %rbp, %rsi
callq 0x2ef75
testb %al, %al
jne 0x2ee30
leaq 0x28(%rsp), %rdi
callq 0x71b64
movq %rbx, %rax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: x_stamp_t_m_get_sr
sr_s x_stamp_t_m_get_sr( x_stamp* o, tp_t t, tp_t name )
{
    // bcore_x_stamp.h:409:1
    
    const bcore_via_s* p = bcore_via_s_get_typed( t );
    sz_t index = bcore_via_p_nget_index( p, ((const bcore_via*)(o)), name );
    if( index < 0 ) return  sr_null();
    return  bcore_via_p_iget( p, ((const bcore_via*)(o)), index );
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rcx, %r12
movq %rsi, %r14
movq %rdi, %rbx
movq %rdx, %rdi
callq 0x2f2a4
movq %rax, %r15
movq %rax, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x8ae97
testq %rax, %rax
js 0x2f770
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rax, %rcx
callq 0x8a459
jmp 0x2f77b
xorps %xmm0, %xmm0
movups %xmm0, (%rbx)
andq $0x0, 0x10(%rbx)
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: x_stamp_t_m_get_sr_i
sr_s x_stamp_t_m_get_sr_i( x_stamp* o, tp_t t, sz_t index )
{
    // bcore_x_stamp.h:419:1
    
    const bcore_via_s* p = bcore_via_s_get_typed( t );
    if( index < 0 || index >= bcore_via_p_get_size( p, ((const bcore_via*)(o)) ) ) return  sr_null();
    return  bcore_via_p_iget( p, ((const bcore_via*)(o)), index );
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rcx, %r14
movq %rsi, %r15
movq %rdi, %rbx
movq %rdx, %rdi
callq 0x2f2a4
testq %r14, %r14
js 0x2f7be
cmpq %r14, 0x20(%rax)
jbe 0x2f7be
movq %rbx, %rdi
movq %rax, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x8a459
jmp 0x2f7c9
xorps %xmm0, %xmm0
movups %xmm0, (%rbx)
andq $0x0, 0x10(%rbx)
movq %rbx, %rax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: x_stamp_t_set_sr
er_t x_stamp_t_set_sr( x_stamp* o, tp_t t, tp_t name, sr_s sr_src )
{
    // bcore_x_stamp.h:432:1
    
    const bcore_via_s* p = bcore_via_s_get_typed( t );
    sz_t index = bcore_via_p_nget_index( p, ((const bcore_via*)(o)), name );
    if( index < 0 )
    {
        sr_s_down(&(sr_src));
        return  0;
    }
    return  bcore_via_p_iset( p, ((bcore_via*)(o)), index, sr_src );
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdx, %r15
movq %rdi, %rbx
movq %rsi, %rdi
callq 0x2f2a4
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x8ae97
testq %rax, %rax
js 0x2f80e
movq %r14, %rdi
movq %rbx, %rsi
movq %rax, %rdx
popq %rbx
popq %r14
popq %r15
jmp 0x8a611
leaq 0x20(%rsp), %rdi
callq 0x8d1c4
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: x_stamp_t_set_sr_ret
sr_s x_stamp_t_set_sr_ret( x_stamp* o, tp_t t, tp_t name, sr_s sr_src )
{
    // bcore_x_stamp.h:450:1
    
    const bcore_via_s* p = bcore_via_s_get_typed( t );
    sz_t index = bcore_via_p_nget_index( p, ((const bcore_via*)(o)), name );
    if( index < 0 )
    {
        sr_s_down(&(sr_src));
        return  sr_null();
    }
    bcore_via_p_iset( p, ((bcore_via*)(o)), index, sr_src );
    sr_s sr = bcore_via_p_iget( p, ((const bcore_via*)(o)), index );
    if( sr_s_is_strong(&(sr)) ) sr_s_clear(&(sr));
    return  sr;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x20, %rsp
movq %rcx, %r13
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x50(%rsp), %r12
movq %rdx, %rdi
callq 0x2f2a4
movq %rax, %r15
movq %rax, %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x8ae97
testq %rax, %rax
js 0x2f89e
movq %rax, %r13
movq 0x10(%r12), %rax
movq %rax, 0x10(%rsp)
movups (%r12), %xmm0
movups %xmm0, (%rsp)
movq %r15, %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x8a611
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %r13, %rcx
callq 0x8a459
testb $0x2, 0x10(%rbx)
je 0x2f8b1
movq %rbx, %rdi
callq 0x2f2f4
jmp 0x2f8b1
movq %r12, %rdi
callq 0x8d1c4
xorps %xmm0, %xmm0
movups %xmm0, (%rbx)
andq $0x0, 0x10(%rbx)
movq %rbx, %rax
addq $0x20, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: x_stamp_t_set_sr_i
er_t x_stamp_t_set_sr_i( x_stamp* o, tp_t t, sz_t index, sr_s sr_src )
{
    // bcore_x_stamp.h:471:1
    
    const bcore_via_s* p = bcore_via_s_get_typed( t );
    if( index < 0 || index >= bcore_via_p_get_size( p, ((const bcore_via*)(o)) ) )
    {
        sr_s_down(&(sr_src));
        return  0;
    }
    return  bcore_via_p_iset( p, ((bcore_via*)(o)), index, sr_src );
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdx, %rbx
movq %rdi, %r14
movq %rsi, %rdi
callq 0x2f2a4
testq %rbx, %rbx
js 0x2f8f4
cmpq %rbx, 0x20(%rax)
jbe 0x2f8f4
movq %rax, %rdi
movq %r14, %rsi
movq %rbx, %rdx
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x8a611
leaq 0x20(%rsp), %rdi
callq 0x8d1c4
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: x_stamp_t_set_sr_ret_i
sr_s x_stamp_t_set_sr_ret_i( x_stamp* o, tp_t t, sz_t index, sr_s sr_src )
{
    // bcore_x_stamp.h:488:1
    
    const bcore_via_s* p = bcore_via_s_get_typed( t );
    if( index < 0 || index >= bcore_via_p_get_size( p, ((const bcore_via*)(o)) ) )
    {
        sr_s_down(&(sr_src));
        return  sr_null();
    }
    bcore_via_p_iset( p, ((bcore_via*)(o)), index, sr_src );
    sr_s sr = bcore_via_p_iget( p, ((const bcore_via*)(o)), index );
    if( sr_s_is_strong(&(sr)) ) sr_s_clear(&(sr));
    return  sr;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x20, %rsp
movq %rcx, %r14
movq %rsi, %r15
movq %rdi, %rbx
leaq 0x50(%rsp), %r13
movq %rdx, %rdi
callq 0x2f2a4
testq %r14, %r14
js 0x2f97a
movq %rax, %r12
cmpq %r14, 0x20(%rax)
jbe 0x2f97a
movq 0x10(%r13), %rax
movq %rax, 0x10(%rsp)
movups (%r13), %xmm0
movups %xmm0, (%rsp)
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x8a611
movq %rbx, %rdi
movq %r12, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x8a459
testb $0x2, 0x10(%rbx)
je 0x2f98d
movq %rbx, %rdi
callq 0x2f2f4
jmp 0x2f98d
movq %r13, %rdi
callq 0x8d1c4
xorps %xmm0, %xmm0
movups %xmm0, (%rbx)
andq $0x0, 0x10(%rbx)
movq %rbx, %rax
addq $0x20, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: x_stamp_t_c_get_sr
sr_s x_stamp_t_c_get_sr( const x_stamp* o, tp_t t, tp_t name )
{
    // bcore_x_stamp.h:505:1
    
    sr_s sr = x_stamp_t_m_get_sr(((x_stamp*)(o)),t, name );
    if( sr_s_is_weak(&(sr)) ) sr_s_set_const(&(sr),true );
    return  sr;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
callq 0x2f72e
movq 0x10(%rbx), %rax
testb $0x2, %al
jne 0x2f9b7
orq $0x1, %rax
movq %rax, 0x10(%rbx)
movq %rbx, %rax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: x_stamp_t_c_get_sr_i
sr_s x_stamp_t_c_get_sr_i( const x_stamp* o, tp_t t, sz_t index )
{
    // bcore_x_stamp.h:515:1
    
    sr_s sr = x_stamp_t_m_get_sr_i(((x_stamp*)(o)),t, index );
    if( sr_s_is_weak(&(sr)) ) sr_s_set_const(&(sr),true );
    return  sr;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
callq 0x2f78a
movq 0x10(%rbx), %rax
testb $0x2, %al
jne 0x2f9d5
orq $0x1, %rax
movq %rax, 0x10(%rbx)
movq %rbx, %rax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: x_lock_s_set
BCORE_DEFINE_OBJECT_INST_P_NASC_END( x_lock_s )

x_lock_s* x_lock_s_set( x_lock_s* o, x_mutex_s* mutex )
{
    // bcore_x_threads.h:52:5
    
    x_lock_s_release(o);
    o->mutex = mutex;
    x_mutex_s_lock(o->mutex);
    return o;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
callq 0x2ffb0
movq %rbx, 0x8(%r14)
movq %rbx, %rdi
callq 0x9cd16
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: x_unlock_s_set
BCORE_DEFINE_OBJECT_INST_P_NASC_END( x_unlock_s )

x_unlock_s* x_unlock_s_set( x_unlock_s* o, x_mutex_s* mutex )
{
    // bcore_x_threads.h:77:5
    
    x_unlock_s_release(o);
    o->mutex = mutex;
    x_mutex_s_unlock(o->mutex);
    return o;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
callq 0x3006c
movq %rbx, 0x8(%r14)
movq %rbx, %rdi
callq 0x9cd4a
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_file_path_s_set_sc
BCORE_DEFINE_OBJECT_INST_P_NASC_END( bcore_file_path_s )

bcore_file_path_s* bcore_file_path_s_set_sc( bcore_file_path_s* o, sc_t name )
{
    // bcore_file.h:55:5
    
    st_s_attach( &(o->full ),  NULL);
    st_s_copy_sc(&(o->name),name );
    if( name[ 0 ] != '/' && o->root != NULL )
    {
        o->full = st_s_create_fa("#<sc_t>/#<sc_t>", o->root->sc, o->name.sc );
    }
    return  o;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
movq 0x30(%rdi), %rdi
callq 0x8edd4
andq $0x0, 0x30(%rbx)
leaq 0x8(%rbx), %rdi
movq %r14, %rsi
callq 0x8e611
cmpb $0x2f, (%r14)
je 0x302bd
movq 0x28(%rbx), %rax
testq %rax, %rax
je 0x302bd
movq 0x8(%rax), %rsi
movq 0x10(%rbx), %rdx
leaq 0x79dc6(%rip), %rdi     # 0xaa078
xorl %eax, %eax
callq 0x8ec7d
movq %rax, 0x30(%rbx)
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_file_path_s_copy_typed
er_t bcore_file_path_s_copy_typed( bcore_file_path_s* o, tp_t type, vc_t src )
{
    // bcore_file.h:66:5
    
    if( type == TYPEOF_st_s )
    {
        st_s_copy(&(o->name),( st_s* )src );
    }
    else
    {
        return  bcore_error_push_fa(TYPEOF_conversion_error, "Cannot copy from '#<sc_t>'\n", bnameof( type ) );
    }
    return  0;
}

// Assembly:
pushq %rax
movabsq $-0x503db0e6e1c2e704, %rax # imm = 0xAFC24F191E3D18FC
cmpq %rax, %rsi
jne 0x302e8
addq $0x8, %rdi
movq %rdx, %rsi
callq 0x8e4fd
xorl %eax, %eax
popq %rcx
retq
movq %rsi, %rdi
callq 0x71db6
leaq 0x846a1(%rip), %rsi     # 0xb4998
movabsq $-0x4e68f1e683c13928, %rdi # imm = 0xB1970E197C3EC6D8
movq %rax, %rdx
xorl %eax, %eax
popq %rcx
jmp 0x605f4
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_main_set_s_on_termination
bl_t bcore_main_set_s_on_termination( bcore_main_set_s* o, const bcore_main_frame_s* frame )
{
    // bcore_main.h:156:5
    BLM_INIT_LEVEL(0);
    bcore_lock_s lock;BLM_T_INIT_SPUSH(bcore_lock_s, &lock);bcore_lock_s_set(&(lock),&(o->mutex_current_object ));
    BLM_RETURNV(bl_t, o->current_object ? bcore_main_a_on_termination(o->current_object,frame ) : false)
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rsi, %rbx
movq %rdi, %r14
leaq 0xe77ff(%rip), %rax     # 0x117dd0
movq (%rax), %rsi
leaq 0x18(%rsp), %r15
movq %r15, %rdi
callq 0x717f5
andq $0x0, 0x10(%r15)
leaq 0x8(%rsp), %r12
movq %r12, %rdi
callq 0x97bd0
movabsq $0x5f28c34c85940ebe, %rsi # imm = 0x5F28C34C85940EBE
movq %r15, %rdi
movq %r12, %rdx
callq 0x71998
leaq 0x30(%r14), %rsi
movq %r12, %rdi
callq 0x97b67
movq 0x28(%r14), %r14
testq %r14, %r14
je 0x30632
movq %r14, %rdi
callq 0x583ab
movq %r14, %rdi
movq %rbx, %rsi
callq *0x18(%rax)
movl %eax, %ebx
jmp 0x30634
xorl %ebx, %ebx
leaq 0x18(%rsp), %rdi
callq 0x71b64
movl %ebx, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_main_set_s_on_interrupt
bl_t bcore_main_set_s_on_interrupt( bcore_main_set_s* o, const bcore_main_frame_s* frame )
{
    // bcore_main.h:162:5
    BLM_INIT_LEVEL(0);
    bcore_lock_s lock;BLM_T_INIT_SPUSH(bcore_lock_s, &lock);bcore_lock_s_set(&(lock),&(o->mutex_current_object ));
    BLM_RETURNV(bl_t, o->current_object ? bcore_main_a_on_interrupt(o->current_object,frame ) : false)
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rsi, %rbx
movq %rdi, %r14
leaq 0xe776c(%rip), %rax     # 0x117dd0
movq (%rax), %rsi
leaq 0x18(%rsp), %r15
movq %r15, %rdi
callq 0x717f5
andq $0x0, 0x10(%r15)
leaq 0x8(%rsp), %r12
movq %r12, %rdi
callq 0x97bd0
movabsq $0x5f28c34c85940ebe, %rsi # imm = 0x5F28C34C85940EBE
movq %r15, %rdi
movq %r12, %rdx
callq 0x71998
leaq 0x30(%r14), %rsi
movq %r12, %rdi
callq 0x97b67
movq 0x28(%r14), %r14
testq %r14, %r14
je 0x306c5
movq %r14, %rdi
callq 0x583ab
movq %r14, %rdi
movq %rbx, %rsi
callq *0x20(%rax)
movl %eax, %ebx
jmp 0x306c7
xorl %ebx, %ebx
leaq 0x18(%rsp), %rdi
callq 0x71b64
movl %ebx, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_main_set_s_on_suspend
bl_t bcore_main_set_s_on_suspend( bcore_main_set_s* o, const bcore_main_frame_s* frame )
{
    // bcore_main.h:168:5
    BLM_INIT_LEVEL(0);
    bcore_lock_s lock;BLM_T_INIT_SPUSH(bcore_lock_s, &lock);bcore_lock_s_set(&(lock),&(o->mutex_current_object ));
    BLM_RETURNV(bl_t, o->current_object ? bcore_main_a_on_suspend(o->current_object,frame ) : false)
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rsi, %rbx
movq %rdi, %r14
leaq 0xe76d9(%rip), %rax     # 0x117dd0
movq (%rax), %rsi
leaq 0x18(%rsp), %r15
movq %r15, %rdi
callq 0x717f5
andq $0x0, 0x10(%r15)
leaq 0x8(%rsp), %r12
movq %r12, %rdi
callq 0x97bd0
movabsq $0x5f28c34c85940ebe, %rsi # imm = 0x5F28C34C85940EBE
movq %r15, %rdi
movq %r12, %rdx
callq 0x71998
leaq 0x30(%r14), %rsi
movq %r12, %rdi
callq 0x97b67
movq 0x28(%r14), %r14
testq %r14, %r14
je 0x30758
movq %r14, %rdi
callq 0x583ab
movq %r14, %rdi
movq %rbx, %rsi
callq *0x28(%rax)
movl %eax, %ebx
jmp 0x3075a
xorl %ebx, %ebx
leaq 0x18(%rsp), %rdi
callq 0x71b64
movl %ebx, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_prsg_set_state_f3_default
bcore_prsg* bcore_prsg_set_state_f3_default( bcore_prsg* o, f3_t seed )
{
    // bcore_prsg.h:74:1
    
    int exp = 0;
    s3_t seed_s3 = frexp( seed, (&(exp)) ) * 0x7FFFFFFFFFFFFFFF;
    seed_s3 *= 27362149; // some mixing
    if( exp != 0 ) seed_s3 *= exp;  // to make sure seed is not repeated at different exponents
    bcore_prsg_a_set_state_u3(o,seed_s3 );
    return o;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x4(%rsp), %r14
andl $0x0, (%r14)
movq %r14, %rdi
callq 0xd070
mulsd 0x83bd4(%rip), %xmm0    # 0xb46e0
cvttsd2si %xmm0, %rax
movl (%r14), %ecx
cmpl $0x1, %ecx
adcl $0x0, %ecx
movslq %ecx, %rcx
imulq %rax, %rcx
imulq $0x1a18365, %rcx, %rsi  # imm = 0x1A18365
movq %rbx, %rdi
callq 0x30b3b
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_shell_get_op_stamps
bcore_arr_tp_s* bcore_shell_get_op_stamps( const bcore_shell* o )
{
    // bcore_shell.h:315:1
    BLM_INIT_LEVEL(0);
    bcore_arr_tp_s op_groups;BLM_T_INIT_SPUSH(bcore_arr_tp_s, &op_groups);;
    bcore_shell_a_push_op_groups(o,&(op_groups ));
    bcore_arr_tp_s* op_stamps = bcore_arr_tp_s_create();
    {const bcore_arr_tp_s* __a=&(op_groups );if(__a)for(sz_t __i=0;__i<__a->size;__i++){tp_t t=__a->data[__i]; bcore_arr_tp_s_push_arr(op_stamps,x_group_get_arr_traitline_stamps(t ) );}}
    BLM_RETURNV(bcore_arr_tp_s*, op_stamps)
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x50, %rsp
movq %rdi, %rbx
leaq 0xe6954(%rip), %rax     # 0x117dd0
movq (%rax), %rsi
leaq 0x20(%rsp), %r14
movq %r14, %rdi
callq 0x717f5
andq $0x0, 0x10(%r14)
movq %rsp, %r15
movq %r15, %rdi
callq 0x5b881
movabsq $-0x79c1eb0a2e5b4c6b, %rsi # imm = 0x863E14F5D1A4B395
movq %r14, %rdi
movq %r15, %rdx
callq 0x71998
movq %rbx, %rdi
movq %r15, %rsi
callq 0x31505
xorl %r14d, %r14d
xorl %eax, %eax
callq 0x5b931
movq %rax, %rbx
cmpq 0x10(%rsp), %r14
jae 0x314ee
movq 0x8(%rsp), %rax
movq (%rax,%r14,8), %rdi
callq 0x31527
movq %rbx, %rdi
movq %rax, %rsi
callq 0x5bb4e
incq %r14
jmp 0x314c9
leaq 0x20(%rsp), %rdi
callq 0x71b64
movq %rbx, %rax
addq $0x50, %rsp
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_shell_op_arg_signature_to_sink
void bcore_shell_op_arg_signature_to_sink( bcore_shell_op* o, bcore_sink* sink )
{
    // bcore_shell.h:227:5
    
    x_stamp* v =((x_stamp*)( o));
    for(sz_t i = 0; i < x_stamp_size(v); i++ )
    {
        tp_t name = x_stamp_name(v,i );
        tp_t type = x_stamp_type(v,name );
        switch( type )
        {
            case ((tp_t)(TYPEOF_f3_t)): case ((tp_t)(TYPEOF_sz_t)): case ((tp_t)(TYPEOF_uz_t)): case ((tp_t)(TYPEOF_s3_t)): case ((tp_t)(TYPEOF_u3_t)):
            {
                bcore_sink_a_push_fa(sink,"[<#<sc_t>>(number)] ", bnameof( name ) );
            }
            break;
    
            case ((tp_t)(TYPEOF_st_s)):
            {
                bcore_sink_a_push_fa(sink,"[<#<sc_t>>(text)] ", bnameof( name ) );
            }
            break;
    
            case ((tp_t)(TYPEOF_bl_t)):
            {
                bcore_sink_a_push_fa(sink,"[-#<sc_t>] ", bnameof( name ) );
            }
            break;
    
            default:
            {
                bcore_sink_a_push_fa(sink,"[<#<sc_t>>(#<sc_t> via BTML)] ", bnameof( name ), bnameof( type ) );
            }
            break;
        }
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
movabsq $-0x5fc2af85f419929b, %r15 # imm = 0xA03D507A0BE66D65
xorl %r12d, %r12d
movq %r14, %rdi
callq 0x32863
cmpq %rax, %r12
jge 0x31a58
movq %r14, %rdi
movq %r12, %rsi
callq 0x32872
movq %rax, %r13
movq %r14, %rdi
movq %rax, %rsi
callq 0x3288a
cmpq %r15, %rax
je 0x319e0
movq %rax, %rbp
movabsq $-0x5aa4411ac4e2880e, %rax # imm = 0xA55BBEE53B1D77F2
cmpq %rax, %rbp
je 0x319e0
movabsq $-0x503db0e6e1c2e704, %rax # imm = 0xAFC24F191E3D18FC
cmpq %rax, %rbp
je 0x31a44
movabsq $-0x4882601bdca6aefb, %rax # imm = 0xB77D9FE423595105
cmpq %rax, %rbp
je 0x319e0
movabsq $0x585a3b17ca3de200, %rax # imm = 0x585A3B17CA3DE200
cmpq %rax, %rbp
je 0x319e0
movabsq $-0x3ac242643d9c35a8, %rax # imm = 0xC53DBD9BC263CA58
cmpq %rax, %rbp
je 0x31a04
movabsq $-0x3f1363e6d8155aed, %rax # imm = 0xC0EC9C1927EAA513
cmpq %rax, %rbp
jne 0x31a18
movq %r13, %rdi
callq 0x71db6
movq %rbx, %rdi
leaq 0x831c0(%rip), %rsi     # 0xb4bb2
movq %rax, %rdx
xorl %eax, %eax
callq 0x87cf1
incq %r12
jmp 0x31950
movq %r13, %rdi
callq 0x71db6
movq %rbx, %rdi
leaq 0x831c4(%rip), %rsi     # 0xb4bda
jmp 0x319f2
movq %r13, %rdi
callq 0x71db6
movq %rax, %r13
movq %rbp, %rdi
callq 0x71db6
movq %rbx, %rdi
leaq 0x831b1(%rip), %rsi     # 0xb4be6
movq %r13, %rdx
movq %rax, %rcx
xorl %eax, %eax
callq 0x87cf1
jmp 0x319fc
movq %r13, %rdi
callq 0x71db6
movq %rbx, %rdi
leaq 0x83171(%rip), %rsi     # 0xb4bc7
jmp 0x319f2
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_shell_op_parse_match
bl_t bcore_shell_op_parse_match( bcore_shell_op* o, x_source* source )
{
    // bcore_shell.h:112:5
    BLM_INIT_LEVEL(0);
    st_s key;BLM_T_INIT_SPUSH(st_s, &key);;
    BLM_TRY_EXIT(x_source_parse_fa(source,"#=name", (&(key)) ))
    if( key.size == 0 ) BLM_RETURNV(bl_t, false)
    if( !bcore_shell_op_key_match(o,key.sc ) ) BLM_RETURNV(bl_t, false)
    BLM_TRY_EXIT(x_source_parse_fa(source,"#-name" ))
    BLM_RETURNV(bl_t, true)
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rsi, %rbx
movq %rdi, %r14
leaq 0xe612e(%rip), %rax     # 0x117dd0
movq (%rax), %rsi
leaq 0x28(%rsp), %r15
movq %r15, %rdi
callq 0x717f5
andq $0x0, 0x10(%r15)
leaq 0x8(%rsp), %r12
movq %r12, %rdi
callq 0x8e048
movabsq $-0x503db0e6e1c2e704, %rsi # imm = 0xAFC24F191E3D18FC
movq %r15, %rdi
movq %r12, %rdx
callq 0x71998
leaq 0x82db0(%rip), %rsi     # 0xb4a90
movq %rbx, %rdi
movq %r12, %rdx
xorl %eax, %eax
callq 0x2ef9c
testq %rax, %rax
je 0x31d07
movq %rax, %r15
leaq 0x28(%rsp), %rdi
callq 0x71b64
movl %r15d, %edi
callq 0x2dc20
cmpq $0x0, 0x18(%rsp)
je 0x31d4f
movq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x3272d
testb %al, %al
je 0x31d4f
leaq 0x82d70(%rip), %rsi     # 0xb4a97
movq %rbx, %rdi
xorl %eax, %eax
callq 0x2ef9c
movb $0x1, %bl
testq %rax, %rax
je 0x31d51
movq %rax, %r14
leaq 0x28(%rsp), %rdi
callq 0x71b64
movl %r14d, %edi
callq 0x2dc20
jmp 0x31d51
xorl %ebx, %ebx
leaq 0x28(%rsp), %rdi
callq 0x71b64
movl %ebx, %eax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_shell_op_key_match
bl_t bcore_shell_op_key_match( const bcore_shell_op* o, sc_t key )
{
    // bcore_shell.h:87:5
    BLM_INIT_LEVEL(0);
    st_s st_key;BLM_T_INIT_SPUSH(st_s, &st_key);;
    bcore_shell_op_a_get_key(o,(&(st_key)) );
    sz_t index = 0;
    while( index < st_key.size )
    {BLM_INIT_LEVEL(1);
        st_s name;BLM_T_INIT_SPUSH(st_s, &name);;
        char c = 0;
        while( index < st_key.size )
        {
            c = st_key.data[ index++ ];
            if( c == ' ' || c== ',' ) break;
            st_s_push_char(&(name),c );
        }
        if( name.size == 0 ) BLM_RETURNV(bl_t, false)
        if( st_s_equal_sc(&(name),key ) ) BLM_RETURNV(bl_t, true)
    BLM_DOWN();}
    BLM_RETURNV(bl_t, false)
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movq %rsi, %rbx
movq %rdi, %r14
movabsq $-0x503db0e6e1c2e704, %r13 # imm = 0xAFC24F191E3D18FC
leaq 0xe567b(%rip), %rax     # 0x117dd0
movq (%rax), %rsi
leaq 0x48(%rsp), %r15
movq %r15, %rdi
callq 0x717f5
andq $0x0, 0x10(%r15)
leaq 0x8(%rsp), %r12
movq %r12, %rdi
callq 0x8e048
movq %r15, %rdi
movq %r13, %rsi
movq %r12, %rdx
callq 0x71998
movq %r14, %rdi
movq %r12, %rsi
callq 0x31910
xorl %ebp, %ebp
leaq 0x78(%rsp), %r12
leaq 0x28(%rsp), %r13
cmpq 0x18(%rsp), %rbp
jae 0x32841
movq %r12, (%rsp)
movq %r12, %rdi
movq %r15, %rsi
callq 0x717f5
movq (%rsp), %r14
movq $0x1, 0x10(%r14)
movq %r13, %rdi
callq 0x8e048
movq %r14, %rdi
movabsq $-0x503db0e6e1c2e704, %rsi # imm = 0xAFC24F191E3D18FC
movq %r13, %rdx
callq 0x71998
cmpq 0x18(%rsp), %rbp
jae 0x3280c
movq 0x10(%rsp), %rax
movzbl (%rax,%rbp), %eax
cmpl $0x20, %eax
je 0x32809
cmpl $0x2c, %eax
je 0x32809
movsbl %al, %esi
movq %r13, %rdi
callq 0x8f0ee
incq %rbp
jmp 0x327df
incq %rbp
cmpq $0x0, 0x38(%rsp)
setne %r14b
je 0x32836
movq 0x30(%rsp), %rdi
movq %rbx, %rsi
callq 0x6036f
testl %eax, %eax
je 0x32836
movq %rsp, %rdi
callq 0x71b48
jmp 0x3279c
movq (%rsp), %rdi
callq 0x71b64
jmp 0x3284e
leaq 0x48(%rsp), %rdi
callq 0x71b64
xorl %r14d, %r14d
movl %r14d, %eax
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_shell_op_default_get_s_run
BCORE_DEFINE_OBJECT_INST_P_NASC_END( bcore_shell_op_default_get_s )

void bcore_shell_op_default_get_s_run( bcore_shell_op_default_get_s* o, bcore_shell* obj, const bcore_main_frame_s* main_frame, x_source* source, bcore_sink* sink, bcore_shell_control_s* control )
{
    // bcore_shell.h:580:9
    BLM_INIT_LEVEL(0);
    sr_s sr = x_stamp_path_s_get_sr_in(x_stamp_path_s_parse(((x_stamp_path_s*)BLM_LEVEL_T_PUSH(0,x_stamp_path_s,x_stamp_path_s_create())),((x_source*)BLM_LEVEL_A_PUSH(0,x_source_create_from_st(&(o->path )))) ),((const x_inst*)(obj )));
    if( sr.o )
    {
        x_btml_t_to_sink(((const x_btml*)( sr.o)),sr_s_type(&( sr )),((x_sink*)( sink )));
    }
    else
    {
        bcore_sink_a_push_fa(sink,"Path '#<sc_t>' not found.\n", o->path.sc );
    }
    BLM_DOWN();
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x50, %rsp
movq %r8, %rbx
movq %rsi, %r15
movq %rdi, %r14
leaq 0xe4b57(%rip), %rax     # 0x117dd0
movq (%rax), %rsi
leaq 0x20(%rsp), %r12
movq %r12, (%rsp)
movq %r12, %rdi
callq 0x717f5
andq $0x0, 0x10(%r12)
callq 0x2ecc2
movabsq $-0x74dceedd59a2bd6f, %rdx # imm = 0x8B231122A65D4291
movq %r12, %rdi
xorl %esi, %esi
movq %rax, %rcx
callq 0x71967
movq %rax, %r13
leaq 0x8(%r14), %rdi
callq 0x76c69
movq %r12, %rdi
xorl %esi, %esi
movq %rax, %rdx
callq 0x71a90
movq %r13, %rdi
movq %rax, %rsi
callq 0x2edcf
leaq 0x8(%rsp), %r12
movq %r12, %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0x2fefc
movq (%r12), %rdi
testq %rdi, %rdi
je 0x332ff
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x33316
movq 0x8(%rax), %rsi
jmp 0x33318
movq 0x10(%r14), %rdx
leaq 0x8190c(%rip), %rsi     # 0xb4c16
movq %rbx, %rdi
xorl %eax, %eax
callq 0x87cf1
jmp 0x33320
xorl %esi, %esi
movq %rbx, %rdx
callq 0x33336
movq %rsp, %rdi
callq 0x71b48
addq $0x50, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_shell_op_default_set_s_run
BCORE_DEFINE_OBJECT_INST_P_NASC_END( bcore_shell_op_default_set_s )

void bcore_shell_op_default_set_s_run( bcore_shell_op_default_set_s* o, bcore_shell* obj, const bcore_main_frame_s* main_frame, x_source* source, bcore_sink* sink, bcore_shell_control_s* control )
{
    // bcore_shell.h:600:9
    BLM_INIT_LEVEL(0);
    sr_s sr = x_stamp_path_s_get_sr_in(x_stamp_path_s_parse(((x_stamp_path_s*)BLM_LEVEL_T_PUSH(0,x_stamp_path_s,x_stamp_path_s_create())),((x_source*)BLM_LEVEL_A_PUSH(0,x_source_create_from_st(&(o->path )))) ),((const x_inst*)(obj )));
    if( sr.o )
    {
        if( o->source.size == 0 )
        {
            bcore_sink_a_push_fa(sink,"No value specified.\n" );
            BLM_RETURN();
        }
        tp_t type = 0;
        x_btml* val = ((x_btml*)BLM_LEVEL_TV_PUSH(0,type ,x_btml_create_from_st_t(&(o->source), (&(type)) )));
        if( type )
        {
            BLM_TRY_EXIT(x_inst_t_copy_typed(sr.o,sr_s_type(&( sr )), type,((const x_inst*)( val ))))
        }
        else
        {
            bcore_error_pop_all_to_sink(sink );
            bcore_sink_a_push_fa(sink,"Could not assign value.\n" );
        }
    }
    else
    {
        bcore_sink_a_push_fa(sink,"Path '#<sc_t>' not found.\n", o->path.sc );
    }
    BLM_DOWN();
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x60, %rsp
movq %r8, %rbx
movq %rsi, %r15
movq %rdi, %r14
leaq 0xe49ea(%rip), %rax     # 0x117dd0
movq (%rax), %rsi
leaq 0x30(%rsp), %r12
movq %r12, 0x8(%rsp)
movq %r12, %rdi
callq 0x717f5
andq $0x0, 0x10(%r12)
callq 0x2ecc2
movabsq $-0x74dceedd59a2bd6f, %rdx # imm = 0x8B231122A65D4291
movq %r12, %rdi
xorl %esi, %esi
movq %rax, %rcx
callq 0x71967
movq %rax, %r13
leaq 0x8(%r14), %rdi
callq 0x76c69
movq %r12, %rdi
xorl %esi, %esi
movq %rax, %rdx
callq 0x71a90
movq %r13, %rdi
movq %rax, %rsi
callq 0x2edcf
leaq 0x18(%rsp), %r12
movq %r12, %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0x2fefc
movq (%r12), %r15
testq %r15, %r15
je 0x334a7
cmpq $0x0, 0x38(%r14)
je 0x334be
addq $0x28, %r14
leaq 0x10(%rsp), %r12
andq $0x0, (%r12)
movq %r14, %rdi
movq %r12, %rsi
callq 0x33534
leaq 0x30(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
movq %rax, %rcx
callq 0x71967
movq (%r12), %rdx
testq %rdx, %rdx
je 0x334db
movq 0x20(%rsp), %rcx
testq %rcx, %rcx
je 0x334f6
movq 0x8(%rcx), %rdi
jmp 0x334f8
movq 0x10(%r14), %rdx
leaq 0x81764(%rip), %rsi     # 0xb4c16
movq %rbx, %rdi
xorl %eax, %eax
callq 0x87cf1
jmp 0x3351c
leaq 0x817a3(%rip), %rsi     # 0xb4c68
movq %rbx, %rdi
xorl %eax, %eax
callq 0x87cf1
leaq 0x30(%rsp), %rdi
callq 0x71b64
jmp 0x33526
movq %rbx, %rdi
callq 0x6098b
leaq 0x81793(%rip), %rsi     # 0xb4c7d
movq %rbx, %rdi
xorl %eax, %eax
callq 0x87cf1
jmp 0x3351c
xorl %edi, %edi
movq %r15, %rsi
movq %rax, %rcx
callq 0x58579
testq %rax, %rax
je 0x3351c
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x71b64
movl %ebx, %edi
callq 0x2dc20
leaq 0x8(%rsp), %rdi
callq 0x71b48
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_shell_op_default_alias_s_run
BCORE_DEFINE_OBJECT_INST_P_NASC_END( bcore_shell_op_default_alias_s )

void bcore_shell_op_default_alias_s_run( bcore_shell_op_default_alias_s* o, bcore_shell* obj, const bcore_main_frame_s* main_frame, x_source* source, bcore_sink* sink, bcore_shell_control_s* control )
{
    // bcore_shell.h:635:9
    
    if( o->key.size == 0 )
    {
        bcore_sink_a_push_fa(sink,"No key defined.\n" );
        return ;
    }
    tp_t tp_key = bcore_hmap_name_s_set_st_c(&(control->hmap_name),&(o->key ));
    if( o->expression.size > 0 )
    {
        x_hmap_tp_set_c(((x_hmap_tp*)(&(control->hmap_alias))),tp_key,((const x_inst*)(&( o->expression ))));
    }
    else
    {
        x_hmap_tp_remove(((x_hmap_tp*)(&(control->hmap_alias))),tp_key );
    }
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
cmpq $0x0, 0x18(%rdi)
je 0x3365c
movq %r9, %rbx
movq %rdi, %r14
leaq 0x8(%rdi), %rsi
leaq 0x20(%r9), %rdi
callq 0x6f474
cmpq $0x0, 0x38(%r14)
je 0x33674
addq $0x28, %r14
addq $0x50, %rbx
movq %rbx, %rdi
movq %rax, %rsi
movq %r14, %rdx
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x33687
leaq 0x81633(%rip), %rsi     # 0xb4c96
movq %r8, %rdi
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x87cf1
addq $0x50, %rbx
movq %rbx, %rdi
movq %rax, %rsi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x336b9
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_huffman_codec_s_clear
BCORE_DEFINE_OBJECT_INST_P_NASC_END( bcore_huffman_codec_s )

bcore_huffman_codec_s* bcore_huffman_codec_s_clear( bcore_huffman_codec_s* o )
{
    // bcore_huffman.x:47:1
    
    bcore_huffman_hist_s_attach( &(o->hist ),  NULL);
    bcore_huffman_tree_s_attach( &(o->tree ),  NULL);
    bcore_huffman_count_map_s_attach( &(o->count_map ),  NULL);
    bcore_huffman_index_s_attach( &(o->leaf_index ),  NULL);
    return  o;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
addq $0x8, %rdi
callq 0x33886
movq 0x18(%rbx), %rdi
callq 0x34bbb
andq $0x0, 0x18(%rbx)
leaq 0x10(%rbx), %rdi
xorl %esi, %esi
callq 0x3389d
movq 0x20(%rbx), %rdi
callq 0x34961
andq $0x0, 0x20(%rbx)
movq %rbx, %rax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_huffman_codec_s_scan_start
bcore_huffman_codec_s* bcore_huffman_codec_s_scan_start( bcore_huffman_codec_s* o )
{
    // bcore_huffman.x:58:1
    
    bcore_huffman_codec_s_clear(o);
    bcore_huffman_hist_s_clear(BCORE_PASS_CREATE(bcore_huffman_hist_s,o->hist));
    return  o;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
callq 0x3384d
movq 0x8(%rbx), %rdi
testq %rdi, %rdi
jne 0x338dd
callq 0x348d8
movq %rax, %rdi
movq %rax, 0x8(%rbx)
addq $0x8, %rdi
callq 0x67b03
movq %rbx, %rax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_huffman_codec_s_scan_u2
bcore_huffman_codec_s* bcore_huffman_codec_s_scan_u2( bcore_huffman_codec_s* o, u2_t val )
{
    // bcore_huffman.x:67:1
    
    if( !o->hist ) ERR_fa( "Enclose scanning with 'scan_start()' ... 'scan_end()'." );
    bcore_huffman_hist_s_count(o->hist,val );
    return  o;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
movq 0x8(%rdi), %rdi
testq %rdi, %rdi
jne 0x33921
leaq 0x813a4(%rip), %rdi     # 0xb4ca7
leaq 0x80e44(%rip), %rsi     # 0xb474e
leaq 0x813b4(%rip), %rcx     # 0xb4cc5
movl $0xa18, %edx            # imm = 0xA18
xorl %eax, %eax
callq 0x60186
movq 0x8(%rbx), %rdi
addq $0x8, %rdi
movl %ebp, %esi
incq %rsi
xorl %edx, %edx
callq 0x6791c
incq (%rax)
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_huffman_codec_s_scan_end
bcore_huffman_codec_s* bcore_huffman_codec_s_scan_end( bcore_huffman_codec_s* o )
{
    // bcore_huffman.x:88:1
    
    if( !o->hist ) ERR_fa( "No histogram. scan_end() called before scan_start()?." );
    bcore_huffman_count_map_s_attach( &(o->count_map ),  ((bcore_huffman_count_map_s*)(x_array_sort(((x_array*)(bcore_huffman_count_map_s_from_hist(bcore_huffman_count_map_s_create(),o->hist ))),1 ))));
    bcore_huffman_hist_s_attach( &(o->hist ),  NULL);
    bcore_huffman_tree_s_build(BCORE_PASS_CREATE(bcore_huffman_tree_s,o->tree),o->count_map, BCORE_PASS_CREATE(bcore_huffman_index_s,o->leaf_index) );
    return  o;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x8(%rdi), %r14
cmpq $0x0, 0x8(%rdi)
jne 0x33999
leaq 0x8137d(%rip), %rdi     # 0xb4cfc
leaq 0x80dc8(%rip), %rsi     # 0xb474e
leaq 0x8138e(%rip), %rcx     # 0xb4d1b
movl $0xa28, %edx            # imm = 0xA28
xorl %eax, %eax
callq 0x60186
leaq 0x10(%rbx), %r15
callq 0x34ac0
movq %rax, %r12
movq 0x8(%rbx), %rsi
movq %rax, %rdi
callq 0x33a21
pushq $0x1
popq %rsi
movq %r12, %rdi
callq 0x33a17
movq %r15, %rdi
movq %r12, %rsi
callq 0x3389d
movq %r14, %rdi
callq 0x33886
movq 0x18(%rbx), %r14
testq %r14, %r14
jne 0x339e4
callq 0x34bac
movq %rax, %r14
movq %rax, 0x18(%rbx)
movq 0x10(%rbx), %r15
movq 0x20(%rbx), %rdx
testq %rdx, %rdx
jne 0x339fd
callq 0x34952
movq %rax, %rdx
movq %rax, 0x20(%rbx)
movq %r14, %rdi
movq %r15, %rsi
callq 0x33a8f
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_huffman_count_map_s_from_hist
BCORE_DEFINE_OBJECT_INST_P_NASC_END( bcore_huffman_count_map_s )

bcore_huffman_count_map_s* bcore_huffman_count_map_s_from_hist( bcore_huffman_count_map_s* o, const bcore_huffman_hist_s* hist )
{
    // bcore_huffman.x:426:5
    
    x_array_clear(((x_array*)(o)));
    for(sz_t i = 0; i < hist->hmap_tpuz.size; i++ )
    {
        tp_t key = bcore_hmap_tpuz_s_idx_key(&(hist->hmap_tpuz),i );
        if( key > 0 )
        {
            bcore_huffman_count_node_s* node = ((bcore_huffman_count_node_s*)(x_array_push(((x_array*)(o)))));
            node->c = bcore_hmap_tpuz_s_idx_val(&(hist->hmap_tpuz),i );
            node->v = bcore_huffman_hist_s_val(hist,key );
        }
    }
    return  o;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
callq 0x30a5d
leaq 0x8(%r14), %r15
xorl %r12d, %r12d
cmpq 0x20(%r14), %r12
jae 0x33a7d
movq %r15, %rdi
movq %r12, %rsi
callq 0x67b53
testq %rax, %rax
je 0x33a78
movq %rax, %r13
movq %rbx, %rdi
callq 0x34305
movq %rax, %rbp
movq %r15, %rdi
movq %r12, %rsi
callq 0x67b60
movq %rax, (%rbp)
decl %r13d
movl %r13d, 0x8(%rbp)
incq %r12
jmp 0x33a3e
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_huffman_codec_s_encode_u2
const bcore_huffman_codec_s* bcore_huffman_codec_s_encode_u2( const bcore_huffman_codec_s* o, u2_t val, bcore_huffman_bit_buffer_s* bit_buffer )
{
    // bcore_huffman.x:99:1
    
    if( !o->tree ) ERR_fa( "No tree! Load a codec or run scanning first." );
    sz_t idx = bcore_huffman_index_s_get(o->leaf_index,val );
    if( idx == 0 ) ERR_fa( "An encoding for value #<u2_t> does not exist.", val );
    
    const bcore_huffman_node_s* node =&( o->tree->data[ idx ]);
    
    u3_t stack = 0;
    sz_t bits = 0;
    
    while( node->p )
    {
        bl_t bit = ( o->tree->data[ node->p ].b1 == idx );
        idx = node->p;
        node = (&(o->tree->data[ idx ]));
    
        stack = ( stack << 1 ) | ( ( bit ) ? 1 : 0 );
        bits++;
    }
    
    if( bits > 64 )  ERR_fa( "Encoding of value #<u2_t> consumes more than 64 bits.", val );
    
    for(sz_t i = 0; i < bits; i++ )
    {
        bcore_huffman_bit_buffer_s_push_bl(bit_buffer,( stack & 1 ) );
        stack = stack >> 1;
    }
    
    return  o;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %rbx
movl %esi, %ebp
movq %rdi, %r14
cmpq $0x0, 0x18(%rdi)
jne 0x33c35
leaq 0x81136(%rip), %rdi     # 0xb4d51
leaq 0x80b2c(%rip), %rsi     # 0xb474e
leaq 0x81148(%rip), %rcx     # 0xb4d71
movl $0xa33, %edx            # imm = 0xA33
xorl %eax, %eax
callq 0x60186
movq 0x20(%r14), %rdi
addq $0x8, %rdi
movl %ebp, %esi
incq %rsi
callq 0x6788c
testq %rax, %rax
je 0x33c54
movq (%rax), %r13
testq %r13, %r13
jne 0x33c7b
leaq 0x810f6(%rip), %rdi     # 0xb4d51
leaq 0x80aec(%rip), %rsi     # 0xb474e
leaq 0x81135(%rip), %rcx     # 0xb4d9e
xorl %r13d, %r13d
movl $0xa35, %edx            # imm = 0xA35
movl %ebp, %r8d
xorl %eax, %eax
callq 0x60186
movq 0x18(%r14), %rax
movq 0x8(%rax), %rax
xorl %r15d, %r15d
xorl %r12d, %r12d
imulq $0x28, %r13, %rcx
movq 0x8(%rax,%rcx), %rcx
testq %rcx, %rcx
je 0x33cb2
imulq $0x28, %rcx, %rdx
xorl %esi, %esi
cmpq %r13, 0x18(%rax,%rdx)
sete %sil
leaq (%rsi,%r15,2), %r15
incq %r12
movq %rcx, %r13
jmp 0x33c89
cmpq $0x41, %r12
jb 0x33cef
leaq 0x81092(%rip), %rdi     # 0xb4d51
leaq 0x80a88(%rip), %rsi     # 0xb474e
leaq 0x810ff(%rip), %rcx     # 0xb4dcc
movl $0xa46, %edx            # imm = 0xA46
movl %ebp, %r8d
xorl %eax, %eax
callq 0x60186
jmp 0x33cef
movl %r15d, %esi
andl $0x1, %esi
movq %rbx, %rdi
callq 0x33d07
shrq %r15
subq $0x1, %r12
jae 0x33cde
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_huffman_bit_buffer_s_push_bl
bcore_huffman_bit_buffer_s* bcore_huffman_bit_buffer_s_push_bl( bcore_huffman_bit_buffer_s* o, bl_t bit )
{
    // bcore_huffman.x:209:1
    
    if( o->bits == o->size * 8 ) (*(((u0_t*)(x_array_push(((x_array*)(o))))))) = 0;
    sz_t idx = o->bits / 8;
    if( bit )
    {
        u0_t m = 1 << ( o->bits - ( idx * 8 ) );
        o->data[ idx ] |= m;
    }
    o->bits++;
    return  o;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
movq 0x8(%rdi), %rcx
movq 0x18(%rdi), %rax
shlq $0x3, %rax
cmpq %rax, %rcx
jne 0x33d2f
movq %rbx, %rdi
callq 0x34305
movb $0x0, (%rax)
movq 0x8(%rbx), %rcx
testb %bpl, %bpl
je 0x33d4d
movq %rcx, %rax
shrq $0x3, %rax
andb $0x7, %cl
movb $0x1, %dl
shlb %cl, %dl
movq 0x10(%rbx), %rcx
orb %dl, (%rcx,%rax)
movq 0x8(%rbx), %rcx
incq %rcx
movq %rcx, 0x8(%rbx)
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_huffman_codec_s_decode_u2
u2_t bcore_huffman_codec_s_decode_u2( const bcore_huffman_codec_s* o, bcore_huffman_bit_buffer_iterator_s* iterator )
{
    // bcore_huffman.x:133:1
    
    if( !o->tree ) ERR_fa( "No tree! Load a codec or run scanning first." );
    const bcore_huffman_node_s* node =&( o->tree->data[ bcore_huffman_tree_s_root_index(o->tree) ]);
    
    while( !bcore_huffman_bit_buffer_iterator_s_eos(iterator) && !bcore_huffman_node_s_is_leaf(node) )
    {
        bl_t bit = bcore_huffman_bit_buffer_iterator_s_read_bl(iterator);
        uz_t idx = ( bit ) ? node->b1 : node->b0;
        node = (&(o->tree->data[ idx ]));
    }
    
    if( !bcore_huffman_node_s_is_leaf(node) )
    {
        ERR_fa( "Decoding error. Bit buffer appears corrupted." );
    }
    
    return  node->v;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %rbx
movq %rdi, %r14
movq 0x18(%rdi), %rax
testq %rax, %rax
jne 0x33d97
leaq 0x81089(%rip), %rdi     # 0xb4e02
leaq 0x809ce(%rip), %rsi     # 0xb474e
leaq 0x80fea(%rip), %rcx     # 0xb4d71
movl $0xa55, %edx            # imm = 0xA55
xorl %eax, %eax
callq 0x60186
movq 0x18(%r14), %rax
movq 0x8(%rax), %rcx
imulq $0x28, 0x10(%rax), %rax
leaq (%rcx,%rax), %r15
addq $-0x28, %r15
movq 0x8(%rbx), %rcx
movq 0x10(%rbx), %rdx
movq 0x10(%r15), %rax
cmpq 0x8(%rcx), %rdx
jae 0x33dda
testq %rax, %rax
je 0x33e00
movq %rbx, %rdi
callq 0x33e0a
movzbl %al, %eax
movq 0x18(%r14), %rcx
imulq $0x28, 0x10(%r15,%rax,8), %r15
addq 0x8(%rcx), %r15
jmp 0x33da8
testq %rax, %rax
je 0x33e00
leaq 0x8101c(%rip), %rdi     # 0xb4e02
leaq 0x80961(%rip), %rsi     # 0xb474e
leaq 0x8102e(%rip), %rcx     # 0xb4e22
movl $0xa61, %edx            # imm = 0xA61
xorl %eax, %eax
callq 0x60186
movl 0x20(%r15), %eax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_huffman_bit_buffer_iterator_s_read_bl
BCORE_DEFINE_OBJECT_INST_P_NASC_END( bcore_huffman_bit_buffer_iterator_s )

bl_t bcore_huffman_bit_buffer_iterator_s_read_bl( bcore_huffman_bit_buffer_iterator_s* o )
{
    // bcore_huffman.x:317:1
    
    if( !o->bit_buffer ) ERR_fa( "No buffer assigned. Call setup first." );
    if( o->bit_index >= o->bit_buffer->bits ) ERR_fa( "Reading past end of buffer" );
    sz_t idx = o->bit_index / 8;
    u0_t m = 1 << ( o->bit_index - ( idx * 8 ) );
    o->bit_index++;
    return  ( o->bit_buffer->data[ idx ] & m ) ? true : false;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq 0x8(%rdi), %rsi
testq %rsi, %rsi
jne 0x33e3c
leaq 0x81060(%rip), %rdi     # 0xb4e7e
leaq 0x80929(%rip), %rsi     # 0xb474e
leaq 0x8107e(%rip), %rcx     # 0xb4eaa
movl $0xb13, %edx            # imm = 0xB13
xorl %eax, %eax
callq 0x60186
movq 0x8(%rbx), %rsi
movq 0x10(%rbx), %rcx
cmpq 0x8(%rsi), %rcx
jb 0x33e6f
leaq 0x81031(%rip), %rdi     # 0xb4e7e
leaq 0x808fa(%rip), %rsi     # 0xb474e
leaq 0x81075(%rip), %rcx     # 0xb4ed0
movl $0xb14, %edx            # imm = 0xB14
xorl %eax, %eax
callq 0x60186
movq 0x8(%rbx), %rsi
movq 0x10(%rbx), %rcx
pushq $0x8
popq %rdi
movq %rcx, %rax
cqto
idivq %rdi
leal (,%rax,8), %edx
movl %ecx, %edi
subl %edx, %edi
incq %rcx
movq %rcx, 0x10(%rbx)
movq 0x10(%rsi), %rcx
movzbl (%rcx,%rax), %eax
btl %edi, %eax
setb %al
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_huffman_codec_s_decode
bcore_huffman_codec_s* bcore_huffman_codec_s_decode( bcore_huffman_codec_s* o, bcore_huffman_bit_buffer_iterator_s* iterator )
{
    // bcore_huffman.x:185:1
    
    bcore_huffman_codec_s_clear(o);
    bcore_huffman_count_map_s_decode(BCORE_PASS_CREATE(bcore_huffman_count_map_s,o->count_map),iterator );
    bcore_huffman_tree_s_build(BCORE_PASS_CREATE(bcore_huffman_tree_s,o->tree),o->count_map, BCORE_PASS_CREATE(bcore_huffman_index_s,o->leaf_index) );
    return  o;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
callq 0x3384d
movq 0x10(%rbx), %rdi
testq %rdi, %rdi
jne 0x340df
callq 0x34ac0
movq %rax, %rdi
movq %rax, 0x10(%rbx)
movq %r14, %rsi
callq 0x34129
movq 0x18(%rbx), %r14
testq %r14, %r14
jne 0x340fc
callq 0x34bac
movq %rax, %r14
movq %rax, 0x18(%rbx)
movq 0x10(%rbx), %r15
movq 0x20(%rbx), %rdx
testq %rdx, %rdx
jne 0x34115
callq 0x34952
movq %rax, %rdx
movq %rax, 0x20(%rbx)
movq %r14, %rdi
movq %r15, %rsi
callq 0x33a8f
movq %rbx, %rax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_huffman_count_map_s_decode
bcore_huffman_count_map_s* bcore_huffman_count_map_s_decode( bcore_huffman_count_map_s* o, bcore_huffman_bit_buffer_iterator_s* in )
{
    // bcore_huffman.x:497:1
    
    x_array_clear(((x_array*)(o)));
    sz_t size = bcore_huffman_bit_buffer_iterator_s_read_packed_u3(in);
    x_array_set_size(((x_array*)(o)),size );
    
    sz_t idx = 0;
    u3_t count = bcore_huffman_bit_buffer_iterator_s_read_packed_u3(in);
    ASSERT( count <= o->size );
    for(sz_t i = 0; i < count; i++ ) o->data[ idx++ ].c = 1;
    
    while( idx < o->size )
    {
        sz_t bits_m1 = bcore_huffman_bit_buffer_iterator_s_read_u3(in,6 );
        u3_t count = bcore_huffman_bit_buffer_iterator_s_read_packed_u3(in);
        ASSERT( idx + count <= o->size );
        for(sz_t i = 0; i < count; i++ ) o->data[ idx + i ].c = bcore_huffman_bit_buffer_iterator_s_read_u3(in,bits_m1 ) + ( 1ull << bits_m1 );
        idx += count;
    }
    
    sz_t max_bits = bcore_huffman_bit_buffer_iterator_s_read_u3(in,6 );
    for(sz_t i = 0; i < o->size; i++ ) o->data[ i ].v = bcore_huffman_bit_buffer_iterator_s_read_u3(in,max_bits );
    
    return  o;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
callq 0x30a5d
movq %r14, %rdi
callq 0x34795
movq %rbx, %rdi
movq %rax, %rsi
callq 0x30a50
movq %r14, %rdi
callq 0x34795
movq %rax, %r15
cmpq 0x10(%rbx), %rax
jbe 0x3418c
leaq 0x764dd(%rip), %rdi     # 0xaa647
leaq 0x80e01(%rip), %rsi     # 0xb4f72
leaq 0x80dd3(%rip), %rdx     # 0xb4f4b
leaq 0x805cf(%rip), %rcx     # 0xb474e
movl $0xbc6, %r8d            # imm = 0xBC6
xorl %eax, %eax
callq 0x5ffac
xorl %eax, %eax
movq %r15, %rcx
subq $0x1, %rcx
jb 0x34222
movq 0x8(%rbx), %rdx
movq $0x1, (%rdx,%rax)
addq $0x10, %rax
jmp 0x34191
movq %r14, %rdi
callq 0x34795
movq %rax, %rbp
addq %r15, %rax
movq %rax, (%rsp)
cmpq 0x10(%rbx), %rax
jbe 0x341ee
leaq 0x7647b(%rip), %rdi     # 0xaa647
leaq 0x80d99(%rip), %rsi     # 0xb4f6c
leaq 0x80d71(%rip), %rdx     # 0xb4f4b
leaq 0x8056d(%rip), %rcx     # 0xb474e
movl $0xbcd, %r8d            # imm = 0xBCD
xorl %eax, %eax
callq 0x5ffac
pushq $0x1
popq %r13
movl %r12d, %ecx
shlq %cl, %r13
shlq $0x4, %r15
subq $0x1, %rbp
jb 0x3421e
movq %r14, %rdi
movq %r12, %rsi
callq 0x3474d
addq %r13, %rax
movq 0x8(%rbx), %rcx
movq %rax, (%rcx,%r15)
addq $0x10, %r15
jmp 0x341fc
movq (%rsp), %r15
movq 0x10(%rbx), %r13
movq %r14, %rdi
pushq $0x6
popq %rsi
callq 0x3474d
movq %rax, %r12
cmpq %r13, %r15
jb 0x341ad
pushq $0x8
popq %r15
xorl %r13d, %r13d
cmpq 0x10(%rbx), %r13
jae 0x34266
movq %r14, %rdi
movq %r12, %rsi
callq 0x3474d
movq 0x8(%rbx), %rcx
movl %eax, (%rcx,%r15)
incq %r13
addq $0x10, %r15
jmp 0x34244
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq