LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O1/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 %rax
xorl %ecx, %ecx
xorl %edx, %edx
movslq %ecx, %r8
movzbl (%rsi,%r8), %r9d
cmpl $0x5b, %r9d
je 0x77a3
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
cmpl $0x5d, %r9d
je 0x779b
testl %r9d, %r9d
je 0x77b2
testl %edx, %edx
jne 0x77a5
xorl %edx, %edx
cmpb %r9b, (%rdi)
jne 0x77a5
movzbl 0x1(%rsi,%r8), %ecx
xorl %eax, %eax
cmpl $0x5b, %ecx
jne 0x77b4
movb 0x1(%rdi), %dl
testb %dl, %dl
je 0x77b2
incq %r8
movslq %r8d, %rax
addq %rsi, %rax
movl %r8d, %ecx
movzbl (%rax), %r8d
cmpl $0x5d, %r8d
je 0x77a9
testl %r8d, %r8d
je 0x77cd
cmpb %r8b, %dl
je 0x77ad
incl %ecx
incq %rax
jmp 0x7780
testl %edx, %edx
jle 0x77de
decl %edx
jmp 0x77a5
incl %edx
incl %ecx
jmp 0x7737
xorl %edx, %edx
jmp 0x77a5
movl $0x3, %eax
popq %rcx
retq
cmpl $0x3a, %ecx
jne 0x77b2
cmpb $0x3a, 0x2(%rsi,%r8)
movb 0x1(%rdi), %cl
jne 0x77d4
xorl %eax, %eax
testb %cl, %cl
setne %al
jmp 0x77b2
callq 0x2a20
jmp 0x77e3
xorl %eax, %eax
cmpb $0x1, %cl
adcl $0x1, %eax
jmp 0x77b2
callq 0x2a04
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
jmp 0x77b2
// File: /workspace/github_c_makefile_star2_O1/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 %r12
pushq %rbx
movq %rsi, %rbx
movq %rdi, %r14
xorl %r15d, %r15d
movzbl (%r14,%r15), %eax
testl %eax, %eax
je 0x780e
cmpl $0x3d, %eax
je 0x780e
incq %r15
jmp 0x77fb
movq (%rbx), %rsi
testq %rsi, %rsi
je 0x784a
addq $0x20, %rbx
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
xorl %r12d, %r12d
movq %r14, %rdi
movq %r15, %rdx
callq 0x2080
testl %eax, %eax
jne 0x7839
cmpl $-0x1, %ebp
movl %r12d, %ebp
jne 0x784a
movq (%rbx), %rsi
incl %r12d
addq $0x20, %rbx
testq %rsi, %rsi
jne 0x7822
jmp 0x784f
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
movl %ebp, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_control.c
// Function: bcore_ext_wrn
void bcore_ext_wrn( sc_t func, sc_t file, int line, sc_t format, ... )
{
    fprintf( stderr, "warning:%s:%i:0 in function %s:\n", file, line, func );
    va_list args;
    va_start( args, format );
    vfprintf( stderr, format, args );
    va_end( args );
    fprintf( stderr, "\n" );
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0xd0, %rsp
movq %rcx, %rbx
movl %edx, %ecx
movq %rsi, %rdx
movq %rdi, %r10
testb %al, %al
je 0xd619
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)
leaq 0x20(%rsp), %r14
movq %r8, 0x20(%r14)
movq %r9, 0x28(%r14)
movq 0x18d9b3(%rip), %r15    # 0x19afe0
movq (%r15), %rdi
leaq 0x140d51(%rip), %rsi    # 0x14e388
movq %r10, %r8
xorl %eax, %eax
callq 0xd420
movq %rsp, %rdx
movq %r14, 0x10(%rdx)
leaq 0xf0(%rsp), %rax
movq %rax, 0x8(%rdx)
movabsq $0x3000000020, %rax     # imm = 0x3000000020
movq %rax, (%rdx)
movq (%r15), %rdi
movq %rbx, %rsi
callq 0xd1e0
movq (%r15), %rsi
pushq $0xa
popq %rdi
callq 0xd200
addq $0xd0, %rsp
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/lib/bcore/bcore_sinks.c
// Function: bcore_sink_stderr_s_push_data
uz_t bcore_sink_stderr_s_push_data( bcore_sink_stderr_s* o, vc_t data, uz_t size )
{
    st_s* msg = st_s_create_sc_n( data, size );
    fprintf( stderr, "%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 0x18d88e(%rip), %rax    # 0x19afe0
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/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, %r15
movq %rsi, %rbx
movq %rdi, %r14
testb %al, %al
je 0xdfa1
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 0x19ae17(%rip), %rax    # 0x1a8dd0
movq (%rax), %rsi
leaq 0x20(%rsp), %r12
movq %r12, %rdi
callq 0xe0431
movq $0x0, 0x10(%r12)
movq %rsp, %rsi
movq %r13, 0x10(%rsi)
leaq 0x130(%rsp), %rax
movq %rax, 0x8(%rsi)
movabsq $0x3000000018, %rax     # imm = 0x3000000018
movq %rax, (%rsi)
movq %r15, %rdi
callq 0xee84e
movq %r12, %rdi
xorl %esi, %esi
movq %rax, %rdx
callq 0xe0900
movq %rax, %r15
movq (%r14), %r12
leaq 0x191474(%rip), %rax    # 0x19f488
movl 0x19146e(%rip), %ecx    # 0x19f488
movslq %ecx, %rcx
leaq (%rcx,%rcx,2), %rcx
movq 0x20(%rax,%rcx,8), %rdx
movq 0x18(%rax,%rcx,8), %rcx
andq %r12, %rcx
shlq $0x4, %rcx
leaq (%rdx,%rcx), %rax
movq (%rdx,%rcx), %rdx
movl $0x8, %ecx
cmpq %r12, %rdx
je 0xe06e
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r12, %rdx
je 0xe06e
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r12, %rdx
je 0xe06e
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r12, %rdx
jne 0xe0cc
movq (%rax,%rcx), %r13
testq %r13, %r13
jne 0xe09e
movabsq $0x5d91f496b6479859, %rdi # imm = 0x5D91F496B6479859
movq %r12, %rsi
callq 0xf3f85
movq %rax, %r13
leaq 0x1913f5(%rip), %rdi    # 0x19f488
movq %r12, %rsi
movq %rax, %rdx
callq 0x12128c
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq *0x28(%r13)
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0xe0b30
movq %rbx, %rax
addq $0x100, %rsp            # imm = 0x100
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
xorl %r13d, %r13d
jmp 0xe072
// File: /workspace/github_c_makefile_star2_O1/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 0xddb82
testq %rax, %rax
jne 0xe3cd
movq %rbx, %rdi
callq 0xe0cbc
movq %rax, %rcx
testq %rax, %rax
leaq 0x145326(%rip), %rax    # 0x1536ef
cmovneq %rcx, %rax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_name_s_parse
BCORE_DEFINE_OBJECT_INST_P_NASC_END( xoico_name_s )

er_t xoico_name_s_parse( xoico_name_s* o, const xoico_host* host, x_source* source )
{
    // xoico_name.x:24:5
    
    x_source_point_s_setup_from_source(&(o->source_point),source );
    BLM_TRY(xoico_host_a_parse_name_tp(host,source, (&(o->name)) ))
    //source.parse_fa( " ; " );
    return  0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r14
addq $0x10, %rdi
movq %rdx, %rsi
callq 0xe9fb
movq (%r15), %r12
leaq 0x190d69(%rip), %rax    # 0x19f6a0
movl 0x190d63(%rip), %ecx    # 0x19f6a0
movslq %ecx, %rcx
leaq (%rcx,%rcx,2), %rcx
movq 0x20(%rax,%rcx,8), %rdx
movq 0x18(%rax,%rcx,8), %rcx
andq %r12, %rcx
shlq $0x4, %rcx
leaq (%rdx,%rcx), %rax
movq (%rdx,%rcx), %rdx
movl $0x8, %ecx
cmpq %r12, %rdx
je 0xe991
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r12, %rdx
je 0xe991
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r12, %rdx
je 0xe991
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r12, %rdx
jne 0xe9f6
movq (%rax,%rcx), %r13
addq $0x8, %r14
testq %r13, %r13
jne 0xe9c5
movabsq $-0x1e682f89ce03d7c8, %rdi # imm = 0xE197D07631FC2838
movq %r12, %rsi
callq 0xf3f85
movq %rax, %r13
leaq 0x190ce6(%rip), %rdi    # 0x19f6a0
movq %r12, %rsi
movq %rax, %rdx
callq 0x12128c
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq *0x18(%r13)
movq %rax, %rbx
testq %rax, %rax
je 0xe9e9
leaq 0x19a3ef(%rip), %rax    # 0x1a8dd0
movq (%rax), %rdi
callq 0xe0b30
movq %rbx, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
xorl %r13d, %r13d
jmp 0xe995
// File: /workspace/github_c_makefile_star2_O1/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:
movq (%rdi), %r8
movq 0x8(%rdi), %rax
movl $0xff, %edx
movq %r8, %rcx
andq %rdx, %rcx
movabsq $-0x340d631b7bdddcdb, %rdi # imm = 0xCBF29CE484222325
xorq %rcx, %rdi
movabsq $0x100000001b3, %rcx    # imm = 0x100000001B3
imulq %rcx, %rdi
movl %r8d, %r9d
shrl $0x8, %r9d
movl $0xff, %esi
andl %esi, %r9d
xorq %rdi, %r9
imulq %rcx, %r9
movl %r8d, %edi
shrl $0x10, %edi
andl %esi, %edi
xorq %r9, %rdi
imulq %rcx, %rdi
movl %r8d, %r9d
shrl $0x18, %r9d
xorq %rdi, %r9
imulq %rcx, %r9
movq %r8, %rdi
shrq $0x20, %rdi
andq %rdx, %rdi
xorq %r9, %rdi
imulq %rcx, %rdi
movq %r8, %r9
shrq $0x28, %r9
andq %rdx, %r9
xorq %rdi, %r9
imulq %rcx, %r9
movq %r8, %rdi
shrq $0x30, %rdi
andq %rdx, %rdi
xorq %r9, %rdi
imulq %rcx, %rdi
shrq $0x38, %r8
xorq %rdi, %r8
imulq %rcx, %r8
movq %rax, %rdi
andq %rdx, %rdi
xorq %r8, %rdi
imulq %rcx, %rdi
movl %eax, %r8d
shrl $0x8, %r8d
andl %esi, %r8d
xorq %rdi, %r8
imulq %rcx, %r8
movl %eax, %edi
shrl $0x10, %edi
andl %esi, %edi
xorq %r8, %rdi
imulq %rcx, %rdi
movl %eax, %esi
shrl $0x18, %esi
xorq %rdi, %rsi
imulq %rcx, %rsi
movq %rax, %rdi
shrq $0x20, %rdi
andq %rdx, %rdi
xorq %rsi, %rdi
imulq %rcx, %rdi
movq %rax, %rsi
shrq $0x28, %rsi
andq %rdx, %rsi
xorq %rdi, %rsi
imulq %rcx, %rsi
movq %rax, %rdi
shrq $0x30, %rdi
andq %rdx, %rdi
xorq %rsi, %rdi
imulq %rcx, %rdi
shrq $0x38, %rax
xorq %rdi, %rax
imulq %rcx, %rax
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_forward_s_parse
BCORE_DEFINE_OBJECT_INST_P_NASC_END( xoico_forward_s )

er_t xoico_forward_s_parse( xoico_forward_s* o, const xoico_host* host, x_source* source )
{
    // xoico_forward.x:27:5
    
    x_source_point_s_setup_from_source(&(o->source_point),source );
    BLM_TRY(xoico_host_a_parse_name_tp(host,source, (&(o->name)) ))
    //source.parse_fa( " ; " );
    return  0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r14
addq $0x18, %rdi
movq %rdx, %rsi
callq 0xe9fb
movq (%r15), %r12
leaq 0x1901b2(%rip), %rax    # 0x19f6a0
movl 0x1901ac(%rip), %ecx    # 0x19f6a0
movslq %ecx, %rcx
leaq (%rcx,%rcx,2), %rcx
movq 0x20(%rax,%rcx,8), %rdx
movq 0x18(%rax,%rcx,8), %rcx
andq %r12, %rcx
shlq $0x4, %rcx
leaq (%rdx,%rcx), %rax
movq (%rdx,%rcx), %rdx
movl $0x8, %ecx
cmpq %r12, %rdx
je 0xf548
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r12, %rdx
je 0xf548
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r12, %rdx
je 0xf548
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r12, %rdx
jne 0xf5ad
movq (%rax,%rcx), %r13
addq $0x8, %r14
testq %r13, %r13
jne 0xf57c
movabsq $-0x1e682f89ce03d7c8, %rdi # imm = 0xE197D07631FC2838
movq %r12, %rsi
callq 0xf3f85
movq %rax, %r13
leaq 0x19012f(%rip), %rdi    # 0x19f6a0
movq %r12, %rsi
movq %rax, %rdx
callq 0x12128c
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq *0x18(%r13)
movq %rax, %rbx
testq %rax, %rax
je 0xf5a0
leaq 0x199838(%rip), %rax    # 0x1a8dd0
movq (%rax), %rdi
callq 0xe0b30
movq %rbx, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
xorl %r13d, %r13d
jmp 0xf54c
// File: /workspace/github_c_makefile_star2_O1/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 0x102df
pushq %rbx
movq %rdi, %rbx
movq 0x8(%rax), %rsi
addq $0x8, %rdx
movq %rdx, %rdi
callq 0xd3f11
testq %rax, %rax
je 0x102d3
movq (%rax), %rax
jmp 0x102d5
xorl %eax, %eax
testq %rax, %rax
je 0x102de
movq %rax, 0x8(%rbx)
popq %rbx
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_typespec_s_reset
void xoico_typespec_s_reset( xoico_typespec_s* o )
{
    // xoico_typespec.x:93:5
    
    o->access_class = 0;
    xoico_typespec_transient_s_attach( &(o->transient ),  NULL);
    o->type = 0;
    o->indirection = 0;
    o->flag_static   = false;
    o->flag_volatile = false;
    o->flag_restrict = false;
    o->flag_aware    = false;
    o->flag_obliv    = false;
    o->flag_scope    = false;
    o->flag_addressable = true;  // object can have a pointer ('false' for objects returned by a function)
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
xorl %r14d, %r14d
movq %r14, 0x10(%rdi)
movq 0x18(%rdi), %rdi
callq 0xfb83
movq %r14, 0x8(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%rbx)
movq %r14, 0x26(%rbx)
movb $0x1, 0x2e(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O1/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 $0x54de8100f7c1cbe4, %rdx # imm = 0x54DE8100F7C1CBE4
cmpq %rdx, %rcx
jg 0x124e9
movabsq $-0x84b14e74a9e1ff0, %rdx # imm = 0xF7B4EB18B561E010
cmpq %rdx, %rcx
je 0x12507
movabsq $0x230abe18cdeefc99, %rdx # imm = 0x230ABE18CDEEFC99
jmp 0x12502
movabsq $0x54de8100f7c1cbe5, %rdx # imm = 0x54DE8100F7C1CBE5
cmpq %rdx, %rcx
je 0x12507
movabsq $0x6f0b060106a30da4, %rdx # imm = 0x6F0B060106A30DA4
cmpq %rdx, %rcx
jne 0x12508
retq
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_transient_map_s_copy
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:
cmpq %rsi, %rdi
je 0x12747
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
movabsq $0x2d2648b9bef99573, %r15 # imm = 0x2D2648B9BEF99573
leaq 0x196dc5(%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 0x126f9
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r15, %rdx
je 0x126f9
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r15, %rdx
je 0x126f9
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r15, %rdx
jne 0x12748
movq (%rax,%rcx), %r12
testq %r12, %r12
jne 0x12729
movabsq $0x782b96602f424981, %rdi # imm = 0x782B96602F424981
movq %r15, %rsi
callq 0xf3f85
movq %rax, %r12
leaq 0x196d4a(%rip), %rdi    # 0x1a9468
movq %r15, %rsi
movq %rax, %rdx
callq 0x12128c
movq 0x90(%r12), %rax
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmpq *%rax
retq
xorl %r12d, %r12d
jmp 0x126fd
// File: /workspace/github_c_makefile_star2_O1/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
movq %r14, %rdi
callq 0xd426a
testq %rax, %rax
je 0x12a4e
leaq 0x8(%rbx), %r15
xorl %r12d, %r12d
movq %r14, %rdi
movq %r12, %rsi
callq 0xd426f
testq %rax, %rax
je 0x12a3e
movq %rax, %r13
movq %r14, %rdi
movq %r12, %rsi
callq 0xd427c
movq %r15, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0xd409a
incq %r12
movq %r14, %rdi
callq 0xd426a
cmpq %rax, %r12
jb 0x12a12
movq %rbx, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/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 %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
movq (%rdi), %r12
movl $0xff, %r15d
movq %r12, %rax
andq %r15, %rax
movabsq $-0x340d631b7bdddcdb, %rcx # imm = 0xCBF29CE484222325
xorq %rax, %rcx
movabsq $0x100000001b3, %r14    # imm = 0x100000001B3
imulq %r14, %rcx
movl %r12d, %eax
shrl $0x8, %eax
movl $0xff, %ebp
andl %ebp, %eax
xorq %rcx, %rax
imulq %r14, %rax
movl %r12d, %ecx
shrl $0x10, %ecx
andl %ebp, %ecx
xorq %rax, %rcx
imulq %r14, %rcx
movl %r12d, %eax
shrl $0x18, %eax
xorq %rcx, %rax
imulq %r14, %rax
movq %r12, %rcx
shrq $0x20, %rcx
andq %r15, %rcx
xorq %rax, %rcx
imulq %r14, %rcx
movq %r12, %rax
shrq $0x28, %rax
andq %r15, %rax
xorq %rcx, %rax
imulq %r14, %rax
movq %r12, %rcx
shrq $0x30, %rcx
andq %r15, %rcx
xorq %rax, %rcx
imulq %r14, %rcx
shrq $0x38, %r12
xorq %rcx, %r12
imulq %r14, %r12
addq $0x20, %rdi
callq 0x11725
movq %rax, %rcx
andq %r15, %rcx
xorq %r12, %rcx
imulq %r14, %rcx
movl %eax, %edx
shrl $0x8, %edx
andl %ebp, %edx
xorq %rcx, %rdx
imulq %r14, %rdx
movl %eax, %ecx
shrl $0x10, %ecx
andl %ebp, %ecx
xorq %rdx, %rcx
imulq %r14, %rcx
movl %eax, %edx
shrl $0x18, %edx
xorq %rcx, %rdx
imulq %r14, %rdx
movq %rax, %rcx
shrq $0x20, %rcx
andq %r15, %rcx
xorq %rdx, %rcx
imulq %r14, %rcx
movq %rax, %rdx
shrq $0x28, %rdx
andq %r15, %rdx
xorq %rcx, %rdx
imulq %r14, %rdx
movq %rax, %rcx
shrq $0x30, %rcx
andq %r15, %rcx
xorq %rdx, %rcx
imulq %r14, %rcx
shrq $0x38, %rax
xorq %rcx, %rax
imulq %r14, %rax
movq 0x50(%rbx), %rcx
movq %rcx, %rdx
andq %r15, %rdx
xorq %rdx, %rax
imulq %r14, %rax
movl %ecx, %edx
shrl $0x8, %edx
andl %ebp, %edx
xorq %rdx, %rax
imulq %r14, %rax
movl %ecx, %edx
shrl $0x10, %edx
andl %ebp, %edx
xorq %rdx, %rax
imulq %r14, %rax
movl %ecx, %edx
shrl $0x18, %edx
xorq %rdx, %rax
imulq %r14, %rax
movq %rcx, %rdx
shrq $0x20, %rdx
andq %r15, %rdx
xorq %rdx, %rax
imulq %r14, %rax
movq %rcx, %rdx
shrq $0x28, %rdx
andq %r15, %rdx
xorq %rdx, %rax
imulq %r14, %rax
movq %rcx, %rdx
shrq $0x30, %rdx
andq %r15, %rdx
xorq %rdx, %rax
imulq %r14, %rax
shrq $0x38, %rcx
xorq %rcx, %rax
imulq %r14, %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/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 0x11a04
cmpq $0x0, 0x50(%r15)
je 0x13808
leaq 0x13b1bd(%rip), %rsi    # 0x14e9ad
movq %rbx, %rdi
xorl %eax, %eax
callq 0xee2a
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x13810
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_arg_s_expand_name
er_t xoico_arg_s_expand_name( const xoico_arg_s* o, const xoico_host* host, x_sink* sink )
{
    // xoico_arg.x:112:1
    
    if( !o->name ) return  0;
    x_sink_push_fa(sink,"#<sc_t>", xoico_compiler_s_nameof(xoico_host_a_compiler(host),o->name ) );
    return  0;
}

// Assembly:
cmpq $0x0, 0x50(%rdi)
je 0x138f1
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r14
movq (%rsi), %r12
leaq 0x18be69(%rip), %rax    # 0x19f6a0
movl 0x18be63(%rip), %ecx    # 0x19f6a0
movslq %ecx, %rcx
leaq (%rcx,%rcx,2), %rcx
movq 0x20(%rax,%rcx,8), %rdx
movq 0x18(%rax,%rcx,8), %rcx
andq %r12, %rcx
shlq $0x4, %rcx
leaq (%rdx,%rcx), %rax
movq (%rdx,%rcx), %rdx
movl $0x8, %ecx
cmpq %r12, %rdx
je 0x13891
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r12, %rdx
je 0x13891
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r12, %rdx
je 0x13891
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r12, %rdx
jne 0x138f4
movq (%rax,%rcx), %r13
testq %r13, %r13
jne 0x138c1
movabsq $-0x1e682f89ce03d7c8, %rdi # imm = 0xE197D07631FC2838
movq %r12, %rsi
callq 0xf3f85
movq %rax, %r13
leaq 0x18bdea(%rip), %rdi    # 0x19f6a0
movq %r12, %rsi
movq %rax, %rdx
callq 0x12128c
movq %r15, %rdi
callq *0x20(%r13)
movq 0x50(%r14), %rsi
movq %rax, %rdi
callq 0xe39f
leaq 0x13c389(%rip), %rsi    # 0x14fc64
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0xee2a
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
xorl %eax, %eax
retq
xorl %r13d, %r13d
jmp 0x13895
// File: /workspace/github_c_makefile_star2_O1/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 0x11d81
cmpq $0x0, 0x50(%r15)
je 0x13936
leaq 0x13b08f(%rip), %rsi    # 0x14e9ad
movq %rbx, %rdi
xorl %eax, %eax
callq 0xee2a
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x13810
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/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 0x143a7
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %r15
cmpq $0x0, 0x10(%rdi)
je 0x14399
movq %rcx, %rbx
movq %rsi, %r14
leaq 0x123ffa(%rip), %r12    # 0x13835e
xorl %ebp, %ebp
movq 0x8(%r15), %rax
movq (%rax,%rbp,8), %r13
testb $0x1, %dl
jne 0x14380
movq %rbx, %rdi
movq %r12, %rsi
xorl %eax, %eax
callq 0xee2a
movq %r13, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x137cb
incq %rbp
xorl %edx, %edx
cmpq 0x10(%r15), %rbp
jb 0x14366
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_O1/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 0x14414
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %r15
cmpq $0x0, 0x10(%rdi)
je 0x14406
movq %rcx, %rbx
movq %rsi, %r14
leaq 0x123f8d(%rip), %r12    # 0x13835e
xorl %ebp, %ebp
movq 0x8(%r15), %rax
movq (%rax,%rbp,8), %r13
testb $0x1, %dl
jne 0x143ed
movq %rbx, %rdi
movq %r12, %rsi
xorl %eax, %eax
callq 0xee2a
movq %r13, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x138f9
incq %rbp
xorl %edx, %edx
cmpq 0x10(%r15), %rbp
jb 0x143d3
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_O1/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 0x14481
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %r15
cmpq $0x0, 0x10(%rdi)
je 0x14473
movq %rcx, %rbx
movq %rsi, %r14
leaq 0x123f20(%rip), %r12    # 0x13835e
xorl %ebp, %ebp
movq 0x8(%r15), %rax
movq (%rax,%rbp,8), %r13
testb $0x1, %dl
jne 0x1445a
movq %rbx, %rdi
movq %r12, %rsi
xorl %eax, %eax
callq 0xee2a
movq %r13, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x13810
incq %rbp
xorl %edx, %edx
cmpq 0x10(%r15), %rbp
jb 0x14440
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_O1/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 %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movabsq $0x100000001b3, %rbx    # imm = 0x100000001B3
movq (%rdi), %r12
movq 0x10(%rdi), %rbp
movl $0xff, %r15d
movq %r12, %rax
andq %r15, %rax
movabsq $-0x340d631b7bdddcdb, %rcx # imm = 0xCBF29CE484222325
xorq %rax, %rcx
imulq %rbx, %rcx
movl %r12d, %eax
shrl $0x8, %eax
movl $0xff, %esi
andl %esi, %eax
xorq %rcx, %rax
imulq %rbx, %rax
movl %r12d, %ecx
shrl $0x10, %ecx
andl %esi, %ecx
xorq %rax, %rcx
imulq %rbx, %rcx
movl %r12d, %eax
shrl $0x18, %eax
xorq %rcx, %rax
imulq %rbx, %rax
movq %r12, %rcx
shrq $0x20, %rcx
andq %r15, %rcx
xorq %rax, %rcx
imulq %rbx, %rcx
movq %r12, %rax
shrq $0x28, %rax
andq %r15, %rax
xorq %rcx, %rax
imulq %rbx, %rax
movq %r12, %rcx
shrq $0x30, %rcx
andq %r15, %rcx
xorq %rax, %rcx
imulq %rbx, %rcx
shrq $0x38, %r12
xorq %rcx, %r12
imulq %rbx, %r12
testq %rbp, %rbp
je 0x145ce
movq 0x8(%rdi), %r13
xorl %r14d, %r14d
movq (%r13,%r14,8), %rdi
callq 0x13615
movl $0xff, %esi
movq %rax, %rcx
andq %r15, %rcx
xorq %r12, %rcx
imulq %rbx, %rcx
movl %eax, %edx
shrl $0x8, %edx
andl %esi, %edx
xorq %rcx, %rdx
imulq %rbx, %rdx
movl %eax, %ecx
shrl $0x10, %ecx
andl %esi, %ecx
xorq %rdx, %rcx
imulq %rbx, %rcx
movl %eax, %edx
shrl $0x18, %edx
xorq %rcx, %rdx
imulq %rbx, %rdx
movq %rax, %rcx
shrq $0x20, %rcx
andq %r15, %rcx
xorq %rdx, %rcx
imulq %rbx, %rcx
movq %rax, %rdx
shrq $0x28, %rdx
andq %r15, %rdx
xorq %rcx, %rdx
imulq %rbx, %rdx
movq %rax, %rcx
shrq $0x30, %rcx
andq %r15, %rcx
xorq %rdx, %rcx
imulq %rbx, %rcx
shrq $0x38, %rax
xorq %rcx, %rax
incq %r14
imulq %rbx, %rax
movq %rax, %r12
cmpq %r14, %rbp
jne 0x1453b
jmp 0x145d1
movq %r12, %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/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 %r13
pushq %r12
pushq %rbx
movq %rdx, %r14
movq %rdi, %rbx
movq 0x50(%rdi), %r12
testq %r12, %r12
je 0x14bb8
movq %rsi, %r15
movq 0x38(%r12), %rax
testq %rax, %rax
je 0x14ae9
movq 0x8(%rax), %rsi
leaq 0x8(%r14), %rdi
callq 0xd3f11
testq %rax, %rax
je 0x14add
movq (%rax), %rax
jmp 0x14adf
xorl %eax, %eax
testq %rax, %rax
je 0x14ae9
movq %rax, 0x28(%r12)
movq 0x50(%rbx), %rax
movq 0x38(%rax), %rax
testq %rax, %rax
je 0x14bb8
movq 0x38(%rbx), %rcx
testq %rcx, %rcx
je 0x14bb8
movq 0x8(%rax), %rax
cmpq 0x8(%rcx), %rax
jne 0x14bb8
movq (%r15), %r12
leaq 0x18ab81(%rip), %rax    # 0x19f6a0
movl 0x18ab7b(%rip), %ecx    # 0x19f6a0
movslq %ecx, %rcx
leaq (%rcx,%rcx,2), %rcx
movq 0x20(%rax,%rcx,8), %rdx
movq 0x18(%rax,%rcx,8), %rcx
andq %r12, %rcx
shlq $0x4, %rcx
leaq (%rdx,%rcx), %rax
movq (%rdx,%rcx), %rdx
movl $0x8, %ecx
cmpq %r12, %rdx
je 0x14b7d
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r12, %rdx
je 0x14b7d
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r12, %rdx
je 0x14b7d
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r12, %rdx
jne 0x14bfe
movq (%rax,%rcx), %r13
testq %r13, %r13
jne 0x14bad
movabsq $-0x1e682f89ce03d7c8, %rdi # imm = 0xE197D07631FC2838
movq %r12, %rsi
callq 0xf3f85
movq %rax, %r13
leaq 0x18aafe(%rip), %rdi    # 0x19f6a0
movq %r12, %rsi
movq %rax, %rdx
callq 0x12128c
movq %r15, %rdi
callq *0x30(%r13)
movq %rax, 0x28(%rbx)
leaq 0x58(%rbx), %rdi
movq %r14, %rdx
callq 0x1429b
movq 0x38(%rbx), %rax
testq %rax, %rax
je 0x14bf2
movq 0x8(%rax), %rsi
addq $0x8, %r14
movq %r14, %rdi
callq 0xd3f11
testq %rax, %rax
je 0x14be7
movq (%rax), %rax
jmp 0x14be9
xorl %eax, %eax
testq %rax, %rax
je 0x14bf2
movq %rax, 0x28(%rbx)
xorl %eax, %eax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
xorl %r13d, %r13d
jmp 0x14b81
// File: /workspace/github_c_makefile_star2_O1/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:
movabsq $0x213393bef2495d15, %rax # imm = 0x213393BEF2495D15
movq 0x50(%rdi), %rcx
testq %rcx, %rcx
je 0x14c23
cmpq %rax, 0x28(%rcx)
jne 0x14c23
movq %rdx, 0x28(%rcx)
cmpq $0x0, 0x68(%rdi)
je 0x14c47
xorl %ecx, %ecx
movq 0x60(%rdi), %rsi
movq (%rsi,%rcx,8), %rsi
cmpq %rax, 0x28(%rsi)
jne 0x14c3e
movq %rdx, 0x28(%rsi)
incq %rcx
cmpq 0x68(%rdi), %rcx
jb 0x14c2c
cmpq %rax, 0x28(%rdi)
jne 0x14c51
movq %rdx, 0x28(%rdi)
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_signature_s_expand_ret_x
er_t xoico_signature_s_expand_ret_x( const xoico_signature_s* o, const xoico_host* host, x_sink* sink )
{
    // xoico_signature.x:92:5
    
    if( o->typespec_ret.transient && o->typespec_ret.transient->cast_to_var )
    {
        tp_t var_name = o->typespec_ret.transient->cast_to_var;
        x_sink_push_fa(sink,"#<sc_t> ", xoico_host_a_nameof(host,var_name ) );
    }
    else
    {
        BLM_TRY(xoico_typespec_s_expand_x(&(o->typespec_ret),host, sink ))
    }
    return  0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdx, %rbx
movq %rsi, %r14
movq 0x38(%rdi), %rax
testq %rax, %rax
je 0x14d3f
movq 0x10(%rax), %r15
testq %r15, %r15
je 0x14d3f
movq (%r14), %r12
leaq 0x18aa0b(%rip), %rax    # 0x19f6a0
movl 0x18aa05(%rip), %ecx    # 0x19f6a0
movslq %ecx, %rcx
leaq (%rcx,%rcx,2), %rcx
movq 0x20(%rax,%rcx,8), %rdx
movq 0x18(%rax,%rcx,8), %rcx
andq %r12, %rcx
shlq $0x4, %rcx
leaq (%rdx,%rcx), %rax
movq (%rdx,%rcx), %rdx
movl $0x8, %ecx
cmpq %r12, %rdx
je 0x14cef
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r12, %rdx
je 0x14cef
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r12, %rdx
je 0x14cef
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r12, %rdx
jne 0x14d5a
movq (%rax,%rcx), %r13
testq %r13, %r13
jne 0x14d1f
movabsq $-0x1e682f89ce03d7c8, %rdi # imm = 0xE197D07631FC2838
movq %r12, %rsi
callq 0xf3f85
movq %rax, %r13
leaq 0x18a98c(%rip), %rdi    # 0x19f6a0
movq %r12, %rsi
movq %rax, %rdx
callq 0x12128c
movq %r14, %rdi
movq %r15, %rsi
callq *0x48(%r13)
leaq 0x123713(%rip), %rsi    # 0x138443
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0xee2a
jmp 0x14d4e
addq $0x20, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x11d81
xorl %eax, %eax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
xorl %r13d, %r13d
jmp 0x14cf3
// File: /workspace/github_c_makefile_star2_O1/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
addq $0x78, %rdi
callq 0xd4806
testq %rax, %rax
je 0x15c37
movq (%rax), %rax
jmp 0x15c39
xorl %eax, %eax
testq %rax, %rax
je 0x15c65
movq (%rax), %rcx
movabsq $-0x231a5c50432e84f2, %rdx # imm = 0xDCE5A3AFBCD17B0E
cmpq %rdx, %rcx
je 0x15c67
movabsq $0x320f5368e957d0a2, %rdx # imm = 0x320F5368E957D0A2
cmpq %rdx, %rcx
jne 0x15c65
addq $0x8, %rax
jmp 0x15c67
xorl %eax, %eax
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O1/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 %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
movabsq $0x100000001b3, %r14    # imm = 0x100000001B3
movq (%rdi), %rax
movq 0x8(%rdi), %r12
movl $0xff, %r15d
movq %rax, %rcx
andq %r15, %rcx
movabsq $-0x340d631b7bdddcdb, %rdx # imm = 0xCBF29CE484222325
xorq %rcx, %rdx
imulq %r14, %rdx
movl %eax, %ecx
shrl $0x8, %ecx
movl $0xff, %ebp
andl %ebp, %ecx
xorq %rdx, %rcx
imulq %r14, %rcx
movl %eax, %edx
shrl $0x10, %edx
andl %ebp, %edx
xorq %rcx, %rdx
imulq %r14, %rdx
movl %eax, %ecx
shrl $0x18, %ecx
xorq %rdx, %rcx
imulq %r14, %rcx
movq %rax, %rdx
shrq $0x20, %rdx
andq %r15, %rdx
xorq %rcx, %rdx
imulq %r14, %rdx
movq %rax, %rcx
shrq $0x28, %rcx
andq %r15, %rcx
xorq %rdx, %rcx
imulq %r14, %rcx
movq %rax, %rdx
shrq $0x30, %rdx
andq %r15, %rdx
xorq %rcx, %rdx
imulq %r14, %rdx
shrq $0x38, %rax
xorq %rdx, %rax
imulq %r14, %rax
movq %r12, %rcx
andq %r15, %rcx
xorq %rax, %rcx
imulq %r14, %rcx
movl %r12d, %eax
shrl $0x8, %eax
andl %ebp, %eax
xorq %rcx, %rax
imulq %r14, %rax
movl %r12d, %ecx
shrl $0x10, %ecx
andl %ebp, %ecx
xorq %rax, %rcx
imulq %r14, %rcx
movl %r12d, %eax
shrl $0x18, %eax
xorq %rcx, %rax
imulq %r14, %rax
movq %r12, %rcx
shrq $0x20, %rcx
andq %r15, %rcx
xorq %rax, %rcx
imulq %r14, %rcx
movq %r12, %rax
shrq $0x28, %rax
andq %r15, %rax
xorq %rcx, %rax
imulq %r14, %rax
movq %r12, %rcx
shrq $0x30, %rcx
andq %r15, %rcx
xorq %rax, %rcx
imulq %r14, %rcx
shrq $0x38, %r12
xorq %rcx, %r12
imulq %r14, %r12
movq 0x18(%rdi), %rdi
testq %rdi, %rdi
je 0x18878
callq 0x1814e
movq %rax, %rcx
andq %r15, %rcx
xorq %r12, %rcx
imulq %r14, %rcx
movl %eax, %edx
shrl $0x8, %edx
andl %ebp, %edx
xorq %rcx, %rdx
imulq %r14, %rdx
movl %eax, %ecx
shrl $0x10, %ecx
andl %ebp, %ecx
xorq %rdx, %rcx
imulq %r14, %rcx
movl %eax, %edx
shrl $0x18, %edx
xorq %rcx, %rdx
imulq %r14, %rdx
movq %rax, %rcx
shrq $0x20, %rcx
andq %r15, %rcx
xorq %rdx, %rcx
imulq %r14, %rcx
movq %rax, %rdx
shrq $0x28, %rdx
andq %r15, %rdx
xorq %rcx, %rdx
imulq %r14, %rdx
movq %rax, %rcx
shrq $0x30, %rcx
andq %r15, %rcx
xorq %rdx, %rcx
imulq %r14, %rcx
shrq $0x38, %rax
xorq %rcx, %rax
imulq %r14, %rax
movq %rax, %r12
movzbl 0x20(%rbx), %eax
xorq %r12, %rax
imulq %r14, %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_compiler_s_is_body
bl_t xoico_compiler_s_is_body( const xoico_compiler_s* o, tp_t name )
{
    // xoico_compiler.x:188:5
    
    const xoico* item = xoico_compiler_s_get_const_item(o,name );
    if( item && ( item->_ == ((tp_t)(TYPEOF_xoico_body_s)) ) ) return  true;
    return  false;
}

// Assembly:
pushq %rax
addq $0x78, %rdi
callq 0xd4806
testq %rax, %rax
je 0x18e9b
movq (%rax), %rcx
jmp 0x18e9d
xorl %ecx, %ecx
testq %rcx, %rcx
je 0x18eb3
movb $0x1, %al
movabsq $0x12dc29d312ad56e4, %rdx # imm = 0x12DC29D312AD56E4
cmpq %rdx, (%rcx)
je 0x18eb5
xorl %eax, %eax
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O1/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_compiler_s_is_feature
bl_t xoico_compiler_s_is_feature( const xoico_compiler_s* o, tp_t name )
{
    // xoico_compiler.x:210:5
    
    const xoico* item = xoico_compiler_s_get_const_item(o,name );
    if( item && ( item->_ == ((tp_t)(TYPEOF_xoico_feature_s)) ) ) return  true;
    return  false;
}

// Assembly:
pushq %rax
addq $0x78, %rdi
callq 0xd4806
testq %rax, %rax
je 0x19fbf
movq (%rax), %rcx
jmp 0x19fc1
xorl %ecx, %ecx
testq %rcx, %rcx
je 0x19fd7
movb $0x1, %al
movabsq $0x320f5368e957d0a2, %rdx # imm = 0x320F5368E957D0A2
cmpq %rdx, (%rcx)
je 0x19fd9
xorl %eax, %eax
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O1/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 %r13
pushq %r12
pushq %rbx
subq $0x30, %rsp
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x18e9a4(%rip), %rax    # 0x1a8dd0
movq (%rax), %rsi
movq %rsp, %r15
movq %r15, %rdi
callq 0xe0431
movq $0x0, 0x10(%r15)
cmpq $0x0, 0x10(%rbx)
jne 0x1a5e2
movq (%r14), %r15
leaq 0x185249(%rip), %r13    # 0x19f6a0
movl 0x185243(%rip), %eax    # 0x19f6a0
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r13,%rax,8), %rcx
movq 0x18(%r13,%rax,8), %rdx
andq %r15, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r15, %rdx
je 0x1a4b4
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r15, %rdx
je 0x1a4b4
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r15, %rdx
je 0x1a4b4
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r15, %rdx
jne 0x1a5fa
movq (%rax,%rcx), %r12
testq %r12, %r12
jne 0x1a4e4
movabsq $-0x1e682f89ce03d7c8, %rdi # imm = 0xE197D07631FC2838
movq %r15, %rsi
callq 0xf3f85
movq %rax, %r12
leaq 0x1851c7(%rip), %rdi    # 0x19f6a0
movq %r15, %rsi
movq %rax, %rdx
callq 0x12128c
movq %r14, %rdi
callq *0x20(%r12)
movq %rax, %r15
movq (%r14), %r12
movl 0x1851a8(%rip), %eax    # 0x19f6a0
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r13,%rax,8), %rcx
movq 0x18(%r13,%rax,8), %rdx
andq %r12, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r12, %rdx
je 0x1a54f
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r12, %rdx
je 0x1a54f
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r12, %rdx
je 0x1a54f
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r12, %rdx
jne 0x1a602
movq (%rax,%rcx), %r13
testq %r13, %r13
jne 0x1a57f
movabsq $-0x1e682f89ce03d7c8, %rdi # imm = 0xE197D07631FC2838
movq %r12, %rsi
callq 0xf3f85
movq %rax, %r13
leaq 0x18512c(%rip), %rdi    # 0x19f6a0
movq %r12, %rsi
movq %rax, %rdx
callq 0x12128c
movq %r14, %rdi
callq *0x30(%r13)
movq %r15, %rdi
movq %rax, %rsi
callq 0xe39f
movq %rax, %r14
movq 0x8(%rbx), %rsi
movq %r15, %rdi
callq 0xe39f
leaq 0x11e7d5(%rip), %rdi    # 0x138d7c
movq %r14, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x114d03
movq %rsp, %rdi
movabsq $-0x503db0e6e1c2e704, %rdx # imm = 0xAFC24F191E3D18FC
xorl %esi, %esi
movq %rax, %rcx
callq 0xe0676
movq 0x8(%rax), %rsi
addq $0x140, %r15            # imm = 0x140
movq %r15, %rdi
callq 0xddb52
movq %rax, 0x10(%rbx)
movq %rsp, %rdi
callq 0xe0b30
xorl %eax, %eax
addq $0x30, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
xorl %r12d, %r12d
jmp 0x1a4b8
xorl %r13d, %r13d
jmp 0x1a553
// File: /workspace/github_c_makefile_star2_O1/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 %r13
pushq %r12
pushq %rbx
movq %rsi, %rbx
movq %rdi, %r14
movq (%rsi), %r15
leaq 0x1841d5(%rip), %r13    # 0x19f488
movl 0x1841cf(%rip), %eax    # 0x19f488
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r13,%rax,8), %rcx
movq 0x18(%r13,%rax,8), %rdx
andq %r15, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r15, %rdx
je 0x1b310
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r15, %rdx
je 0x1b310
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r15, %rdx
je 0x1b310
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r15, %rdx
jne 0x1b441
movq (%rax,%rcx), %r12
testq %r12, %r12
jne 0x1b340
movabsq $0x5d91f496b6479859, %rdi # imm = 0x5D91F496B6479859
movq %r15, %rsi
callq 0xf3f85
movq %rax, %r12
leaq 0x184153(%rip), %rdi    # 0x19f488
movq %r15, %rsi
movq %rax, %rdx
callq 0x12128c
movq %rbx, %rdi
callq *0x20(%r12)
movq %rax, %r15
leaq 0x78(%r14), %r12
movq %r12, %rdi
movq %rax, %rsi
callq 0xd4857
testb %al, %al
je 0x1b427
movq (%rbx), %r12
movl 0x18411d(%rip), %eax    # 0x19f488
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r13,%rax,8), %rcx
movq 0x18(%r13,%rax,8), %rdx
andq %r12, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r12, %rdx
je 0x1b3c2
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r12, %rdx
je 0x1b3c2
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r12, %rdx
je 0x1b3c2
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r12, %rdx
jne 0x1b449
movq (%rax,%rcx), %r13
testq %r13, %r13
jne 0x1b3f2
movabsq $0x5d91f496b6479859, %rdi # imm = 0x5D91F496B6479859
movq %r12, %rsi
callq 0xf3f85
movq %rax, %r13
leaq 0x1840a1(%rip), %rdi    # 0x19f488
movq %r12, %rsi
movq %rax, %rdx
callq 0x12128c
movq %rbx, %rdi
callq *0x90(%r13)
movq %rax, %rbx
movq %r14, %rdi
movq %r15, %rsi
callq 0xe39f
leaq 0x11f9c5(%rip), %rsi    # 0x13add6
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x13591
movq %r12, %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0xd45e4
xorl %eax, %eax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
xorl %r12d, %r12d
jmp 0x1b314
xorl %r13d, %r13d
jmp 0x1b3c6