LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sinks.c
// Function: bcore_sink_file_s_close
void bcore_sink_file_s_close( bcore_sink_file_s* o )
{
    if( !o->handle ) return;
    if( fclose( o->handle ) != 0 )
    {
        st_s* msg = st_s_createf( "Error closing file %s:\n", o->name->sc );
        perror( msg->sc );
        st_s_discard( msg );
        bcore_abort();
    }
    o->handle = NULL;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq 0x10(%rdi), %rdi
testq %rdi, %rdi
je 0xeb28d
callq 0xd380
testl %eax, %eax
jne 0xeb28f
movq $0x0, 0x10(%rbx)
popq %rbx
retq
movq %rbx, %rdi
callq 0xd7a3
jmp 0xeb285
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sinks.c
// Function: bcore_sink_file_s_try_open
bl_t bcore_sink_file_s_try_open( bcore_sink_file_s* o )
{
    if( !o->name ) return false;
    if( o->handle ) bcore_sink_file_s_close( o );
    o->handle = fopen( o->name->sc, "wb" );
    if( !o->handle ) return false;
    return true;
}

// Assembly:
cmpq $0x0, 0x8(%rdi)
je 0xeb2d3
pushq %rbx
movq %rdi, %rbx
cmpq $0x0, 0x10(%rdi)
je 0xeb2b3
movq %rbx, %rdi
callq 0xeb26f
movq 0x8(%rbx), %rax
movq 0x8(%rax), %rdi
leaq 0x631db(%rip), %rsi     # 0x14e49d
callq 0xd170
movq %rax, 0x10(%rbx)
testq %rax, %rax
setne %al
popq %rbx
retq
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sinks.c
// Function: file_flow_snk
static uz_t file_flow_snk( bcore_sink_file_s* o, vc_t data, uz_t size )
{
    if( !o->handle ) bcore_sink_file_s_open( o );
    uz_t wsize = fwrite( data, 1, size, o->handle );
    if( wsize != size )
    {
        if( ferror( o->handle ) )
        {
            st_s* msg = st_s_createf( "Error writing to file %s:\n", o->name->sc );
            perror( msg->sc );
            st_s_discard( msg );
        }
    }
    return wsize;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
cmpq $0x0, 0x10(%rdi)
jne 0xeb31a
movq %rbx, %rdi
callq 0xeb207
movq 0x10(%rbx), %rcx
movl $0x1, %esi
movq %r15, %rdi
movq %r14, %rdx
callq 0xd3c0
movq %rax, %r15
cmpq %r14, %rax
je 0xeb343
movq 0x10(%rbx), %rdi
callq 0xd240
testl %eax, %eax
jne 0xeb34c
movq %r15, %rax
popq %rbx
popq %r14
popq %r15
retq
movq %rbx, %rdi
callq 0xd809
jmp 0xeb343
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sinks.c
// Function: bcore_sink_open_file
bcore_sink_chain_s* bcore_sink_open_file( sc_t file_name )
{
    bcore_sink_chain_s* chain = bcore_sink_chain_s_create();
    bcore_sink_chain_s_push_d( chain, bcore_sink_file_s_create_name( file_name ) );
    bcore_sink_chain_s_push_d( chain, bcore_inst_t_create( typeof( "bcore_sink_buffer_s" ) ) );
    return chain;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %r15
movabsq $-0x741f65139500cd47, %r14 # imm = 0x8BE09AEC6AFF32B9
callq 0xea0c7
movq %rax, %rbx
callq 0xeb064
movq %rax, %r12
movq %r15, %rdi
callq 0x114e47
movq %rax, 0x8(%r12)
movq %rbx, %rdi
movq %r12, %rsi
callq 0xea23b
leaq 0xbe0ce(%rip), %rax     # 0x1a9468
movl (%rax), %ecx
movslq %ecx, %rcx
leaq (%rcx,%rcx,2), %rcx
movq 0x20(%rax,%rcx,8), %rdx
movq 0x18(%rax,%rcx,8), %rcx
andq %r14, %rcx
shlq $0x4, %rcx
leaq (%rdx,%rcx), %rax
movq (%rdx,%rcx), %rdx
movl $0x8, %ecx
cmpq %r14, %rdx
je 0xeb3f0
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r14, %rdx
je 0xeb3f0
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r14, %rdx
je 0xeb3f0
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r14, %rdx
jne 0xeb444
movq (%rax,%rcx), %r15
testq %r15, %r15
jne 0xeb420
movabsq $0x782b96602f424981, %rdi # imm = 0x782B96602F424981
movq %r14, %rsi
callq 0xf3f85
movq %rax, %r15
leaq 0xbe053(%rip), %rdi     # 0x1a9468
movq %r14, %rsi
movq %rax, %rdx
callq 0x12128c
movq %r15, %rdi
callq *0xa8(%r15)
movq %rbx, %rdi
movq %rax, %rsi
callq 0xea23b
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
xorl %r15d, %r15d
jmp 0xeb3f4
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sinks.c
// Function: bcore_sink_try_open_file
bcore_sink_chain_s* bcore_sink_try_open_file( sc_t file_name )
{
    bcore_sink_file_s* sink_file = bcore_sink_file_s_create_name( file_name );
    if( bcore_sink_file_s_try_open( sink_file ) )
    {
        bcore_sink_chain_s* chain = bcore_sink_chain_s_create();
        bcore_sink_chain_s_push_d( chain, sink_file );
        bcore_sink_chain_s_push_d( chain, bcore_inst_t_create( typeof( "bcore_sink_buffer_s" ) ) );
        return chain;
    }
    else
    {
        bcore_sink_file_s_discard( sink_file );
        return NULL;
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
callq 0xeb064
movq %rax, %r15
movq %rbx, %rdi
callq 0x114e47
movq %rax, 0x8(%r15)
movq %r15, %rdi
callq 0xeb299
testb %al, %al
je 0xeb536
movabsq $-0x741f65139500cd47, %r14 # imm = 0x8BE09AEC6AFF32B9
callq 0xea0c7
movq %rax, %rbx
movq %rax, %rdi
movq %r15, %rsi
callq 0xea23b
leaq 0xbdfcf(%rip), %rax     # 0x1a9468
movl (%rax), %ecx
movslq %ecx, %rcx
leaq (%rcx,%rcx,2), %rcx
movq 0x20(%rax,%rcx,8), %rdx
movq 0x18(%rax,%rcx,8), %rcx
andq %r14, %rcx
shlq $0x4, %rcx
leaq (%rdx,%rcx), %rax
movq (%rdx,%rcx), %rdx
movl $0x8, %ecx
cmpq %r14, %rdx
je 0xeb4ef
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r14, %rdx
je 0xeb4ef
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r14, %rdx
je 0xeb4ef
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r14, %rdx
jne 0xeb549
movq (%rax,%rcx), %r15
testq %r15, %r15
jne 0xeb51f
movabsq $0x782b96602f424981, %rdi # imm = 0x782B96602F424981
movq %r14, %rsi
callq 0xf3f85
movq %rax, %r15
leaq 0xbdf54(%rip), %rdi     # 0x1a9468
movq %r14, %rsi
movq %rax, %rdx
callq 0x12128c
movq %r15, %rdi
callq *0xa8(%r15)
movq %rbx, %rdi
movq %rax, %rsi
callq 0xea23b
jmp 0xeb540
movq %r15, %rdi
callq 0xeafa2
xorl %ebx, %ebx
movq %rbx, %rax
popq %rbx
popq %r14
popq %r15
retq
xorl %r15d, %r15d
jmp 0xeb4f3
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sinks.c
// Function: bcore_sink_stdout_s_push_data
uz_t bcore_sink_stdout_s_push_data( bcore_sink_stdout_s* o, vc_t data, uz_t size )
{
    st_s* msg = st_s_create_sc_n( data, size );
    fprintf( stdout, "%s", msg->sc );
    st_s_discard( msg );
    return size;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdx, %rbx
movq %rsi, %rdi
movq %rdx, %rsi
callq 0x114db5
movq %rax, %r14
movq 0xaf5ec(%rip), %rax     # 0x19aff0
movq (%rax), %rsi
movq 0x8(%r14), %rdi
callq 0xd2b0
movq %r14, %rdi
callq 0x114f61
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sinks.c
// Function: buffer_s_create_self
static bcore_self_s* buffer_s_create_self( void )
{
    sc_t def =
    "bcore_sink_buffer_s = bcore_sink"
    "{ "
      "aware_t _; "
      "u0_t [] data; "
      "private vd_t consumer; "
      "uz_t entrepot_size; "
    "}";
    bcore_self_s* self = BCORE_SELF_S_BUILD_PARSE_SC( def, bcore_sink_buffer_s );
    bcore_self_s_push_ns_func( self, ( fp_t )bcore_sink_buffer_s_init,         "bcore_fp_init",              "init"  );
    bcore_self_s_push_ns_func( self, ( fp_t )buffer_flow_snk,                  "bcore_fp_flow_snk",          "flow_snk"  );
    bcore_self_s_push_ns_func( self, ( fp_t )bcore_sink_buffer_s_set_consumer, "bcore_sink_fp_set_consumer", "set_consumer" );
    bcore_self_s_push_ns_func( self, ( fp_t )bcore_sink_buffer_s_flush,        "bcore_sink_fp_flush",        "flush" );
    return self;
}

// Assembly:
pushq %rbx
leaq 0x661a7(%rip), %rdi     # 0x15278d
movl $0x30, %esi
movl $0x8, %edx
callq 0xce5c6
movq %rax, %rbx
leaq -0x1f45(%rip), %rsi     # 0xea6ba
leaq 0x613ef(%rip), %rdx     # 0x14d9f5
leaq 0x613f1(%rip), %rcx     # 0x14d9fe
movq %rax, %rdi
callq 0xcd5ad
leaq -0x1a44(%rip), %rsi     # 0xeabd8
leaq 0x660a5(%rip), %rdx     # 0x1526c8
leaq 0x660a7(%rip), %rcx     # 0x1526d1
movq %rbx, %rdi
callq 0xcd5ad
leaq -0x18ea(%rip), %rsi     # 0xead4f
leaq 0x661b5(%rip), %rdx     # 0x1527f5
leaq 0x661bc(%rip), %rcx     # 0x152803
movq %rbx, %rdi
callq 0xcd5ad
leaq -0x1bb0(%rip), %rsi     # 0xeaaa6
leaq 0x66097(%rip), %rdx     # 0x1526f4
leaq 0x58cc9(%rip), %rcx     # 0x14532d
movq %rbx, %rdi
callq 0xcd5ad
movq %rbx, %rax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sinks.c
// Function: file_s_create_self
static bcore_self_s* file_s_create_self( void )
{
    sc_t def =
    "bcore_sink_file_s = bcore_sink"
    "{ "
      "aware_t _; "
      "st_s => name; "
      "private vd_t handle; "
    "}";

    bcore_self_s* self = BCORE_SELF_S_BUILD_PARSE_SC( def, bcore_sink_file_s );
    bcore_self_s_push_ns_amoeba( self, file_init_a, "init" );
    bcore_self_s_push_ns_amoeba( self, file_down_a, "down" );
    bcore_self_s_push_ns_amoeba( self, file_copy_a, "copy" );
    bcore_self_s_push_ns_func( self, ( fp_t )file_interpret_body_a,   "ap_t", "interpret_body"        );
    bcore_self_s_push_ns_func( self, ( fp_t )file_flow_snk,           "bcore_fp_flow_snk", "flow_snk" );
    bcore_self_s_push_ns_func( self, ( fp_t )bcore_sink_file_s_flush, "bcore_sink_fp_flush", "flush"  );
    return self;
}

// Assembly:
pushq %rbx
leaq 0x66197(%rip), %rdi     # 0x152810
movl $0x18, %esi
movl $0x8, %edx
callq 0xce5c6
movq %rax, %rbx
leaq 0x1ae(%rip), %rsi       # 0xec840
leaq 0x61365(%rip), %rdx     # 0x14d9fe
movq %rax, %rdi
callq 0xcd617
leaq 0x1ae(%rip), %rsi       # 0xec856
leaq 0x55b1b(%rip), %rdx     # 0x1421ca
movq %rbx, %rdi
callq 0xcd617
leaq 0x1ab(%rip), %rsi       # 0xec869
leaq 0x5ce1e(%rip), %rdx     # 0x1494e3
movq %rbx, %rdi
callq 0xcd617
leaq 0x1a8(%rip), %rsi       # 0xec87c
leaq 0x6246a(%rip), %rdx     # 0x14eb45
leaq 0x6617e(%rip), %rcx     # 0x152860
movq %rbx, %rdi
callq 0xcd5ad
leaq -0x13f4(%rip), %rsi     # 0xeb2fd
leaq 0x65fd0(%rip), %rdx     # 0x1526c8
leaq 0x65fd2(%rip), %rcx     # 0x1526d1
movq %rbx, %rdi
callq 0xcd5ad
leaq -0x1438(%rip), %rsi     # 0xeb2d6
leaq 0x65fdf(%rip), %rdx     # 0x1526f4
leaq 0x58c11(%rip), %rcx     # 0x14532d
movq %rbx, %rdi
callq 0xcd5ad
movq %rbx, %rax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sinks.c
// Function: chain_s_create_self
static bcore_self_s* chain_s_create_self( void )
{
    sc_t def =
    "bcore_sink_chain_s = bcore_sink"
    "{ "
      "aware_t _; "
      "aware => [] data; "
    "}";

    bcore_self_s* self = BCORE_SELF_S_BUILD_PARSE_SC( def, bcore_sink_chain_s );
    bcore_self_s_push_ns_amoeba( self, chain_init_a, "init" );
    bcore_self_s_push_ns_amoeba( self, chain_down_a, "down" );
    bcore_self_s_push_ns_amoeba( self, chain_copy_a, "copy" );
    bcore_self_s_push_ns_func( self, ( fp_t )chain_interpret_body_a,   "ap_t", "interpret_body" );
    bcore_self_s_push_ns_func( self, ( fp_t )chain_flow_snk,           "bcore_fp_flow_snk",   "flow_snk" );
    bcore_self_s_push_ns_func( self, ( fp_t )bcore_sink_chain_s_set_consumer, "bcore_sink_fp_set_consumer", "set_consumer" );
    bcore_self_s_push_ns_func( self, ( fp_t )bcore_sink_chain_s_flush, "bcore_sink_fp_flush", "flush"    );
    return self;
}

// Assembly:
pushq %rbx
leaq 0x6613e(%rip), %rdi     # 0x15286f
movl $0x20, %esi
movl $0x8, %edx
callq 0xce5c6
movq %rax, %rbx
leaq 0x145(%rip), %rsi       # 0xec88f
leaq 0x612ad(%rip), %rdx     # 0x14d9fe
movq %rax, %rdi
callq 0xcd617
leaq 0x148(%rip), %rsi       # 0xec8a8
leaq 0x55a63(%rip), %rdx     # 0x1421ca
movq %rbx, %rdi
callq 0xcd617
leaq 0x145(%rip), %rsi       # 0xec8bb
leaq 0x5cd66(%rip), %rdx     # 0x1494e3
movq %rbx, %rdi
callq 0xcd617
leaq 0x233(%rip), %rsi       # 0xec9bf
leaq 0x623b2(%rip), %rdx     # 0x14eb45
leaq 0x660c6(%rip), %rcx     # 0x152860
movq %rbx, %rdi
callq 0xcd5ad
leaq -0x21da(%rip), %rsi     # 0xea5cf
leaq 0x65f18(%rip), %rdx     # 0x1526c8
leaq 0x65f1a(%rip), %rcx     # 0x1526d1
movq %rbx, %rdi
callq 0xcd5ad
leaq -0x1b78(%rip), %rsi     # 0xeac4e
leaq 0x66028(%rip), %rdx     # 0x1527f5
leaq 0x6602f(%rip), %rcx     # 0x152803
movq %rbx, %rdi
callq 0xcd5ad
leaq -0x2306(%rip), %rsi     # 0xea4dd
leaq 0x65f0a(%rip), %rdx     # 0x1526f4
leaq 0x58b3c(%rip), %rcx     # 0x14532d
movq %rbx, %rdi
callq 0xcd5ad
movq %rbx, %rax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sinks.c
// Function: chain_interpret_body_a
static void chain_interpret_body_a( vd_t nc )
{
    struct { ap_t a; vc_t p; vc_t inter; vd_t sink; tp_t type; vd_t obj; } * nc_l = nc;
    nc_l->a( nc ); // default
    bcore_sink_chain_s* o = nc_l->obj;
    for( uz_t i = 1; i < o->size; i++ ) bcore_sink_a_set_consumer( o->data[ i ], o->data[ i - 1 ] );
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq *(%rdi)
movq 0x28(%rbx), %r15
cmpq $0x2, 0x10(%r15)
jb 0xecab4
movl $0x1, %ebx
movq 0x8(%r15), %rax
movq -0x8(%rax,%rbx,8), %r12
movq (%rax,%rbx,8), %r13
movq (%r13), %rbp
leaq 0xbd0b5(%rip), %rdx     # 0x1a9ab0
movl (%rdx), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%rdx,%rax,8), %rcx
movq 0x18(%rdx,%rax,8), %rdx
andq %rbp, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbp, %rdx
je 0xeca50
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbp, %rdx
je 0xeca50
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbp, %rdx
je 0xeca50
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbp, %rdx
jne 0xecaaf
movq (%rax,%rcx), %r14
testq %r14, %r14
jne 0xeca80
movabsq $0x5ea8cabb93ff3b7e, %rdi # imm = 0x5EA8CABB93FF3B7E
movq %rbp, %rsi
callq 0xf3f85
movq %rax, %r14
leaq 0xbd03b(%rip), %rdi     # 0x1a9ab0
movq %rbp, %rsi
movq %rax, %rdx
callq 0x12128c
cmpq $0x0, 0x18(%r14)
jne 0xeca96
movq %r14, %rdi
leaq 0x65d72(%rip), %rsi     # 0x152803
callq 0xf592c
movq %r13, %rdi
movq %r12, %rsi
callq *0x18(%r14)
incq %rbx
cmpq 0x10(%r15), %rbx
jb 0xec9e3
jmp 0xecab4
xorl %r14d, %r14d
jmp 0xeca54
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: bcore_source_chain_s_set_supplier
void bcore_source_chain_s_set_supplier( bcore_source_chain_s* o, vd_t supplier )
{
    if( o->size == 0 ) ERR( "chain is empty" );
    bcore_source_a_set_supplier( o->data[ 0 ], supplier );
    for( uz_t i = 1; i < o->size; i++ )
    {
        // resetting the supplier also resets of the internal state of each element
        bcore_source_a_set_supplier( o->data[ i ], o->data[ i - 1 ] );
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r15
movq %rdi, %rbx
cmpq $0x0, 0x10(%rdi)
jne 0xed30b
leaq 0x657ad(%rip), %rdi     # 0x152a9e
leaq 0x657c8(%rip), %rsi     # 0x152ac0
leaq 0x652f6(%rip), %rcx     # 0x1525f5
movl $0x99, %edx
xorl %eax, %eax
callq 0xc80f6
movq 0x8(%rbx), %rax
movq (%rax), %r12
movq (%r12), %r13
leaq 0xbc9ab(%rip), %rdx     # 0x1a9cc8
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 0xed376
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r13, %rdx
je 0xed376
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r13, %rdx
je 0xed376
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r13, %rdx
jne 0xed4b8
movq (%rax,%rcx), %rbp
testq %rbp, %rbp
jne 0xed3a6
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %r13, %rsi
callq 0xf3f85
movq %rax, %rbp
leaq 0xbc92d(%rip), %rdi     # 0x1a9cc8
movq %r13, %rsi
movq %rax, %rdx
callq 0x12128c
cmpq $0x0, 0x30(%rbp)
jne 0xed3bc
leaq 0x65b68(%rip), %rsi     # 0x152f1c
movq %rbp, %rdi
callq 0xf592c
movq %r12, %rdi
movq %r15, %rsi
callq *0x30(%rbp)
cmpq $0x2, 0x10(%rbx)
jb 0xed4a9
movl $0x1, %r14d
movq 0x8(%rbx), %rax
movq -0x8(%rax,%r14,8), %r13
movq (%rax,%r14,8), %rbp
movq (%rbp), %r15
leaq 0xbc8da(%rip), %rdx     # 0x1a9cc8
movl (%rdx), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%rdx,%rax,8), %rcx
movq 0x18(%rdx,%rax,8), %rdx
andq %r15, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r15, %rdx
je 0xed443
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r15, %rdx
je 0xed443
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r15, %rdx
je 0xed443
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r15, %rdx
jne 0xed4a4
movq (%rax,%rcx), %r12
testq %r12, %r12
jne 0xed473
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %r15, %rsi
callq 0xf3f85
movq %rax, %r12
leaq 0xbc860(%rip), %rdi     # 0x1a9cc8
movq %r15, %rsi
movq %rax, %rdx
callq 0x12128c
cmpq $0x0, 0x30(%r12)
jne 0xed48a
movq %r12, %rdi
leaq 0x65a97(%rip), %rsi     # 0x152f1c
callq 0xf592c
movq %rbp, %rdi
movq %r13, %rsi
callq *0x30(%r12)
incq %r14
cmpq 0x10(%rbx), %r14
jb 0xed3d6
jmp 0xed4a9
xorl %r12d, %r12d
jmp 0xed447
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %ebp, %ebp
jmp 0xed37a
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: bcore_source_chain_s_get_index
s3_t bcore_source_chain_s_get_index( const bcore_source_chain_s* o )
{
    s3_t index = 0;
    for( uz_t i = 0; i < o->size; i++ )
    {
        index += bcore_source_a_get_index( o->data[ i ] );
    }
    return index;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
cmpq $0x0, 0x10(%rdi)
je 0xed73d
movq %rdi, %rbx
xorl %r15d, %r15d
xorl %r14d, %r14d
movq 0x8(%rbx), %rax
movq (%rax,%r15,8), %r13
movq (%r13), %rbp
leaq 0xbc632(%rip), %rdx     # 0x1a9cc8
movl (%rdx), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%rdx,%rax,8), %rcx
movq 0x18(%rdx,%rax,8), %rdx
andq %rbp, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbp, %rdx
je 0xed6eb
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbp, %rdx
je 0xed6eb
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbp, %rdx
je 0xed6eb
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbp, %rdx
jne 0xed738
movq (%rax,%rcx), %r12
testq %r12, %r12
jne 0xed71b
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbp, %rsi
callq 0xf3f85
movq %rax, %r12
leaq 0xbc5b8(%rip), %rdi     # 0x1a9cc8
movq %rbp, %rsi
movq %rax, %rdx
callq 0x12128c
movq %r12, %rdi
movq %r13, %rsi
callq 0x10aa5d
addq %rax, %r14
incq %r15
cmpq 0x10(%rbx), %r15
jb 0xed683
jmp 0xed740
xorl %r12d, %r12d
jmp 0xed6ef
xorl %r14d, %r14d
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_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: bcore_source_chain_s_set_index
void bcore_source_chain_s_set_index( bcore_source_chain_s* o, s3_t index )
{
    if( o->size == 0 ) ERR( "Chain is empty." );
    s3_t cur_index = bcore_source_chain_s_get_index( o );
    if( index == cur_index ) return;
    bcore_source_a_set_index( o->data[ 0 ], index );
    for( uz_t i = 1; i < o->size; i++ )
    {
        // resetting the supplier also resets of the internal state of each element
        bcore_source_a_set_supplier( o->data[ i ], o->data[ i - 1 ] );
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r15
movq %rdi, %rbx
cmpq $0x0, 0x10(%rdi)
jne 0xed78b
leaq 0x6535f(%rip), %rdi     # 0x152ad0
leaq 0x65348(%rip), %rsi     # 0x152ac0
leaq 0x65370(%rip), %rcx     # 0x152aef
movl $0xc2, %edx
xorl %eax, %eax
callq 0xc80f6
movq %rbx, %rdi
callq 0xed664
cmpq %r15, %rax
je 0xed929
movq 0x8(%rbx), %rax
movq (%rax), %r12
movq (%r12), %r13
leaq 0xbc51a(%rip), %rdx     # 0x1a9cc8
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 0xed807
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r13, %rdx
je 0xed807
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r13, %rdx
je 0xed807
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r13, %rdx
jne 0xed938
movq (%rax,%rcx), %rbp
testq %rbp, %rbp
jne 0xed837
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %r13, %rsi
callq 0xf3f85
movq %rax, %rbp
leaq 0xbc49c(%rip), %rdi     # 0x1a9cc8
movq %r13, %rsi
movq %rax, %rdx
callq 0x12128c
movq %rbp, %rdi
movq %r12, %rsi
movq %r15, %rdx
callq 0x10aa6e
cmpq $0x2, 0x10(%rbx)
jb 0xed929
movl $0x1, %r14d
movq 0x8(%rbx), %rax
movq -0x8(%rax,%r14,8), %r13
movq (%rax,%r14,8), %rbp
movq (%rbp), %r15
leaq 0xbc45a(%rip), %rdx     # 0x1a9cc8
movl (%rdx), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%rdx,%rax,8), %rcx
movq 0x18(%rdx,%rax,8), %rdx
andq %r15, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r15, %rdx
je 0xed8c3
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r15, %rdx
je 0xed8c3
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r15, %rdx
je 0xed8c3
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r15, %rdx
jne 0xed924
movq (%rax,%rcx), %r12
testq %r12, %r12
jne 0xed8f3
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %r15, %rsi
callq 0xf3f85
movq %rax, %r12
leaq 0xbc3e0(%rip), %rdi     # 0x1a9cc8
movq %r15, %rsi
movq %rax, %rdx
callq 0x12128c
cmpq $0x0, 0x30(%r12)
jne 0xed90a
movq %r12, %rdi
leaq 0x65617(%rip), %rsi     # 0x152f1c
callq 0xf592c
movq %rbp, %rdi
movq %r13, %rsi
callq *0x30(%r12)
incq %r14
cmpq 0x10(%rbx), %r14
jb 0xed856
jmp 0xed929
xorl %r12d, %r12d
jmp 0xed8c7
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %ebp, %ebp
jmp 0xed80b
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: bcore_source_buffer_s_setup_from_data
bcore_source_buffer_s* bcore_source_buffer_s_setup_from_data( bcore_source_buffer_s* o, vc_t data, uz_t size )
{
    o->data = bcore_b_alloc( o->data, size, &o->space );
    bcore_memcpy( o->data, data, size );
    o->size = size;
    o->index = 0;
    return o;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
movq 0x8(%rdi), %rdi
leaq 0x18(%r15), %rdx
movq %rbx, %rsi
callq 0xc832f
movq %rax, 0x8(%r15)
movq %rax, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0xc83f1
movq %rbx, 0x10(%r15)
movq $0x0, 0x20(%r15)
movq %r15, %rax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: bcore_source_string_s_init
void bcore_source_string_s_init( bcore_source_string_s* o )
{
    bcore_memzero( o, sizeof( *o ) );
    o->_ = TYPEOF_bcore_source_string_s;
    o->prefetch_size = 16384;
    o->refill_limit  = 4096;

    //o->refill_limit  = 8000;

}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movl $0x38, %esi
callq 0xc8366
movabsq $-0x7a841657f0cf5c40, %rax # imm = 0x857BE9A80F30A3C0
movq %rax, (%rbx)
movq $0x4000, 0x28(%rbx)     # imm = 0x4000
movq $0x1000, 0x20(%rbx)     # imm = 0x1000
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: bcore_source_string_s_create_fa
bcore_source_string_s* bcore_source_string_s_create_fa( sc_t format, ... )
{
    va_list args;
    va_start( args, format );
    bcore_source_string_s* ret = bcore_source_string_s_create_fv( format, args );
    va_end( args );
    return ret;
}

// Assembly:
pushq %rbx
subq $0xd0, %rsp
leaq 0x20(%rsp), %r10
movq %rsi, 0x8(%r10)
movq %rdx, 0x10(%r10)
movq %rcx, 0x18(%r10)
movq %r8, 0x20(%r10)
movq %r9, 0x28(%r10)
testb %al, %al
je 0xee8be
movaps %xmm0, 0x50(%rsp)
movaps %xmm1, 0x60(%rsp)
movaps %xmm2, 0x70(%rsp)
movaps %xmm3, 0x80(%rsp)
movaps %xmm4, 0x90(%rsp)
movaps %xmm5, 0xa0(%rsp)
movaps %xmm6, 0xb0(%rsp)
movaps %xmm7, 0xc0(%rsp)
movq %rsp, %rsi
movq %r10, 0x10(%rsi)
leaq 0xe0(%rsp), %rax
movq %rax, 0x8(%rsi)
movabsq $0x3000000008, %rax     # imm = 0x3000000008
movq %rax, (%rsi)
callq 0x114cd0
movq %rax, %rbx
callq 0xee638
movq %rbx, 0x8(%rax)
addq $0xd0, %rsp
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: bcore_source_string_s_setup_fa
bcore_source_string_s* bcore_source_string_s_setup_fa( bcore_source_string_s* o, sc_t format, ... )
{
    va_list args;
    va_start( args, format );
    bcore_source_string_s* ret = bcore_source_string_s_setup_fv( o, format, args );
    va_end( args );
    return ret;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0xd8, %rsp
movq %rsi, %r10
movq %rdi, %rbx
leaq 0x20(%rsp), %rdi
movq %rdx, 0x10(%rdi)
movq %rcx, 0x18(%rdi)
movq %r8, 0x20(%rdi)
movq %r9, 0x28(%rdi)
testb %al, %al
je 0xeead8
movaps %xmm0, 0x50(%rsp)
movaps %xmm1, 0x60(%rsp)
movaps %xmm2, 0x70(%rsp)
movaps %xmm3, 0x80(%rsp)
movaps %xmm4, 0x90(%rsp)
movaps %xmm5, 0xa0(%rsp)
movaps %xmm6, 0xb0(%rsp)
movaps %xmm7, 0xc0(%rsp)
movq %rsp, %rsi
movq %rdi, 0x10(%rsi)
leaq 0xf0(%rsp), %rax
movq %rax, 0x8(%rsi)
movabsq $0x3000000010, %rax     # imm = 0x3000000010
movq %rax, (%rsi)
movq %r10, %rdi
callq 0x114cd0
movq %rax, %r14
movq 0x8(%rbx), %rdi
callq 0x114f61
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%rbx)
movq $0x0, 0x18(%rbx)
movq %r14, 0x8(%rbx)
movq %rbx, %rax
addq $0xd8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: string_flow_src
static uz_t string_flow_src( bcore_source_string_s* o, vd_t data, uz_t size )
{
    if( !o->string ) o->string = st_s_create();
    if( size > o->string->size - o->index )
    {
        // first send rest of buffer
        uz_t size1 = o->string->size - o->index;
        bcore_memcpy( data, o->string->data + o->index, size1 );
        o->index += size1;
        data = (u0_t*)data + size1;
        size -= size1;

        // refill to remaining size (if possible)
        if( o->ext_supplier ) string_refill( o, size );

        // send rest of data (if any)
        uz_t size2 = size < o->string->size - o->index ? size : o->string->size - o->index;
        bcore_memcpy( data, o->string->data + o->index, size2 );
        o->index += size2;

        return size1 + size2;
    }
    else
    {
        bcore_memcpy( data, o->string->data + o->index, size );
        o->index += size;
        return size;
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
cmpq $0x0, 0x8(%rdi)
jne 0xeeb53
xorl %eax, %eax
callq 0x114bbb
movq %rax, 0x8(%rbx)
movq 0x8(%rbx), %rax
movq 0x10(%rbx), %rsi
movq 0x10(%rax), %r12
subq %rsi, %r12
addq 0x8(%rax), %rsi
movq %r15, %r13
subq %r12, %r13
jbe 0xeebc0
movq %r14, %rdi
movq %r12, %rdx
callq 0xc83f1
addq %r12, 0x10(%rbx)
addq %r12, %r14
cmpq $0x0, 0x18(%rbx)
je 0xeeb92
movq %rbx, %rdi
movq %r13, %rsi
callq 0xf2dce
movq 0x8(%rbx), %rax
movq 0x10(%rbx), %rsi
movq 0x10(%rax), %r15
subq %rsi, %r15
cmpq %r15, %r13
cmovbq %r13, %r15
addq 0x8(%rax), %rsi
movq %r14, %rdi
movq %r15, %rdx
callq 0xc83f1
addq %r15, 0x10(%rbx)
addq %r12, %r15
jmp 0xeebcf
movq %r14, %rdi
movq %r15, %rdx
callq 0xc83f1
addq %r15, 0x10(%rbx)
movq %r15, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: bcore_source_string_s_eos
bl_t bcore_source_string_s_eos( const bcore_source_string_s* o )
{
    if( !o->string )
    {
        if( o->ext_supplier ) return bcore_source_a_eos( o->ext_supplier );
        return true;
    }

    if( o->index < o->string->size ) return false;
    if( o->ext_supplier ) return bcore_source_a_eos( o->ext_supplier );

    return true;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq 0x8(%rdi), %rax
testq %rax, %rax
je 0xeebfb
movq 0x10(%rdi), %rcx
cmpq 0x10(%rax), %rcx
jae 0xeebfb
xorl %eax, %eax
jmp 0xeecc4
movq 0x18(%rdi), %rbx
testq %rbx, %rbx
je 0xeecc2
movq (%rbx), %r15
leaq 0xbb0b6(%rip), %rax     # 0x1a9cc8
movl (%rax), %ecx
movslq %ecx, %rcx
leaq (%rcx,%rcx,2), %rcx
movq 0x20(%rax,%rcx,8), %rdx
movq 0x18(%rax,%rcx,8), %rcx
andq %r15, %rcx
shlq $0x4, %rcx
leaq (%rdx,%rcx), %rax
movq (%rdx,%rcx), %rdx
movl $0x8, %ecx
cmpq %r15, %rdx
je 0xeec68
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r15, %rdx
je 0xeec68
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r15, %rdx
je 0xeec68
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r15, %rdx
jne 0xeecca
movq (%rax,%rcx), %r14
testq %r14, %r14
jne 0xeec98
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %r15, %rsi
callq 0xf3f85
movq %rax, %r14
leaq 0xbb03b(%rip), %rdi     # 0x1a9cc8
movq %r15, %rsi
movq %rax, %rdx
callq 0x12128c
leaq 0x40(%r14), %rax
cmpq $0x0, 0x40(%r14)
jne 0xeecb8
leaq 0x56267(%rip), %rsi     # 0x144f11
movq %r14, %rdi
movq %rax, %r14
callq 0xf592c
movq %r14, %rax
movq %rbx, %rdi
popq %rbx
popq %r14
popq %r15
jmpq *(%rax)
movb $0x1, %al
popq %rbx
popq %r14
popq %r15
retq
xorl %r14d, %r14d
jmp 0xeec6c
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: bcore_source_file_s_open
void bcore_source_file_s_open( bcore_source_file_s* o )
{
    if( !o->name ) ERR( "No file name specified." );
    if( o->handle ) bcore_source_file_s_close( o );
    o->handle = fopen( o->name->sc, "rb" );
    if( !o->handle )
    {
        st_s* msg = st_s_createf( "Error opening file %s:\n", o->name->sc );
        perror( msg->sc );
        st_s_discard( msg );
        bcore_abort();
    }
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
cmpq $0x0, 0x8(%rdi)
jne 0xef352
leaq 0x6387c(%rip), %rdi     # 0x152bb4
leaq 0x63781(%rip), %rsi     # 0x152ac0
leaq 0x632d5(%rip), %rcx     # 0x15261b
movl $0x445, %edx            # imm = 0x445
xorl %eax, %eax
callq 0xc80f6
cmpq $0x0, 0x10(%rbx)
je 0xef361
movq %rbx, %rdi
callq 0xef38e
movq 0x8(%rbx), %rax
movq 0x8(%rax), %rdi
leaq 0x6385d(%rip), %rsi     # 0x152bcd
callq 0xd170
movq %rax, 0x10(%rbx)
testq %rax, %rax
je 0xef380
popq %rbx
retq
addq $0x8, %rbx
movq %rbx, %rdi
callq 0xd88b
jmp 0xef37e
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: file_flow_src
static uz_t file_flow_src( bcore_source_file_s* o, vd_t data, uz_t size )
{
    if( !o->handle ) bcore_source_file_s_open( o );
    uz_t rsize = fread( data, 1, size, o->handle );
    if( rsize != size )
    {
        if( ferror( o->handle ) )
        {
            st_s* msg = st_s_createf( "Error reading file %s:\n", o->name->sc );
            perror( msg->sc );
            st_s_discard( msg );
        }
    }
    return rsize;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
cmpq $0x0, 0x10(%rdi)
jne 0xef3d7
movq %rbx, %rdi
callq 0xef326
movq 0x10(%rbx), %rcx
movl $0x1, %esi
movq %r15, %rdi
movq %r14, %rdx
callq 0xd310
movq %rax, %r15
cmpq %r14, %rax
je 0xef400
movq 0x10(%rbx), %rdi
callq 0xd240
testl %eax, %eax
jne 0xef409
movq %r15, %rax
popq %rbx
popq %r14
popq %r15
retq
movq %rbx, %rdi
callq 0xd8f0
jmp 0xef400
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: bcore_source_stdin_s_get_data
uz_t bcore_source_stdin_s_get_data( bcore_source_stdin_s* o, vd_t data, uz_t size )
{
    for( uz_t i = 0; i < size; i++ )
    {
        if( o->buf_index < o->buf.size )
        {
            ( ( u0_t* )data )[ i ] = o->buf.data[ o->buf_index++ ];
        }
        else
        {
            s2_t c = fgetc( stdin );
            if( feof( stdin ) ) return i;
            ( ( u0_t* )data )[ i ] = c;
            bcore_source_stdin_s_push_char( o, c );
            o->buf_index = o->buf.size;
        }
    }

    return size;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %rbx
movq %rsi, (%rsp)
testq %rdx, %rdx
je 0xefb57
movq %rdi, %r15
xorl %r13d, %r13d
movq 0x10(%r15), %rax
cmpq 0x30(%r15), %rax
jae 0xefb04
movq 0x28(%r15), %rcx
leaq 0x1(%rax), %rdx
movq %rdx, 0x10(%r15)
movb (%rcx,%rax), %al
movq (%rsp), %rcx
movb %al, (%rcx,%r13)
jmp 0xefb4f
movq 0xab4cd(%rip), %rbp     # 0x19afd8
movq (%rbp), %rdi
callq 0xd290
movl %eax, %r12d
movq (%rbp), %rdi
callq 0xd370
movl %eax, %ebp
movq %r13, %rax
testl %ebp, %ebp
jne 0xefb48
movq (%rsp), %rax
movb %r12b, (%rax,%r13)
movsbl %r12b, %esi
movq %r15, %rdi
callq 0xefb69
movq 0x30(%r15), %rax
movq %rax, 0x10(%r15)
movq %r14, %rax
movq %rax, %r14
testl %ebp, %ebp
jne 0xefb5a
incq %r13
cmpq %r13, %rbx
jne 0xefae1
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_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: bcore_source_stdin_s_push_char
static void bcore_source_stdin_s_push_char( bcore_source_stdin_s* o, char c )
{
    st_s_push_char( &o->buf, c );

    if( o->buf.size >= o->buf_limit )
    {
        sz_t block_size = o->buf_limit >> 1;
        if( o->buf_index >= o->buf.size - block_size )
        {
            for( sz_t i = 0; i < block_size; i++ ) o->buf.data[ i ] = o->buf.data[ o->buf.size - block_size + i ];
            for( sz_t i = block_size; i < o->buf.size; i++ ) o->buf.data[ i ] = 0;
            o->base_index += o->buf.size - block_size;
            o->buf_index  -= o->buf.size - block_size;
            o->buf.size = block_size;
        }
    }
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
addq $0x20, %rdi
callq 0x115381
movq 0x18(%rbx), %rax
movq 0x30(%rbx), %rcx
cmpq %rax, %rcx
jb 0xefbf2
sarq %rax
subq %rax, %rcx
cmpq %rcx, 0x10(%rbx)
jb 0xefbf2
testq %rax, %rax
jle 0xefbbd
movq %rax, %rcx
negq %rcx
xorl %edx, %edx
movq 0x28(%rbx), %rsi
movq 0x30(%rbx), %rdi
addq %rsi, %rdi
addq %rcx, %rdi
movb (%rdx,%rdi), %dil
movb %dil, (%rsi,%rdx)
incq %rdx
movq %rcx, %rsi
addq %rdx, %rsi
jne 0xefb9c
movq 0x30(%rbx), %rcx
cmpq %rcx, %rax
jae 0xefbdd
movq %rax, %rdx
movq 0x28(%rbx), %rcx
movb $0x0, (%rcx,%rdx)
incq %rdx
movq 0x30(%rbx), %rcx
cmpq %rcx, %rdx
jb 0xefbc9
movq %rax, %rdx
subq %rcx, %rdx
subq %rax, %rcx
addq %rcx, 0x8(%rbx)
addq %rdx, 0x10(%rbx)
movq %rax, 0x30(%rbx)
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: bcore_source_stdin_s_push_until_newline_or_eos
void bcore_source_stdin_s_push_until_newline_or_eos( bcore_source_stdin_s* o )
{
    for(;;)
    {
        s2_t c = fgetc( stdin );
        if( feof( stdin ) ) break;
        bcore_source_stdin_s_push_char( o, c );
        if( c == '\n' ) break;
    }
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
movq 0xab3d6(%rip), %r14     # 0x19afd8
movq (%r14), %rdi
callq 0xd290
movl %eax, %ebp
movq (%r14), %rdi
callq 0xd370
testl %eax, %eax
jne 0xefc29
movsbl %bpl, %esi
movq %rbx, %rdi
callq 0xefb69
cmpl $0xa, %ebp
jne 0xefc02
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: bcore_source_stdin_s_consume_whitechars_excluding_newline
void bcore_source_stdin_s_consume_whitechars_excluding_newline( bcore_source_stdin_s* o )
{
    for(;;)
    {
        if( o->buf_index < o->buf.size )
        {
            char c = o->buf.data[ o->buf_index ];
            if( c == ' ' || c == '\t' || c == '\r' )
            {
                o->buf_index++;
            }
            else
            {
                break;
            }
        }
        else
        {
            if( feof( stdin ) ) break;
            bcore_source_stdin_s_push_until_newline_or_eos( o );
        }
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
movabsq $0x100002200, %r14      # imm = 0x100002200
movq 0xab391(%rip), %r15     # 0x19afd8
movq 0x10(%rbx), %rax
cmpq 0x30(%rbx), %rax
jae 0xefc6e
movq 0x28(%rbx), %rcx
movzbl (%rcx,%rax), %ecx
cmpq $0x20, %rcx
ja 0xefc84
btq %rcx, %r14
jae 0xefc84
incq %rax
movq %rax, 0x10(%rbx)
jmp 0xefc47
movq (%r15), %rdi
callq 0xd370
testl %eax, %eax
jne 0xefc84
movq %rbx, %rdi
callq 0xefbf4
jmp 0xefc47
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: bcore_source_stdin_s_parse_em_fv
er_t bcore_source_stdin_s_parse_em_fv( bcore_source_stdin_s* o, sc_t format, va_list args )
{
    if( !format ) return 0;
    if( format[ 0 ] == 0 ) return 0;
    if( format[ 0 ] == ' ' ) bcore_source_stdin_s_consume_whitechars_excluding_newline( o );
    if( o->buf_index == o->buf.size ) bcore_source_stdin_s_push_until_newline_or_eos( o );

    struct { er_t er; st_s* msg; } er_arg;
    er_arg.er = 0;
    er_arg.msg = NULL;
    sz_t index = st_s_parse_efv( &o->buf, o->buf_index, o->buf.size, stdin_s_parse_em_err, &er_arg, format, args );

    if( er_arg.er )
    {
        BLM_INIT();
        st_s* msg_main    = BLM_CREATE( st_s );
        st_s* msg_context = BLM_CREATE( st_s );
        if( er_arg.msg ) BLM_A_PUSH( er_arg.msg );

        msg_context = BLM_A_PUSH( st_s_show_line_context( &o->buf, o->buf_index ) );

        st_s_push_fa( msg_main, "error: #<sc_t>\n", er_arg.msg ? er_arg.msg->sc : "" );
        st_s_push_fa( msg_main, "#<sc_t>\n", msg_context->sc );

        bcore_error_push_sc( er_arg.er, msg_main->sc );
        BLM_DOWN();
    }
    o->buf_index = index;
    return er_arg.er;
}

// Assembly:
testq %rsi, %rsi
je 0xefda5
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rsi, %r14
movzbl (%rsi), %eax
testl %eax, %eax
je 0xefdf7
movq %rdx, %r12
movq %rdi, %rbx
cmpl $0x20, %eax
jne 0xefcc2
movq %rbx, %rdi
callq 0xefc2e
movq 0x10(%rbx), %rax
leaq 0x20(%rbx), %r15
cmpq 0x30(%rbx), %rax
jne 0xefcd8
movq %rbx, %rdi
callq 0xefbf4
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %r13
movaps %xmm0, (%r13)
movq 0x10(%rbx), %rsi
movq 0x30(%rbx), %rdx
movq %r12, (%rsp)
leaq 0x10e(%rip), %rcx       # 0xefe06
movq %r15, %rdi
movq %r13, %r8
movq %r14, %r9
callq 0x1168ee
movq %rax, %r14
cmpq $0x0, (%r13)
je 0xefdee
leaq 0xb90b5(%rip), %rax     # 0x1a8dd0
movq (%rax), %rsi
leaq 0x28(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0xe0431
movq 0x8(%rsp), %r13
xorl %eax, %eax
callq 0x114bbb
movabsq $-0x503db0e6e1c2e704, %rbp # imm = 0xAFC24F191E3D18FC
movq %r13, %rdi
movq %rbp, %rsi
movq %rax, %rdx
callq 0xe0582
movq %rax, %r12
xorl %eax, %eax
callq 0x114bbb
movq %r13, %rdi
movq %rbp, %rsi
movq %rax, %rdx
callq 0xe0582
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0xefd7b
movq %r13, %rdi
callq 0xe081c
movq 0x10(%rbx), %rsi
movq %r15, %rdi
callq 0x1166ad
movq %r13, %rdi
movq %rax, %rsi
callq 0xe081c
movq %rax, %r15
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0xefda8
movq 0x8(%rax), %rdx
jmp 0xefdaf
xorl %eax, %eax
retq
leaq 0x63940(%rip), %rdx     # 0x1536ef
leaq 0x62e81(%rip), %rsi     # 0x152c37
movq %r12, %rdi
xorl %eax, %eax
callq 0x1157cb
movq 0x8(%r15), %rdx
leaq 0x6923d(%rip), %rsi     # 0x159008
movq %r12, %rdi
xorl %eax, %eax
callq 0x1157cb
movq 0x10(%rsp), %rdi
movq 0x8(%r12), %rsi
callq 0xc86db
leaq 0x8(%rsp), %rdi
callq 0xe0b11
movq %r14, 0x10(%rbx)
movq 0x10(%rsp), %rax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: stdin_s_parse_em_err
static uz_t stdin_s_parse_em_err( vd_t arg, const st_s* string, uz_t idx, st_s* ext_msg )
{
    struct { er_t er; st_s* msg; }* er_arg = arg;
    er_arg->er = TYPEOF_parse_error;
    st_s_attach( &er_arg->msg, st_s_clone( ext_msg ) );
    return idx;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdx, %rbx
movq %rdi, %r14
movabsq $0x690af8765815ec4d, %rax # imm = 0x690AF8765815EC4D
movq %rax, (%rdi)
movq %rcx, %rdi
callq 0x115213
movq %rax, %r15
movq 0x8(%r14), %rdi
callq 0x114f61
movq %r15, 0x8(%r14)
movq %rbx, %rax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: bcore_source_stdin_s_parse_fv
void bcore_source_stdin_s_parse_fv( bcore_source_stdin_s* o, sc_t format, va_list args )
{
    er_t er = bcore_source_stdin_s_parse_em_fv( o, format, args );
    if( er )
    {
        bcore_error_pop_to_stderr();
        bcore_down_exit( -1, er );
    }
}

// Assembly:
pushq %rbx
callq 0xefc8a
testq %rax, %rax
je 0xefe5f
movq %rax, %rbx
callq 0xc8b71
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
movl %ebx, %esi
popq %rbx
jmp 0x59980
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: bcore_source_point_s_parse_err_fv
void bcore_source_point_s_parse_err_fv( const bcore_source_point_s* o, sc_t format, va_list args )
{
    if( o->source )
    {
        bcore_source_a_set_index( o->source, o->index );
        bcore_source_a_parse_err_fv( o->source, format, args );
    }
    else
    {
        bcore_err_fv( format, args );
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq 0x8(%rdi), %r12
testq %r12, %r12
je 0xf0674
movq %rdi, %r15
movq %rdx, 0x10(%rsp)
movq 0x10(%rdi), %r13
movq (%r12), %rbp
leaq 0xb97a1(%rip), %r14     # 0x1a9cc8
movl (%r14), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r14,%rax,8), %rcx
movq 0x18(%r14,%rax,8), %rdx
andq %rbp, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %rbp, %rdx
movq %rsi, 0x8(%rsp)
je 0xf0586
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %rbp, %rdx
je 0xf0586
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %rbp, %rdx
je 0xf0586
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %rbp, %rdx
jne 0xf068d
movq (%rax,%rcx), %rbx
testq %rbx, %rbx
jne 0xf05b6
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %rbp, %rsi
callq 0xf3f85
movq %rax, %rbx
leaq 0xb971d(%rip), %rdi     # 0x1a9cc8
movq %rbp, %rsi
movq %rax, %rdx
callq 0x12128c
movq %rbx, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x10aa6e
movq 0x8(%r15), %r15
movq (%r15), %r12
movl (%r14), %eax
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r14,%rax,8), %rcx
movq 0x18(%r14,%rax,8), %rdx
andq %r12, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r12, %rdx
je 0xf0621
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r12, %rdx
je 0xf0621
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r12, %rdx
je 0xf0621
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r12, %rdx
jne 0xf0694
movq (%rax,%rcx), %rbx
testq %rbx, %rbx
jne 0xf0651
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %r12, %rsi
callq 0xf3f85
movq %rax, %rbx
leaq 0xb9682(%rip), %rdi     # 0x1a9cc8
movq %r12, %rsi
movq %rax, %rdx
callq 0x12128c
movq %rbx, %rdi
movq %r15, %rsi
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rcx
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x10a705
movq %rsi, %rdi
movq %rdx, %rsi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xc81ad
xorl %ebx, %ebx
jmp 0xf058a
xorl %ebx, %ebx
jmp 0xf0625
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: bcore_source_point_s_clone_source
bcore_source* bcore_source_point_s_clone_source( const bcore_source_point_s* o )
{
    if( !o->source ) return NULL;
    bcore_source* source = bcore_source_a_clone( o->source );
    bcore_source_a_set_index( source, o->index );
    return source;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq 0x8(%rdi), %r14
testq %r14, %r14
je 0xf133d
movq %rdi, %rbx
movq (%r14), %rsi
movabsq $-0x7c93477f7a59b9fa, %rdi # imm = 0x836CB88085A64606
callq 0x1222bd
movq (%r14), %r15
leaq 0xb826a(%rip), %rax     # 0x1a9468
movl (%rax), %ecx
movslq %ecx, %rcx
leaq (%rcx,%rcx,2), %rcx
movq 0x20(%rax,%rcx,8), %rdx
movq 0x18(%rax,%rcx,8), %rcx
andq %r15, %rcx
shlq $0x4, %rcx
leaq (%rdx,%rcx), %rax
movq (%rdx,%rcx), %rdx
movl $0x8, %ecx
cmpq %r15, %rdx
je 0xf1258
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r15, %rdx
je 0xf1258
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r15, %rdx
je 0xf1258
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r15, %rdx
jne 0xf134f
movq (%rax,%rcx), %r12
testq %r12, %r12
jne 0xf1288
movabsq $0x782b96602f424981, %rdi # imm = 0x782B96602F424981
movq %r15, %rsi
callq 0xf3f85
movq %rax, %r12
leaq 0xb81eb(%rip), %rdi     # 0x1a9468
movq %r15, %rsi
movq %rax, %rdx
callq 0x12128c
movq %r12, %rdi
movq %r14, %rsi
callq *0xc0(%r12)
movq %rax, %r14
movq 0x10(%rbx), %rbx
movq (%rax), %r15
leaq 0xb8a21(%rip), %rax     # 0x1a9cc8
movl (%rax), %ecx
movslq %ecx, %rcx
leaq (%rcx,%rcx,2), %rcx
movq 0x20(%rax,%rcx,8), %rdx
movq 0x18(%rax,%rcx,8), %rcx
andq %r15, %rcx
shlq $0x4, %rcx
leaq (%rdx,%rcx), %rax
movq (%rdx,%rcx), %rdx
movl $0x8, %ecx
cmpq %r15, %rdx
je 0xf12fd
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r15, %rdx
je 0xf12fd
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r15, %rdx
je 0xf12fd
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r15, %rdx
jne 0xf1357
movq (%rax,%rcx), %r12
testq %r12, %r12
jne 0xf132d
movabsq $-0x7e8ee9b9b4bbaa8, %rdi # imm = 0xF817116464B44558
movq %r15, %rsi
callq 0xf3f85
movq %rax, %r12
leaq 0xb89a6(%rip), %rdi     # 0x1a9cc8
movq %r15, %rsi
movq %rax, %rdx
callq 0x12128c
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x10aa6e
jmp 0xf1340
xorl %r14d, %r14d
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
xorl %r12d, %r12d
jmp 0xf125c
xorl %r12d, %r12d
jmp 0xf1301
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sources.c
// Function: bcore_source_open_file
bcore_source_chain_s* bcore_source_open_file( sc_t file_name )
{
    bcore_source_chain_s* chain = bcore_source_chain_s_create();
    bcore_source_chain_s_push_d( chain, bcore_source_file_s_create_name( file_name ) );
    bcore_source_chain_s_push_d( chain, bcore_inst_t_create( TYPEOF_bcore_source_string_s ) );
    bcore_source_string_s* string = chain->data[ chain->size - 1 ];
    string->parent = chain;
    return chain;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %r15
movabsq $-0x7a841657f0cf5c40, %r14 # imm = 0x857BE9A80F30A3C0
callq 0xecdcf
movq %rax, %rbx
callq 0xef183
movq %rax, %r12
movq %r15, %rdi
callq 0x114e47
movq %rax, 0x8(%r12)
movq %rbx, %rdi
movq %r12, %rsi
callq 0xecf43
leaq 0xb7d0d(%rip), %rax     # 0x1a9468
movl (%rax), %ecx
movslq %ecx, %rcx
leaq (%rcx,%rcx,2), %rcx
movq 0x20(%rax,%rcx,8), %rdx
movq 0x18(%rax,%rcx,8), %rcx
andq %r14, %rcx
shlq $0x4, %rcx
leaq (%rdx,%rcx), %rax
movq (%rdx,%rcx), %rdx
movl $0x8, %ecx
cmpq %r14, %rdx
je 0xf17b1
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r14, %rdx
je 0xf17b1
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r14, %rdx
je 0xf17b1
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r14, %rdx
jne 0xf1816
movq (%rax,%rcx), %r15
testq %r15, %r15
jne 0xf17e1
movabsq $0x782b96602f424981, %rdi # imm = 0x782B96602F424981
movq %r14, %rsi
callq 0xf3f85
movq %rax, %r15
leaq 0xb7c92(%rip), %rdi     # 0x1a9468
movq %r14, %rsi
movq %rax, %rdx
callq 0x12128c
movq %r15, %rdi
callq *0xa8(%r15)
movq %rbx, %rdi
movq %rax, %rsi
callq 0xecf43
movq 0x8(%rbx), %rax
movq 0x10(%rbx), %rcx
movq -0x8(%rax,%rcx,8), %rax
movq %rbx, 0x30(%rax)
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
xorl %r15d, %r15d
jmp 0xf17b5