LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O2/sheneman[P]clearcut/getopt_long.c
// Function: has_argument_short
static int
has_argument_short(char *arg, const char *shortopts)
{
    int i;
    int open_bracket = 0;
    for (i = 0; shortopts[i]; i++) {
        switch (shortopts[i]) {
        case '[':
            open_bracket++;
            continue;
        case ']':
            if (open_bracket <= 0) {
                fprintf(stderr, "getopt_long() -- unbalanced bracket in short options");
                return -1;
            }
            open_bracket--;
            continue;
        }
        if (open_bracket) continue;
        if (*arg != shortopts[i]) continue;

        switch (shortopts[i+1]) {
        case ':':
            if (shortopts[i+2] != ':') {
                if (arg[1])
                    return 1; /* following string is argument */
                else
                    return 2; /* next argv is argument */
            }
            else {
                /* '::' means optional argument (GNU extention) */
                if (arg[1])
                    return 1;
                else
                    return 0; /* no argument */
            }
        case '[':
            if (arg[1] == '\0')
                return 0;   /* no argument */
            /* my extention */
            for (i++; shortopts[i] && shortopts[i] != ']'; i++) {
                if (arg[1] == shortopts[i])
                    return 3; /* has 1 byte argument */
            }
            if (!shortopts[i]) {
                fprintf(stderr, "getopt_long() -- unbalanced bracket in short options");
                return -1;
            }
            break;
        default:
            return 0;   /* no argument */
        }
    }
    /* Invalid option */
    return -1;
}

