// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_arg_s_to_self_item_st
er_t xoico_arg_s_to_self_item_st( const xoico_arg_s* o, const xoico_host* host, st_s* st )
{
    // xoico_arg.x:121:1
    
    st_s_clear(st);
    if( o->typespec.indirection > 1 ) return  x_source_point_s_parse_error_fa(&(o->source_point),"Indirection > 1 is not allowed as functor argument." );
    if( o->typespec.transient       ) return  x_source_point_s_parse_error_fa(&(o->source_point),"Transient type is not allowed as functor argument." );
    
    if( o->typespec.indirection == 1 && o->typespec.access_class == TYPEOF_mutable )
    {
        st_s_push_fa(st,"hidden " );
    }
    
    if( o->typespec.flag_aware )
    {
        st_s_push_fa(st,"aware " );
    }
    else if( o->typespec.flag_obliv )
    {
        st_s_push_fa(st,"obliv " );
    }
    
    st_s_push_fa(st,"#<sc_t> ", xoico_host_a_nameof(host,o->typespec.type ) );
    
    if( o->typespec.indirection == 1 )
    {
        switch( o->typespec.access_class )
        {
            case TYPEOF_discardable: st_s_push_fa(st,"=> " ); break;
            case TYPEOF_mutable:     st_s_push_fa(st,"* "  ); break;
            case TYPEOF_const:       st_s_push_fa(st,"=> " ); break;
            default: return  x_source_point_s_parse_error_fa(&(o->source_point),"Functor argument: Unhandled access class." ); break;
        }
    }
    
    st_s_push_fa(st,"#<sc_t>", xoico_host_a_nameof(host,o->name ) );
    st_s_push_fa(st,";" );
    
    return  0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0xffb50
movq -0x10(%rbp), %rax
cmpq $0x1, 0x40(%rax)
jle 0x80d7
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
leaq 0x12b657(%rip), %rsi    # 0x13371e
movb $0x0, %al
callq 0x7d20
movq %rax, -0x8(%rbp)
jmp 0x8294
movq -0x10(%rbp), %rax
cmpq $0x0, 0x38(%rax)
je 0x8101
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
leaq 0x12b661(%rip), %rsi    # 0x133752
movb $0x0, %al
callq 0x7d20
movq %rax, -0x8(%rbp)
jmp 0x8294
movq -0x10(%rbp), %rax
cmpq $0x1, 0x40(%rax)
jne 0x8132
movq -0x10(%rbp), %rax
movabsq $-0x2c53c3baa9910217, %rcx # imm = 0xD3AC3C45566EFDE9
cmpq %rcx, 0x30(%rax)
jne 0x8132
movq -0x20(%rbp), %rdi
leaq 0x12b65a(%rip), %rsi    # 0x133785
movb $0x0, %al
callq 0x100210
movq -0x10(%rbp), %rax
testb $0x1, 0x4c(%rax)
je 0x8150
movq -0x20(%rbp), %rdi
leaq 0x12b646(%rip), %rsi    # 0x13378d
movb $0x0, %al
callq 0x100210
jmp 0x816e
movq -0x10(%rbp), %rax
testb $0x1, 0x4b(%rax)
je 0x816c
movq -0x20(%rbp), %rdi
leaq 0x12b62f(%rip), %rsi    # 0x133794
movb $0x0, %al
callq 0x100210
jmp 0x816e
movq -0x20(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x5a60
movq -0x28(%rbp), %rdi
movq %rax, %rdx
leaq 0x12b606(%rip), %rsi    # 0x13379b
movb $0x0, %al
callq 0x100210
movq -0x10(%rbp), %rax
cmpq $0x1, 0x40(%rax)
jne 0x824c
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x30(%rbp)
movabsq $-0x2c53c3baa9910217, %rcx # imm = 0xD3AC3C45566EFDE9
subq %rcx, %rax
je 0x8206
jmp 0x81c8
movq -0x30(%rbp), %rax
movabsq $-0x12e90733f18038df, %rcx # imm = 0xED16F8CC0E7FC721
subq %rcx, %rax
je 0x81f2
jmp 0x81dd
movq -0x30(%rbp), %rax
movabsq $0x65c9718e19e3df34, %rcx # imm = 0x65C9718E19E3DF34
subq %rcx, %rax
je 0x821a
jmp 0x822e
movq -0x20(%rbp), %rdi
leaq 0x12b5a7(%rip), %rsi    # 0x1337a4
movb $0x0, %al
callq 0x100210
jmp 0x824a
movq -0x20(%rbp), %rdi
leaq 0x12b597(%rip), %rsi    # 0x1337a8
movb $0x0, %al
callq 0x100210
jmp 0x824a
movq -0x20(%rbp), %rdi
leaq 0x12b57f(%rip), %rsi    # 0x1337a4
movb $0x0, %al
callq 0x100210
jmp 0x824a
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
leaq 0x12b56e(%rip), %rsi    # 0x1337ab
movb $0x0, %al
callq 0x7d20
movq %rax, -0x8(%rbp)
jmp 0x8294
jmp 0x824c
movq -0x20(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rsi
callq 0x5a60
movq -0x38(%rbp), %rdi
movq %rax, %rdx
leaq 0x146cb2(%rip), %rsi    # 0x14ef25
movb $0x0, %al
callq 0x100210
movq -0x20(%rbp), %rdi
leaq 0x12f94e(%rip), %rsi    # 0x137bd3
movb $0x0, %al
callq 0x100210
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nop