// File: /workspace/github_c_makefile_star2_O2/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 %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r14
movq %rdx, %rdi
callq 0x8f0c3
movq 0x40(%r14), %rax
cmpq $0x2, %rax
jl 0xf431
addq $0x8, %r14
leaq 0x9af97(%rip), %rsi     # 0xaa3c6
jmp 0xf443
cmpq $0x0, 0x38(%r14)
je 0xf458
addq $0x8, %r14
leaq 0x9afb7(%rip), %rsi     # 0xaa3fa
movq %r14, %rdi
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0xf256
movabsq $-0x2c53c3baa9910217, %r12 # imm = 0xD3AC3C45566EFDE9
cmpq $0x1, %rax
jne 0xf47f
cmpq %r12, 0x30(%r14)
jne 0xf47f
leaq 0x9afb8(%rip), %rsi     # 0xaa42d
movq %rbx, %rdi
xorl %eax, %eax
callq 0x8f4ef
cmpb $0x0, 0x4c(%r14)
je 0xf48f
leaq 0x9afa8(%rip), %rsi     # 0xaa435
jmp 0xf49d
cmpb $0x1, 0x4b(%r14)
jne 0xf4a7
leaq 0x9af9f(%rip), %rsi     # 0xaa43c
movq %rbx, %rdi
xorl %eax, %eax
callq 0x8f4ef
movq 0x28(%r14), %rsi
movq %r15, %rdi
callq 0xdf58
leaq 0x9af89(%rip), %rsi     # 0xaa443
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x8f4ef
cmpq $0x1, 0x40(%r14)
jne 0xf50d
movq 0x30(%r14), %rax
leaq 0x9af73(%rip), %rsi     # 0xaa44c
movabsq $0x65c9718e19e3df34, %rcx # imm = 0x65C9718E19E3DF34
cmpq %rcx, %rax
je 0xf503
movabsq $-0x12e90733f18038df, %rcx # imm = 0xED16F8CC0E7FC721
cmpq %rcx, %rax
je 0xf503
cmpq %r12, %rax
jne 0xf54c
leaq 0x9af4d(%rip), %rsi     # 0xaa450
movq %rbx, %rdi
xorl %eax, %eax
callq 0x8f4ef
movq 0x50(%r14), %rsi
movq %r15, %rdi
callq 0xdf58
leaq 0xb35e9(%rip), %rsi     # 0xc2b09
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x8f4ef
leaq 0x9f394(%rip), %rsi     # 0xae8c8
movq %rbx, %rdi
xorl %eax, %eax
callq 0x8f4ef
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
addq $0x8, %r14
leaq 0x9aefc(%rip), %rsi     # 0xaa453
jmp 0xf443