// Assembly:
pushq %rbx
leaq 0x1(%rsi), %rcx
xorl %eax, %eax
pushq $-0x1
popq %rbx
pushq $0x3
popq %rdx
xorl %r8d, %r8d
movslq %eax, %r9
movzbl (%rsi,%r9), %r10d
cmpl $0x5b, %r10d
je 0x6d06
cmpl $0x5d, %r10d
je 0x6cfc
testl %r10d, %r10d
je 0x6d4c
testl %r8d, %r8d
jne 0x6d09
xorl %r8d, %r8d
cmpb %r10b, (%rdi)
jne 0x6d09
movzbl 0x1(%rsi,%r9), %r8d
xorl %eax, %eax
cmpl $0x5b, %r8d
jne 0x6d16
movb 0x1(%rdi), %r8b
testb %r8b, %r8b
je 0x6d4e
incq %r9
movq %r9, %r10
addq %rcx, %r10
movb $0x5b, %r11b
movl %r9d, %eax
cmpb $0x5d, %r11b
je 0x6d0d
movzbl %r11b, %r9d
testl %r9d, %r9d
je 0x6d30
cmpb %r11b, %r8b
je 0x6d12
movb (%r10), %r11b
incl %eax
incq %r10
jmp 0x6cde
testl %r8d, %r8d
jle 0x6d30
decl %r8d
jmp 0x6d09
incl %r8d
incl %eax
jmp 0x6c8e
xorl %r8d, %r8d
jmp 0x6d09
movl %edx, %eax
jmp 0x6d4e
cmpl $0x3a, %r8d
jne 0x6d4e
cmpb $0x3a, 0x2(%rsi,%r9)
movb 0x1(%rdi), %cl
jne 0x6d50
xorl %eax, %eax
testb %cl, %cl
setne %al
jmp 0x6d4e
movq 0x52c1(%rip), %rax      # 0xbff8
movq (%rax), %rcx
leaq 0x1c5c(%rip), %rdi      # 0x899d
pushq $0x34
popq %rsi
pushq $0x1
popq %rdx
callq 0x2230
movl %ebx, %eax
popq %rbx
retq
xorl %eax, %eax
cmpb $0x1, %cl
adcl $0x1, %eax
jmp 0x6d4e
// File: /workspace/github_c_makefile_star2_O2/sheneman[P]clearcut/getopt_long.c
// Function: search_longopt
static int
search_longopt(char *arg, struct option *longopts)
{
    int i, found = -1;
    int len;
    for (len = 0; arg[len] && arg[len] != '='; len++)
        ;

    for (i = 0; longopts[i].name; i++) {
        if (strncmp(arg, longopts[i].name, len) == 0) {
            if (found != -1)
                return -1;      /* found some candidate */
            found = i;
        }
    }
    return found;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
xorl %r15d, %r15d
movzbl (%r14,%r15), %eax
cmpl $0x3d, %eax
je 0x6d81
testl %eax, %eax
je 0x6d81
incq %r15
jmp 0x6d6e
pushq $-0x1
popq %r12
xorl %r13d, %r13d
movl %r12d, %ebp
movq (%rbx), %rsi
testq %rsi, %rsi
je 0x6db6
movq %r14, %rdi
movq %r15, %rdx
callq 0x2080
testl %eax, %eax
jne 0x6daa
cmpl $-0x1, %ebp
movl %r13d, %ebp
jne 0x6db3
incl %r13d
addq $0x20, %rbx
jmp 0x6d8b
movl %r12d, %ebp
movl %ebp, %eax
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/xoico/src/xoico.xo.c
// Function: xoico_parse_fa
er_t xoico_parse_fa( xoico* o, const xoico_host* host, sc_t format, ... )
{
    // xoico.x:125:1
    BLM_INIT_LEVEL(0);
    va_list args;
    va_start( args, format );
    er_t ret = xoico_a_parse(o,host, ((x_source*)BLM_LEVEL_A_PUSH(0,x_source_create_from_fv(format, args ))) );
    va_end( args );
    BLM_RETURNV(er_t, ret)
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x100, %rsp            # imm = 0x100
movq %rdx, %r12
movq %rsi, %rbx
movq %rdi, %r14
testb %al, %al
je 0xd93a
movaps %xmm0, 0x80(%rsp)
movaps %xmm1, 0x90(%rsp)
movaps %xmm2, 0xa0(%rsp)
movaps %xmm3, 0xb0(%rsp)
movaps %xmm4, 0xc0(%rsp)
movaps %xmm5, 0xd0(%rsp)
movaps %xmm6, 0xe0(%rsp)
movaps %xmm7, 0xf0(%rsp)
leaq 0x50(%rsp), %r13
movq %rcx, 0x18(%r13)
movq %r8, 0x20(%r13)
movq %r9, 0x28(%r13)
leaq 0x10a47e(%rip), %rax    # 0x117dd0
movq (%rax), %rsi
leaq 0x20(%rsp), %r15
movq %r15, %rdi
callq 0x717f5
andq $0x0, 0x10(%r15)
movq %rsp, %rsi
movq %r13, 0x10(%rsi)
leaq 0x130(%rsp), %rax
movq %rax, 0x8(%rsi)
movabsq $0x3000000018, %rax     # imm = 0x3000000018
movq %rax, (%rsi)
movq %r12, %rdi
callq 0x76cc9
movq %r15, %rdi
xorl %esi, %esi
movq %rax, %rdx
callq 0x71a90
movq %r14, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0xd8b6
movq %rax, %rbx
movq %r15, %rdi
callq 0x71b64
movq %rbx, %rax
addq $0x100, %rsp            # imm = 0x100
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_compiler_s_nameof
sc_t xoico_compiler_s_nameof( const xoico_compiler_s* o, tp_t type )
{
    // xoico_compiler.x:295:5
    
    sc_t name = bcore_hmap_name_s_get_sc(&(o->name_map),type );
    if( !name ) name = ifnameof( type );
    return  name;
}

// Assembly:
pushq %rbx
movq %rsi, %rbx
addq $0x140, %rdi            # imm = 0x140
callq 0x6f4bc
testq %rax, %rax
je 0xdaef
popq %rbx
retq
movq %rbx, %rdi
popq %rbx
jmp 0x1c2fb
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_name_s_get_hash
tp_t xoico_name_s_get_hash( const xoico_name_s* o )
{
    // xoico_name.x:32:5
    
    tp_t hash = bcore_tp_fold_tp( bcore_tp_init(), o->_ );
    hash = bcore_tp_fold_tp( hash, o->name );
    return  hash;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq (%rdi), %rsi
movabsq $-0x340d631b7bdddcdb, %rdi # imm = 0xCBF29CE484222325
callq 0xe705
movq 0x8(%rbx), %rsi
movq %rax, %rdi
popq %rbx
jmp 0xe705
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_typespec_s_convert_transient_types
er_t xoico_typespec_s_convert_transient_types( xoico_typespec_s* o, const xoico_host* host, const xoico_transient_map_s* map )
{
    // xoico_typespec.x:78:5
    
    if( o->transient )
    {
        tp_t type = xoico_transient_map_s_get(map,o->transient->class );
        if( type ) o->type = type;
    }
    return  0;
}

// Assembly:
movq 0x18(%rdi), %rax
testq %rax, %rax
je 0xe105
pushq %rbx
movq %rdi, %rbx
movq 0x8(%rax), %rsi
movq %rdx, %rdi
callq 0xe108
testq %rax, %rax
je 0xe104
movq %rax, 0x8(%rbx)
popq %rbx
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_typespec_s_get_hash
tp_t xoico_typespec_s_get_hash( const xoico_typespec_s* o )
{
    // xoico_typespec.x:200:1
    
    tp_t hash = bcore_tp_fold_tp( bcore_tp_init(), o->_ );
    hash = bcore_tp_fold_tp( hash, o->type );
    hash = bcore_tp_fold_tp( hash, o->access_class );
    hash = bcore_tp_fold_tp( hash, o->transient ? xoico_typespec_transient_s_get_hash(o->transient) : 0 );
    hash = bcore_tp_fold_bl( hash, o->flag_static );
    hash = bcore_tp_fold_bl( hash, o->flag_volatile );
    hash = bcore_tp_fold_bl( hash, o->flag_restrict );
    hash = bcore_tp_fold_bl( hash, o->flag_scope );
    hash = bcore_tp_fold_u3( hash, o->indirection );
    return  hash;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdi, %rbx
movq (%rdi), %r13
movq 0x8(%rdi), %r12
movq 0x10(%rdi), %r14
movq 0x18(%rdi), %rdi
testq %rdi, %rdi
je 0xe68a
callq 0xe02e
movq %rax, %r15
jmp 0xe68d
xorl %r15d, %r15d
movabsq $-0x340d631b7bdddcdb, %rdi # imm = 0xCBF29CE484222325
movq %r13, %rsi
callq 0xe705
movq %rax, %rdi
movq %r12, %rsi
callq 0xe705
movq %rax, %rdi
movq %r14, %rsi
callq 0xe705
movq %rax, %rdi
movq %r15, %rsi
callq 0xe705
movzbl 0x28(%rbx), %ecx
xorq %rax, %rcx
movabsq $0x100000001b3, %rax    # imm = 0x100000001B3
imulq %rax, %rcx
movzbl 0x29(%rbx), %edx
xorq %rcx, %rdx
imulq %rax, %rdx
movzbl 0x2a(%rbx), %ecx
xorq %rdx, %rcx
imulq %rax, %rcx
movzbl 0x2d(%rbx), %edi
xorq %rcx, %rdi
imulq %rax, %rdi
movq 0x20(%rbx), %rsi
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0xe705
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_typespec_s_is_ptr_type
bl_t xoico_typespec_s_is_ptr_type( const xoico_typespec_s* o )
{
    // xoico_typespec.x:423:1
    
    return  o->type == TYPEOF_vd_t ||
           o->type == TYPEOF_vc_t ||
           o->type == TYPEOF_sc_t ||
           o->type == TYPEOF_sd_t;
}

// Assembly:
movq 0x8(%rdi), %rcx
movb $0x1, %al
movabsq $-0x84b14e74a9e1ff0, %rdx # imm = 0xF7B4EB18B561E010
cmpq %rdx, %rcx
je 0xeda4
movabsq $0x230abe18cdeefc99, %rdx # imm = 0x230ABE18CDEEFC99
cmpq %rdx, %rcx
je 0xeda4
movabsq $0x54de8100f7c1cbe5, %rdx # imm = 0x54DE8100F7C1CBE5
cmpq %rdx, %rcx
je 0xeda4
movabsq $0x6f0b060106a30da4, %rdx # imm = 0x6F0B060106A30DA4
cmpq %rdx, %rcx
je 0xeda4
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_transient_map_s_create_key_arr
BCORE_DEFINE_OBJECT_INST_P_NASC_END( xoico_transient_map_s )

bcore_arr_tp_s* xoico_transient_map_s_create_key_arr( const xoico_transient_map_s* o )
{
    // xoico_transient_map.x:33:5
    
    bcore_arr_tp_s* arr_tp = bcore_arr_tp_s_create();
    sz_t size = bcore_hmap_tptp_s_size(&(o->map));
    for(sz_t i = 0; i < size; i++ ) if( bcore_hmap_tptp_s_idx_key(&(o->map),i ) ) bcore_arr_tp_s_push(arr_tp,bcore_hmap_tptp_s_idx_key(&(o->map),i ) );
    return  arr_tp;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
xorl %r14d, %r14d
xorl %eax, %eax
callq 0x5b931
movq %rax, %r15
addq $0x8, %rbx
movq %rbx, %rdi
callq 0x68b3c
movq %rax, %r12
testq %rax, %rax
cmovleq %r14, %r12
cmpq %r14, %r12
je 0xee7d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x68b41
testq %rax, %rax
je 0xee78
movq %rbx, %rdi
movq %r14, %rsi
callq 0x68b41
movq %r15, %rdi
movq %rax, %rsi
callq 0x5baa8
incq %r14
jmp 0xee4d
movq %r15, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_transient_map_s_update
xoico_transient_map_s* xoico_transient_map_s_update( xoico_transient_map_s* o, const xoico_transient_map_s* src )
{
    // xoico_transient_map.x:44:1
    
    for(sz_t i = 0; i < bcore_hmap_tptp_s_size(&(src->map)); i++ )
    {
        tp_t key = bcore_hmap_tptp_s_idx_key(&(src->map),i );
        if( key ) bcore_hmap_tptp_s_set(&(o->map),key, bcore_hmap_tptp_s_idx_val(&(src->map),i ) );
    }
    return o;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
addq $0x8, %r14
leaq 0x8(%rdi), %r15
xorl %r12d, %r12d
movq %r14, %rdi
callq 0x68b3c
cmpq %rax, %r12
jae 0xeee4
movq %r14, %rdi
movq %r12, %rsi
callq 0x68b41
testq %rax, %rax
je 0xeedf
movq %rax, %r13
movq %r14, %rdi
movq %r12, %rsi
callq 0x68b4e
movq %r15, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x68977
incq %r12
jmp 0xeea6
movq %rbx, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_transient_map_s_parse_update
er_t xoico_transient_map_s_parse_update( xoico_transient_map_s* o, const xoico_host* host, x_source* source )
{
    // xoico_transient_map.x:56:1
    BLM_INIT_LEVEL(0);
    xoico_compiler_s* compiler = xoico_host_a_compiler(host);
    BLM_TRY(x_source_parse_fa(source,"( " ))
    st_s* s = ((st_s*)BLM_LEVEL_T_PUSH(0,st_s,st_s_create()));
    
    while( !x_source_eos(source) )
    {
        BLM_TRY(x_source_parse_fa(source,"#name ", s ))
        if( s->size == 0 ) BLM_RETURNV(er_t, x_source_parse_error_fa(source,"Transient class name expected." ))
        tp_t key = xoico_compiler_s_entypeof(compiler,s->sc );
        tp_t type = 0;
        BLM_TRY(xoico_host_a_parse_name_tp(host,source, (&(type)) ))
        if( !type ) BLM_RETURNV(er_t, x_source_parse_error_fa(source,"Type name expected." ))
        bcore_hmap_tptp_s_set(&(o->map),key, type );
        if( x_source_parse_bl(source," #?')' " ) ) break;
        BLM_TRY(x_source_parse_fa(source," , " ))
    }
    
    BLM_RETURNV(er_t, 0)
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r13
leaq 0x108ec1(%rip), %rax    # 0x117dd0
movq (%rax), %rsi
leaq 0x18(%rsp), %r15
movq %r15, %rdi
callq 0x717f5
andq $0x0, 0x10(%r15)
movq %r14, %rdi
callq 0xdab3
movq %rax, %r12
leaq 0x9f78a(%rip), %rsi     # 0xae6c0
movq %rbx, %rdi
xorl %eax, %eax
callq 0xd600
testq %rax, %rax
je 0xef64
movq %rax, %rbp
leaq 0x18(%rsp), %rdi
callq 0x71b64
movq %rbp, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %eax, %eax
callq 0x8eb65
leaq 0x18(%rsp), %rdi
movabsq $-0x503db0e6e1c2e704, %rdx # imm = 0xAFC24F191E3D18FC
xorl %esi, %esi
movq %rax, %rcx
callq 0x71967
movq %r13, %rcx
movq %rax, %r13
addq $0x140, %r12            # imm = 0x140
addq $0x8, %rcx
movq %rcx, 0x10(%rsp)
movq %rbx, %rdi
callq 0xe626
testb %al, %al
jne 0xf045
movq %rbx, %rdi
leaq 0x9c8f7(%rip), %rsi     # 0xab8ab
movq %r13, %rdx
xorl %eax, %eax
callq 0xd600
testq %rax, %rax
jne 0xef45
cmpq $0x0, 0x10(%r13)
je 0xf056
movq 0x8(%r13), %rsi
movq %r12, %rdi
callq 0x6f48c
movq %rax, %r15
andq $0x0, 0x8(%rsp)
movq %r14, %rdi
movq %rbx, %rsi
leaq 0x8(%rsp), %rdx
callq 0xdcb4
testq %rax, %rax
jne 0xef45
movq 0x8(%rsp), %rdx
testq %rdx, %rdx
je 0xf05f
movq 0x10(%rsp), %rdi
movq %r15, %rsi
callq 0x68977
movq %rbx, %rdi
leaq 0x9b338(%rip), %rsi     # 0xaa355
callq 0xe5ff
testb %al, %al
jne 0xf045
movq %rbx, %rdi
leaq 0x9b32d(%rip), %rsi     # 0xaa35d
xorl %eax, %eax
callq 0xd600
testq %rax, %rax
je 0xef9a
jmp 0xef45
leaq 0x18(%rsp), %rdi
callq 0x71b64
xorl %ebp, %ebp
jmp 0xef52
leaq 0x9b2c5(%rip), %rsi     # 0xaa322
jmp 0xf066
leaq 0x9b2db(%rip), %rsi     # 0xaa341
movq %rbx, %rdi
xorl %eax, %eax
callq 0xd7c4
jmp 0xef45
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_arg_s_parse
BCORE_DEFINE_OBJECT_INST_P_NASC_END( xoico_arg_s )

er_t xoico_arg_s_parse( xoico_arg_s* o, const xoico_host* host, x_source* source )
{
    // xoico_arg.x:33:1
    BLM_INIT_LEVEL(0);
    xoico_compiler_s* compiler = xoico_host_a_compiler(host);
    x_source_point_s_setup_from_source(&(o->source_point),source );
    BLM_TRY(xoico_typespec_s_parse(&(o->typespec),host, source ))
    
    if( o->typespec.type == ((tp_t)(TYPEOF_type_deduce)) )
    {
        BLM_RETURNV(er_t, x_source_point_s_parse_error_fa(&(o->source_point),"'$' (type_deduce) can not be used in an argument." ))
    }
    
    if( o->typespec.flag_variadic ) BLM_RETURNV(er_t, 0)
    
    if( o->typespec.type == ((tp_t)(TYPEOF_void)) && o->typespec.indirection == 0 )
    {
        BLM_RETURNV(er_t, x_source_point_s_parse_error_fa(&(o->source_point),"'void' is misplaced here." ))
    }
    
    st_s* s = ((st_s*)BLM_LEVEL_T_PUSH(0,st_s,st_s_create()));
    BLM_TRY(x_source_parse_fa(source,"#name ", s ))
    if( s->size == 0 )
    {
        BLM_RETURNV(er_t, x_source_parse_error_fa(source,"Argument: Name expected." ))
    }
    o->name = xoico_compiler_s_entypeof(compiler,s->sc );
    
    BLM_RETURNV(er_t, 0)
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x30, %rsp
movq %rdx, %r14
movq %rsi, %r13
movq %rdi, %rbx
leaq 0x108c9a(%rip), %rax    # 0x117dd0
movq (%rax), %rsi
movq %rsp, %r15
movq %r15, %rdi
callq 0x717f5
andq $0x0, 0x10(%r15)
movq %r13, %rdi
callq 0xdab3
movq %rax, %r15
leaq 0x8(%rbx), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0xdc7d
leaq 0x20(%rbx), %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0xe149
testq %rax, %rax
jne 0xf19b
movq 0x28(%rbx), %rax
movabsq $-0x59040ffc58933ff2, %rcx # imm = 0xA6FBF003A76CC00E
cmpq %rcx, %rax
jne 0xf1b7
leaq 0x9b1d0(%rip), %rsi     # 0xaa361
movq %r12, %rdi
xorl %eax, %eax
callq 0xf256
movq %rax, %r13
movq %rsp, %rdi
callq 0x71b64
movq %r13, %rax
addq $0x30, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
cmpb $0x0, 0x4f(%rbx)
je 0xf1c2
xorl %r13d, %r13d
jmp 0xf19e
movabsq $0x3173c900e37ae1df, %rcx # imm = 0x3173C900E37AE1DF
cmpq %rcx, %rax
jne 0xf1d8
cmpq $0x0, 0x40(%rbx)
je 0xf234
xorl %eax, %eax
callq 0x8eb65
movq %rsp, %rdi
movabsq $-0x503db0e6e1c2e704, %rdx # imm = 0xAFC24F191E3D18FC
xorl %esi, %esi
movq %rax, %rcx
callq 0x71967
movq %rax, %r12
leaq 0x9c6ab(%rip), %rsi     # 0xab8ab
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0xd600
testq %rax, %rax
jne 0xf19b
cmpq $0x0, 0x10(%r12)
je 0xf240
movq 0x8(%r12), %rsi
addq $0x140, %r15            # imm = 0x140
movq %r15, %rdi
callq 0x6f48c
movq %rax, 0x50(%rbx)
jmp 0xf1bd
leaq 0x9b158(%rip), %rsi     # 0xaa393
jmp 0xf191
leaq 0x9b166(%rip), %rsi     # 0xaa3ad
movq %r14, %rdi
xorl %eax, %eax
callq 0xd7c4
jmp 0xf19b
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_arg_s_get_hash
tp_t xoico_arg_s_get_hash( const xoico_arg_s* o )
{
    // xoico_arg.x:64:1
    
    tp_t hash = bcore_tp_fold_tp( bcore_tp_init(), o->_ );
    hash = bcore_tp_fold_tp( hash, xoico_typespec_s_get_hash(&(o->typespec)) );
    hash = bcore_tp_fold_tp( hash, o->name );
    return  hash;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq (%rdi), %rsi
movabsq $-0x340d631b7bdddcdb, %rdi # imm = 0xCBF29CE484222325
callq 0xe705
movq %rax, %r14
leaq 0x20(%rbx), %rdi
callq 0xe660
movq %r14, %rdi
movq %rax, %rsi
callq 0xe705
movq 0x50(%rbx), %rsi
movq %rax, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0xe705
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_arg_s_expand
er_t xoico_arg_s_expand( const xoico_arg_s* o, const xoico_host* host, x_sink* sink )
{
    // xoico_arg.x:86:1
    
    BLM_TRY(xoico_typespec_s_expand(&(o->typespec),host, sink ) )
    if( o->name )
    {
        x_sink_push_fa(sink," " );
        BLM_TRY(xoico_arg_s_expand_name(o,host, sink ))
    }
    return  0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
addq $0x20, %rdi
callq 0xe71d
cmpq $0x0, 0x50(%r15)
je 0xf371
leaq 0xb2424(%rip), %rsi     # 0xc177d
movq %rbx, %rdi
xorl %eax, %eax
callq 0xdd43
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0xf379
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_arg_s_expand_x
er_t xoico_arg_s_expand_x( const xoico_arg_s* o, const xoico_host* host, x_sink* sink )
{
    // xoico_arg.x:99:1
    
    BLM_TRY(xoico_typespec_s_expand_x(&(o->typespec),host, sink ) )
    if( o->name )
    {
        x_sink_push_fa(sink," " );
        BLM_TRY(xoico_arg_s_expand_name(o,host, sink ))
    }
    return  0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
addq $0x20, %rdi
callq 0xe8b0
cmpq $0x0, 0x50(%r15)
je 0xf3f9
leaq 0xb239c(%rip), %rsi     # 0xc177d
movq %rbx, %rdi
xorl %eax, %eax
callq 0xdd43
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0xf379
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_args_s_append
BCORE_DEFINE_OBJECT_INST_P_NASC_END( xoico_args_s )

er_t xoico_args_s_append( xoico_args_s* o, const xoico_host* host, x_source* source )
{
    // xoico_args.x:33:1
    BLM_INIT_LEVEL(0);
    bl_t first = true;
    while( !x_source_parse_bl(source," #=?')' " ) ) // args follow
    {
        if( xoico_args_s_is_variadic(o) ) BLM_RETURNV(er_t, x_source_parse_error_fa(source,"Cannot append to variadic argument list." ))
        if( !first ) BLM_TRY(xoico_parse_f(source, " , " ))
        xoico_arg_s* arg = ((xoico_arg_s*)BLM_LEVEL_T_PUSH(0,xoico_arg_s,xoico_arg_s_create()));
        BLM_TRY(xoico_arg_s_parse(arg,host, source ))
        x_array_push_d(((x_array*)(o)),((x_inst*)(((xoico_arg_s*)bcore_fork(arg)) )));
        first = false;
    }
    BLM_RETURNV(er_t, 0)
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r12
leaq 0x1087dc(%rip), %rax    # 0x117dd0
movq (%rax), %rsi
leaq 0x8(%rsp), %r13
movq %r13, %rdi
callq 0x717f5
andq $0x0, 0x10(%r13)
movb $0x1, %r14b
leaq 0x9ae6a(%rip), %rbp     # 0xaa47d
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xe5ff
testb %al, %al
jne 0xf6a9
movq 0x10(%r12), %rax
testq %rax, %rax
je 0xf640
movq 0x8(%r12), %rcx
movq -0x8(%rcx,%rax,8), %rax
cmpb $0x1, 0x4f(%rax)
je 0xf6ad
testb $0x1, %r14b
jne 0xf65c
movq %rbx, %rdi
leaq 0x9ad0d(%rip), %rsi     # 0xaa35d
xorl %eax, %eax
callq 0xd600
testq %rax, %rax
jne 0xf6be
callq 0xf0de
movq %r13, %rdi
xorl %esi, %esi
movabsq $-0x21883bf5398e4338, %rdx # imm = 0xDE77C40AC671BCC8
movq %rax, %rcx
callq 0x71967
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0xf119
testq %rax, %rax
jne 0xf6be
movq %r14, %rdi
callq 0x6026d
movq %r12, %rdi
movq %rax, %rsi
callq 0xf6dd
xorl %r14d, %r14d
jmp 0xf613
xorl %ebx, %ebx
jmp 0xf6c1
leaq 0x9add2(%rip), %rsi     # 0xaa486
movq %rbx, %rdi
xorl %eax, %eax
callq 0xd7c4
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x71b64
movq %rbx, %rax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_args_s_expand
er_t xoico_args_s_expand( const xoico_args_s* o, const xoico_host* host, bl_t first, x_sink* sink )
{
    // xoico_args.x:66:1
    
    {const xoico_args_s* __a=o ;if(__a)for(sz_t __i=0;__i<__a->size;__i++){xoico_arg_s* arg=__a->data[__i];
    {
        if( !first ) x_sink_push_fa(sink,", " );
        first = false;
        BLM_TRY(xoico_arg_s_expand(arg,host, sink ))
    }
    }}return  0;
}

// Assembly:
testq %rdi, %rdi
je 0xf7c6
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rcx, %rbx
movq %rsi, %r14
movq %rdi, %r15
leaq 0x9abdd(%rip), %r12     # 0xaa35e
xorl %ebp, %ebp
cmpq 0x10(%r15), %rbp
jae 0xf7b8
movq 0x8(%r15), %rax
movq (%rax,%rbp,8), %r13
testb $0x1, %dl
jne 0xf7a3
movq %rbx, %rdi
movq %r12, %rsi
xorl %eax, %eax
callq 0xdd43
movq %r13, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0xf334
incq %rbp
xorl %edx, %edx
jmp 0xf783
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_args_s_expand_x
er_t xoico_args_s_expand_x( const xoico_args_s* o, const xoico_host* host, bl_t first, x_sink* sink )
{
    // xoico_args.x:79:1
    
    {const xoico_args_s* __a=o ;if(__a)for(sz_t __i=0;__i<__a->size;__i++){xoico_arg_s* arg=__a->data[__i];
    {
        if( !first ) x_sink_push_fa(sink,", " );
        first = false;
        BLM_TRY(xoico_arg_s_expand_x(arg,host, sink ))
    }
    }}return  0;
}

// Assembly:
testq %rdi, %rdi
je 0xf82e
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rcx, %rbx
movq %rsi, %r14
movq %rdi, %r15
leaq 0x9ab75(%rip), %r12     # 0xaa35e
xorl %ebp, %ebp
cmpq 0x10(%r15), %rbp
jae 0xf820
movq 0x8(%r15), %rax
movq (%rax,%rbp,8), %r13
testb $0x1, %dl
jne 0xf80b
movq %rbx, %rdi
movq %r12, %rsi
xorl %eax, %eax
callq 0xdd43
movq %r13, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0xf3bc
incq %rbp
xorl %edx, %edx
jmp 0xf7eb
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_args_s_expand_name
er_t xoico_args_s_expand_name( const xoico_args_s* o, const xoico_host* host, bl_t first, x_sink* sink )
{
    // xoico_args.x:92:1
    
    {const xoico_args_s* __a=o ;if(__a)for(sz_t __i=0;__i<__a->size;__i++){xoico_arg_s* arg=__a->data[__i];
    {
        if( !first ) x_sink_push_fa(sink,", " );
        first = false;
        BLM_TRY(xoico_arg_s_expand_name(arg,host, sink ))
    }
    }}return  0;
}

// Assembly:
testq %rdi, %rdi
je 0xf896
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rcx, %rbx
movq %rsi, %r14
movq %rdi, %r15
leaq 0x9ab0d(%rip), %r12     # 0xaa35e
xorl %ebp, %ebp
cmpq 0x10(%r15), %rbp
jae 0xf888
movq 0x8(%r15), %rax
movq (%rax,%rbp,8), %r13
testb $0x1, %dl
jne 0xf873
movq %rbx, %rdi
movq %r12, %rsi
xorl %eax, %eax
callq 0xdd43
movq %r13, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0xf379
incq %rbp
xorl %edx, %edx
jmp 0xf853
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_args_s_get_hash
tp_t xoico_args_s_get_hash( const xoico_args_s* o )
{
    // xoico_args.x:105:1
    
    tp_t hash = bcore_tp_fold_tp( bcore_tp_init(), o->_ );
    {const xoico_args_s* __a=o ;if(__a)for(sz_t __i=0;__i<__a->size;__i++){xoico_arg_s* arg=__a->data[__i]; hash = bcore_tp_fold_tp( hash, xoico_arg_s_get_hash(arg) );}}
    return  hash;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq (%rdi), %rsi
movabsq $-0x340d631b7bdddcdb, %rdi # imm = 0xCBF29CE484222325
callq 0xe705
movq %rax, %r14
movq 0x10(%rbx), %r15
xorl %r12d, %r12d
cmpq %r12, %r15
je 0xf8e5
movq 0x8(%rbx), %rax
movq (%rax,%r12,8), %rdi
callq 0xf2da
movq %r14, %rdi
movq %rax, %rsi
callq 0xe705
movq %rax, %r14
incq %r12
jmp 0xf8c0
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_signature_s_convert_transient_types
BCORE_DEFINE_OBJECT_INST_P_NASC_END( xoico_signature_s )

er_t xoico_signature_s_convert_transient_types( xoico_signature_s* o, const xoico_host* host, const xoico_transient_map_s* map )
{
    // xoico_signature.x:45:5
    
    if( o->arg_o )
    {
        BLM_TRY(xoico_arg_s_convert_transient_types(o->arg_o,host, map ))
        if
        (
            o->arg_o->typespec.transient &&
            o->typespec_ret.transient &&
            o->arg_o->typespec.transient->class == o->typespec_ret.transient->class
        )
        {
            o->typespec_ret.type = xoico_host_a_obj_type(host);
        }
    }
    
    BLM_TRY(xoico_args_s_convert_transient_types(&(o->args),host, map ))
    BLM_TRY(xoico_typespec_s_convert_transient_types(&(o->typespec_ret),host, map ))
    return   0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdx, %rbx
movq %rdi, %r14
movq 0x50(%rdi), %rdi
testq %rdi, %rdi
je 0xf9e2
movq %rsi, %r15
addq $0x20, %rdi
movq %rbx, %rdx
callq 0xe0e2
movq 0x50(%r14), %rax
movq 0x38(%rax), %rax
testq %rax, %rax
je 0xf9e2
movq 0x38(%r14), %rcx
testq %rcx, %rcx
je 0xf9e2
movq 0x8(%rax), %rax
cmpq 0x8(%rcx), %rax
jne 0xf9e2
movq %r15, %rdi
callq 0xe8a0
movq %rax, 0x28(%r14)
leaq 0x58(%r14), %rdi
movq %rbx, %rdx
callq 0xf719
addq $0x20, %r14
movq %r14, %rdi
movq %rbx, %rdx
callq 0xe0e2
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_signature_s_relent
er_t xoico_signature_s_relent( xoico_signature_s* o, const xoico_host* host, tp_t tp_obj_type )
{
    // xoico_signature.x:68:5
    
    if( o->arg_o ) BLM_TRY(xoico_arg_s_relent(o->arg_o,host, tp_obj_type ))
    BLM_TRY(xoico_args_s_relent(&(o->args),host, tp_obj_type ))
    BLM_TRY(xoico_typespec_s_relent(&(o->typespec_ret),host, tp_obj_type ))
    return  0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdx, %rbx
movq %rdi, %r14
movabsq $0x213393bef2495d15, %r15 # imm = 0x213393BEF2495D15
movq 0x50(%rdi), %rax
testq %rax, %rax
je 0xfa2d
cmpq %r15, 0x28(%rax)
jne 0xfa2d
movq %rbx, 0x28(%rax)
leaq 0x58(%r14), %rdi
movq %rbx, %rdx
callq 0xf6e8
cmpq %r15, 0x28(%r14)
jne 0xfa43
movq %rbx, 0x28(%r14)
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_signature_s_get_hash
tp_t xoico_signature_s_get_hash( const xoico_signature_s* o )
{
    // xoico_signature.x:120:1
    
    tp_t hash = bcore_tp_fold_tp( bcore_tp_init(), o->_ );
    hash = bcore_tp_fold_tp( hash, o->global_name );
    hash = bcore_tp_fold_tp( hash, xoico_typespec_s_get_hash(&(o->typespec_ret)) );
    hash = bcore_tp_fold_tp( hash, o->arg_o ? xoico_arg_s_get_hash(o->arg_o) : 0 );
    hash = bcore_tp_fold_tp( hash, xoico_args_s_get_hash(&(o->args)) );
    return  hash;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdi, %rbx
movq (%rdi), %r12
movq 0x18(%rdi), %r14
addq $0x20, %rdi
callq 0xe660
movq %rax, %r15
movq 0x50(%rbx), %rdi
testq %rdi, %rdi
je 0xfaeb
callq 0xf2da
movq %rax, %r13
jmp 0xfaee
xorl %r13d, %r13d
movabsq $-0x340d631b7bdddcdb, %rdi # imm = 0xCBF29CE484222325
movq %r12, %rsi
callq 0xe705
movq %rax, %rdi
movq %r14, %rsi
callq 0xe705
movq %rax, %rdi
movq %r15, %rsi
callq 0xe705
movq %rax, %rdi
movq %r13, %rsi
callq 0xe705
movq %rax, %r14
addq $0x58, %rbx
movq %rbx, %rdi
callq 0xf899
movq %r14, %rdi
movq %rax, %rsi
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0xe705
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_signature_s_set_global_name
er_t xoico_signature_s_set_global_name( xoico_signature_s* o, const xoico_host* host )
{
    // xoico_signature.x:132:1
    BLM_INIT_LEVEL(0);
    o->base_name = xoico_host_a_obj_type(host);
    o->global_name = xoico_host_a_entypeof(host,((st_s*)BLM_LEVEL_T_PUSH(0,st_s,st_s_create_fa("#<sc_t>_#<sc_t>", xoico_host_a_nameof(host,o->base_name ), xoico_host_a_nameof(host,o->name ) )))->sc );
    BLM_RETURNV(er_t, 0)
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rsi, %r15
movq %rdi, %rbx
leaq 0x108274(%rip), %rax    # 0x117dd0
movq (%rax), %rsi
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x717f5
andq $0x0, 0x10(%r14)
movq %r15, %rdi
callq 0xe8a0
movq %rax, 0x10(%rbx)
movq %r15, %rdi
movq %rax, %rsi
callq 0xdf58
movq %rax, %r12
movq 0x8(%rbx), %rsi
movq %r15, %rdi
callq 0xdf58
leaq 0x9b1de(%rip), %rdi     # 0xaad7c
movq %r12, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x8ec7d
movabsq $-0x503db0e6e1c2e704, %rdx # imm = 0xAFC24F191E3D18FC
movq %r14, %rdi
xorl %esi, %esi
movq %rax, %rcx
callq 0x71967
movq 0x8(%rax), %rsi
movq %r15, %rdi
callq 0xfbe8
movq %rax, 0x18(%rbx)
movq %r14, %rdi
callq 0x71b64
xorl %eax, %eax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_compiler_s_get_signature
const xoico_signature_s* xoico_compiler_s_get_signature( const xoico_compiler_s* o, tp_t name )
{
    // xoico_compiler.x:247:5
    
    const xoico* item = xoico_compiler_s_get_const_item(o,name );
    if( !item ) return  NULL;
    if( item->_ == ((tp_t)(TYPEOF_xoico_signature_s)) ) return  ((xoico_signature_s*)(item));
    if( item->_ == ((tp_t)(TYPEOF_xoico_feature_s))   ) return &( ((xoico_feature_s*)(item))->signature);
    return  NULL;
}

// Assembly:
pushq %rax
callq 0x162bb
testq %rax, %rax
je 0xfffc
movq (%rax), %rcx
movabsq $-0x231a5c50432e84f2, %rdx # imm = 0xDCE5A3AFBCD17B0E
cmpq %rdx, %rcx
je 0xfffe
movabsq $0x320f5368e957d0a2, %rdx # imm = 0x320F5368E957D0A2
cmpq %rdx, %rcx
jne 0xfffc
addq $0x8, %rax
jmp 0xfffe
xorl %eax, %eax
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_body_code_s_get_hash
tp_t xoico_body_code_s_get_hash( const xoico_body_code_s* o )
{
    // xoico_body.x:314:1
    
    tp_t hash = bcore_tp_fold_tp( bcore_tp_init(), o->_ );
    hash = bcore_tp_fold_tp( hash, o->hash_source );
    return  hash;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq (%rdi), %rsi
movabsq $-0x340d631b7bdddcdb, %rdi # imm = 0xCBF29CE484222325
callq 0xe705
movq 0x10(%rbx), %rsi
movq %rax, %rdi
popq %rbx
jmp 0xe705
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_body_s_get_hash
BCORE_DEFINE_OBJECT_INST_P_NASC_END( xoico_body_s )

tp_t xoico_body_s_get_hash( const xoico_body_s* o )
{
    // xoico_body.x:327:1
    
    tp_t hash = bcore_tp_fold_tp( bcore_tp_init(), o->_ );
    hash = bcore_tp_fold_tp( hash, o->name );
    if( o->code ) hash = bcore_tp_fold_tp( hash, xoico_body_code_s_get_hash(o->code) );
    hash = bcore_tp_fold_bl( hash, o->go_inline );
    return  hash;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq (%rdi), %rsi
movabsq $-0x340d631b7bdddcdb, %rdi # imm = 0xCBF29CE484222325
callq 0xe705
movq 0x8(%rbx), %rsi
movq %rax, %rdi
callq 0xe705
movq %rax, %r14
movq 0x18(%rbx), %rdi
testq %rdi, %rdi
je 0x108b8
callq 0x107d7
movq %r14, %rdi
movq %rax, %rsi
callq 0xe705
movq %rax, %r14
movzbl 0x20(%rbx), %ecx
xorq %r14, %rcx
movabsq $0x100000001b3, %rax    # imm = 0x100000001B3
imulq %rcx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_body_s_parse
er_t xoico_body_s_parse( xoico_body_s* o, const xoico_host* host, x_source* source )
{
    // xoico_body.x:376:1
    BLM_INIT_LEVEL(0);
    x_source_point_s_setup_from_source(&(o->source_point),source );
    
    bl_t force_inline = x_source_parse_bl(source," #?w'inline'" );
    bl_t force_export = x_source_parse_bl(source," #?w'export'" );
    
    if( x_source_parse_bl(source," #=?'='" ) )
    {
        s3_t index = x_source_get_index(source);
        if( x_source_parse_bl(source,"= #?'{'" ) )
        {
            BLM_RETURNV(er_t, x_source_parse_error_fa(source,"Explicit block assignment '=' is deprecated. Remove assignment operator.\n" ))
        }
        else // assignment can be used as completion in a single-statement body
        {
            x_source_set_index(source,index );
        }
    }
    
    BLM_TRY(xoico_body_s_parse_expression(o,host, source ))
    o->go_inline = force_inline ? true : force_export ? false : o->go_inline;
    
    xoico_compiler_s* compiler = xoico_host_a_compiler(host);
    o->global_name = xoico_host_a_entypeof(host,((st_s*)BLM_LEVEL_T_PUSH(0,st_s,st_s_create_fa("#<sc_t>_#<sc_t>", xoico_compiler_s_nameof(compiler,xoico_host_a_obj_type(host) ), xoico_compiler_s_nameof(compiler,o->name ) )))->sc );
    BLM_RETURNV(er_t, 0)
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x107282(%rip), %rax    # 0x117dd0
movq (%rax), %rsi
leaq 0x8(%rsp), %r12
movq %r12, %rdi
callq 0x717f5
andq $0x0, 0x10(%r12)
leaq 0x28(%rbx), %rdi
movq %r15, %rsi
callq 0xdc7d
leaq 0x99a5c(%rip), %rsi     # 0xaa5d3
movq %r15, %rdi
callq 0xe5ff
movl %eax, %ebp
leaq 0x99a58(%rip), %rsi     # 0xaa5e0
movq %r15, %rdi
callq 0xe5ff
movl %eax, %r12d
leaq 0x99a53(%rip), %rsi     # 0xaa5ed
movq %r15, %rdi
callq 0xe5ff
testb %al, %al
je 0x10be8
movq %r15, %rdi
callq 0x10a95
movq %rax, %r13
leaq 0x99a3d(%rip), %rsi     # 0xaa5f5
movq %r15, %rdi
callq 0xe5ff
testb %al, %al
je 0x10bdd
leaq 0x99a32(%rip), %rsi     # 0xaa5fd
movq %r15, %rdi
xorl %eax, %eax
callq 0xd7c4
movq %rax, %r15
jmp 0x10c7c
movq %r15, %rdi
movq %r13, %rsi
callq 0x10b09
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x108d5
movq %rax, %r15
testq %rax, %rax
jne 0x10c7c
orb %bpl, %r12b
testb $0x1, %r12b
jne 0x10c0b
movb 0x20(%rbx), %bpl
movb %bpl, 0x20(%rbx)
movq %r14, %rdi
callq 0xdab3
movq %rax, %r15
movq %r14, %rdi
callq 0xe8a0
movq %r15, %rdi
movq %rax, %rsi
callq 0xdad8
movq %rax, %r12
movq 0x8(%rbx), %rsi
movq %r15, %rdi
callq 0xdad8
leaq 0x9a139(%rip), %rdi     # 0xaad7c
xorl %r15d, %r15d
movq %r12, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x8ec7d
leaq 0x8(%rsp), %rdi
movabsq $-0x503db0e6e1c2e704, %rdx # imm = 0xAFC24F191E3D18FC
xorl %esi, %esi
movq %rax, %rcx
callq 0x71967
movq 0x8(%rax), %rsi
movq %r14, %rdi
callq 0xfbe8
movq %rax, 0x10(%rbx)
leaq 0x8(%rsp), %rdi
callq 0x71b64
movq %r15, %rax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_func_s_get_hash
tp_t xoico_func_s_get_hash( const xoico_func_s* o )
{
    // xoico_func.x:75:1
    
    tp_t hash = bcore_tp_fold_tp( bcore_tp_init(), o->_ );
    hash = bcore_tp_fold_tp( hash, o->pre_hash );
    hash = bcore_tp_fold_tp( hash, o->name );
    hash = bcore_tp_fold_tp( hash, o->global_name );
    hash = bcore_tp_fold_tp( hash, o->obj_type );
    hash = bcore_tp_fold_tp( hash, o->signature_global_name );
    hash = bcore_tp_fold_bl( hash, o->expandable );
    hash = bcore_tp_fold_bl( hash, o->overloadable );
    hash = bcore_tp_fold_bl( hash, o->register_in_function_manager );
    
    if( o->body      ) hash = bcore_tp_fold_tp( hash, xoico_body_s_get_hash(o->body) );
    if( o->signature ) hash = bcore_tp_fold_tp( hash, xoico_signature_s_get_hash(o->signature) );
    return  hash;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq (%rdi), %rsi
movabsq $-0x340d631b7bdddcdb, %rdi # imm = 0xCBF29CE484222325
callq 0xe705
movq 0x30(%rbx), %rsi
movq %rax, %rdi
callq 0xe705
movq 0x8(%rbx), %rsi
movq %rax, %rdi
callq 0xe705
movq 0x10(%rbx), %rsi
movq %rax, %rdi
callq 0xe705
movq 0x18(%rbx), %rsi
movq %rax, %rdi
callq 0xe705
movq 0x20(%rbx), %rsi
movq %rax, %rdi
callq 0xe705
movzbl 0x28(%rbx), %ecx
xorq %rax, %rcx
movabsq $0x100000001b3, %rax    # imm = 0x100000001B3
imulq %rax, %rcx
movzbl 0x29(%rbx), %edx
xorq %rcx, %rdx
imulq %rax, %rdx
movzbl 0x2b(%rbx), %r14d
xorq %rdx, %r14
imulq %rax, %r14
movq 0x38(%rbx), %rdi
testq %rdi, %rdi
je 0x10fd8
callq 0x10874
movq %r14, %rdi
movq %rax, %rsi
callq 0xe705
movq %rax, %r14
movq 0x40(%rbx), %rdi
testq %rdi, %rdi
je 0x10ff8
callq 0xfab9
movq %r14, %rdi
movq %rax, %rsi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0xe705
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_func_s_freeze_global_name
er_t xoico_func_s_freeze_global_name( xoico_func_s* o, const xoico_host* host )
{
    // xoico_func.x:94:1
    BLM_INIT_LEVEL(0);
    if( o->global_name ) BLM_RETURNV(er_t, 0)
    xoico_compiler_s* compiler = xoico_host_a_compiler(host);
    o->global_name = xoico_compiler_s_entypeof(compiler,((st_s*)BLM_LEVEL_T_PUSH(0,st_s,st_s_create_fa("#<sc_t>_#<sc_t>", xoico_compiler_s_nameof(compiler,xoico_host_a_obj_type(host) ), xoico_compiler_s_nameof(compiler,o->name ) )))->sc );
    BLM_RETURNV(er_t, 0)
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x30, %rsp
movq %rsi, %r15
movq %rdi, %rbx
leaq 0x106db7(%rip), %rax    # 0x117dd0
movq (%rax), %rsi
movq %rsp, %r14
movq %r14, %rdi
callq 0x717f5
andq $0x0, 0x10(%r14)
cmpq $0x0, 0x10(%rbx)
jne 0x110a2
movq %r15, %rdi
callq 0xdab3
movq %rax, %r14
movq %r15, %rdi
callq 0xe8a0
movq %r14, %rdi
movq %rax, %rsi
callq 0xdad8
movq %rax, %r15
movq 0x8(%rbx), %rsi
movq %r14, %rdi
callq 0xdad8
leaq 0x99d15(%rip), %rdi     # 0xaad7c
movq %r15, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x8ec7d
movq %rsp, %rdi
movabsq $-0x503db0e6e1c2e704, %rdx # imm = 0xAFC24F191E3D18FC
xorl %esi, %esi
movq %rax, %rcx
callq 0x71967
movq 0x8(%rax), %rsi
addq $0x140, %r14            # imm = 0x140
movq %r14, %rdi
callq 0x6f48c
movq %rax, 0x10(%rbx)
movq %rsp, %rdi
callq 0x71b64
xorl %eax, %eax
addq $0x30, %rsp
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_compiler_s_register_item
er_t xoico_compiler_s_register_item( xoico_compiler_s* o, const xoico* item )
{
    // xoico_compiler.x:335:1
    
    tp_t global_id = xoico_a_get_global_name_tp(item);
    if( bcore_hmap_tpvd_s_exists(&(o->hmap_item),global_id ) )
    {
        return  x_source_point_s_parse_error_fa(((x_source_point_s*)(xoico_a_get_source_point(item))),"'#<sc_t>' was already registered\n", xoico_compiler_s_nameof(o,global_id ) );
    }
    bcore_hmap_tpvd_s_set(&(o->hmap_item),global_id, ( vd_t )item );
    return  0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
movq %rsi, %rdi
callq 0x115c2
movq %rax, %r15
leaq 0x78(%r14), %r12
movq %r12, %rdi
movq %rax, %rsi
callq 0x68f9b
testb %al, %al
je 0x1153a
movq %rbx, %rdi
callq 0x2d62b
movq %rbx, %rdi
callq *0x90(%rax)
movq %rax, %rbx
movq %r14, %rdi
movq %r15, %rsi
callq 0xdad8
leaq 0x9b8b4(%rip), %rsi     # 0xacdd6
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0xf256
movq %r12, %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x68dba
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_func_s_push_flect_decl_to_sink
er_t xoico_func_s_push_flect_decl_to_sink( const xoico_func_s* o, const xoico_host* host, x_sink* sink )
{
    // xoico_func.x:202:1
    
    xoico_compiler_s* compiler = xoico_host_a_compiler(host);
    x_sink_push_sc(sink,"func " );
    if( host->_ == ((tp_t)(TYPEOF_xoico_stamp_s)) && o->signature->base_name == ((const xoico_stamp_s*)(host))->trait_name )
    {
        x_sink_push_fa(sink,"^:#<sc_t>", xoico_compiler_s_nameof(compiler,o->name ) );
    }
    else
    {
        x_sink_push_fa(sink,"#<sc_t>:#<sc_t>", xoico_compiler_s_nameof(compiler,o->signature->base_name ), xoico_compiler_s_nameof(compiler,o->name ) );
    }
    x_sink_push_sc(sink,";" );
    return  0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %rbx
movq %rsi, %r12
movq %rdi, %r14
movq %rsi, %rdi
callq 0xdab3
movq %rax, %r15
leaq 0x9912c(%rip), %rsi     # 0xaa721
movq %rbx, %rdi
callq 0x11689
movabsq $0x12d01d78049fae7, %rax # imm = 0x12D01D78049FAE7
movq 0x40(%r14), %rcx
movq 0x10(%rcx), %rsi
cmpq %rax, (%r12)
jne 0x1163e
cmpq 0x30(%r12), %rsi
jne 0x1163e
movq 0x8(%r14), %rsi
movq %r15, %rdi
callq 0xdad8
leaq 0x990f8(%rip), %rsi     # 0xaa727
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0xdd43
jmp 0x1166c
movq %r15, %rdi
callq 0xdad8
movq %rax, %r12
movq 0x8(%r14), %rsi
movq %r15, %rdi
callq 0xdad8
leaq 0x990d5(%rip), %rsi     # 0xaa731
movq %rbx, %rdi
movq %r12, %rdx
movq %rax, %rcx
xorl %eax, %eax
callq 0xdd43
leaq 0x9d255(%rip), %rsi     # 0xae8c8
movq %rbx, %rdi
callq 0x11689
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_func_s_finalize
er_t xoico_func_s_finalize( xoico_func_s* o, const xoico_host* host )
{
    // xoico_func.x:220:1
    
    xoico_compiler_s* compiler = xoico_host_a_compiler(host);
    BLM_TRY(xoico_func_s_freeze_global_name(o,host ))
    o->obj_type = xoico_host_a_obj_type(host);
    
    if( !o->signature )
    {
        const xoico_signature_s* signature = xoico_compiler_s_get_signature(compiler,o->signature_global_name );
        if( !signature )
        {
            return  x_source_point_s_parse_error_fa(&(o->source_point),"Function #<sc_t>: Could not find signature #<sc_t>",
                xoico_compiler_s_nameof(compiler,o->name ),
                xoico_compiler_s_nameof(compiler,o->signature_global_name )
            );
        }
    
        o->signature = xoico_signature_s_clone(signature);
        BLM_TRY(xoico_signature_s_relent(o->signature,host, xoico_host_a_obj_type(host) ))
        if( xoico_host_defines_transient_map(host) ) BLM_TRY(xoico_signature_s_convert_transient_types(o->signature,host, xoico_host_a_transient_map(host) ))
    }
    
    if( o->body ) BLM_TRY(xoico_body_s_finalize(o->body,host ))
    
    return  0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
movq %rsi, %rdi
callq 0xdab3
movq %rax, %r15
movq %rbx, %rdi
movq %r14, %rsi
callq 0x11003
movq %r14, %rdi
callq 0xe8a0
movq %rax, 0x18(%rbx)
cmpq $0x0, 0x40(%rbx)
je 0x116f5
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq 0x20(%rbx), %rsi
movq %r15, %rdi
callq 0xffca
testq %rax, %rax
je 0x11750
movq %rax, %rdi
callq 0xf979
movq %rax, %r15
movq %rax, 0x40(%rbx)
movq %r14, %rdi
callq 0xe8a0
movq %r15, %rdi
movq %rax, %rdx
callq 0xfa05
movq %r14, %rdi
callq 0x11578
testb %al, %al
je 0x116e7
movq 0x40(%rbx), %rbx
movq %r14, %rdi
callq 0x11588
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0xf993
jmp 0x116e7
leaq 0x48(%rbx), %r14
movq 0x8(%rbx), %rsi
movq %r15, %rdi
callq 0xdad8
movq %rax, %r12
movq 0x20(%rbx), %rsi
movq %r15, %rdi
callq 0xdad8
leaq 0x98fcb(%rip), %rsi     # 0xaa741
movq %r14, %rdi
movq %r12, %rdx
movq %rax, %rcx
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0xf256
// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_func_s_expand_forward
er_t xoico_func_s_expand_forward( const xoico_func_s* o, const xoico_host* host, sz_t indent, x_sink* sink )
{
    // xoico_func.x:251:1
    
    if( !o->expandable ) return  0;
    if( !o->declare_in_expand_forward ) return  0;
    
    xoico_compiler_s* compiler = xoico_host_a_compiler(host);
    x_sink_push_fa(sink," \\\n#rn{ }", indent );
    bl_t go_inline = o->body && o->body->go_inline;
    const xoico_signature_s* signature = o->signature;
    ASSERT( signature );
    if( go_inline )
    {
        x_sink_push_fa(sink,"static inline " );
        BLM_TRY(xoico_signature_s_expand_declaration(signature,host, xoico_compiler_s_nameof(compiler,o->global_name ), indent, sink ))
    }
    else
    {
        BLM_TRY(xoico_signature_s_expand_declaration(signature,host, xoico_compiler_s_nameof(compiler,o->global_name ), indent, sink ))
    }
    x_sink_push_fa(sink,";" );
    
    return  0;
}

// Assembly:
cmpb $0x1, 0x28(%rdi)
jne 0x1186e
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %r15
cmpb $0x1, 0x2a(%rdi)
jne 0x11860
movq %rcx, %rbx
movq %rdx, %r13
movq %rsi, %r14
movq %rsi, %rdi
callq 0xdab3
movq %rax, %r12
leaq 0x98fa6(%rip), %rsi     # 0xaa774
xorl %ebp, %ebp
movq %rbx, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0xdd43
movq 0x38(%r15), %rax
testq %rax, %rax
je 0x117ea
movb 0x20(%rax), %bpl
movq 0x40(%r15), %r13
testq %r13, %r13
jne 0x1181c
leaq 0x98e4d(%rip), %rdi     # 0xaa647
leaq 0x9ef8b(%rip), %rsi     # 0xb078c
leaq 0x98f76(%rip), %rdx     # 0xaa77e
leaq 0x98a81(%rip), %rcx     # 0xaa290
movl $0x76c, %r8d            # imm = 0x76C
xorl %eax, %eax
callq 0x5ffac
testb %bpl, %bpl
je 0x11832
leaq 0x98f72(%rip), %rsi     # 0xaa79a
movq %rbx, %rdi
xorl %eax, %eax
callq 0xdd43
movq 0x10(%r15), %rsi
movq %r12, %rdi
callq 0xdad8
movq %r13, %rdi
movq %r14, %rsi
movq %rax, %rdx
movq %rbx, %r8
callq 0x10048
leaq 0x9d072(%rip), %rsi     # 0xae8c8
movq %rbx, %rdi
xorl %eax, %eax
callq 0xdd43
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
xorl %eax, %eax
retq