// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_che_s_inspect_expression
er_t xoico_che_s_inspect_expression( xoico_che_s* o, x_source* source )
{
    // xoico_che.x:1707:1
    BLM_INIT_LEVEL(0);
    BLM_TRY(x_source_parse_fa(source,"\?\?" ))
    
    st_s* st = ((st_s*)BLM_LEVEL_T_PUSH(0,st_s,st_s_create()));
    xoico_che_result_arr_s* result_local = ((xoico_che_result_arr_s*)BLM_LEVEL_T_PUSH(0,xoico_che_result_arr_s,xoico_che_result_arr_s_create()));
    xoico_typespec_s* typespec = ((xoico_typespec_s*)BLM_LEVEL_T_PUSH(0,xoico_typespec_s,xoico_typespec_s_create()));
    BLM_TRY(x_source_parse_fa(source," #until';' ", st ))
    BLM_TRY(x_source_parse_fa(source,";" ))
    bcore_msg_fa( " \?? #<sc_t>;\n", st->sc );
    if( xoico_che_s_trans_expression(o,((x_source*)BLM_LEVEL_A_PUSH(0,x_source_create_from_fa("#<st_s*>;", st ))),((xoico_che_result*)( result_local)), typespec ) )
    {
        bcore_error_pop_to_sink(((bcore_sink*)(((x_sink*)(x_sink_stdout())) )));
        bcore_msg_fa( "\n" );
    }
    else
    {BLM_INIT_LEVEL(1);
        if( st->size == 0 ) BLM_RETURNV(er_t, x_source_parse_error_fa(source,"Variable name expected." ))
        bcore_msg_fa( "--> #<sc_t>;\n", ((st_s*)BLM_LEVEL_T_PUSH(1,st_s,xoico_che_result_a_create_st(((const xoico_che_result*)(result_local)))))->sc );
    
        if( typespec->type )
        {
            bcore_msg_fa( "Expression yields typespec:\n" );
            bcore_msg_fa( "  access_class : #<sc_t>\n",  ifnameof( typespec->access_class ) );
            bcore_msg_fa( "  type         : #<sc_t>\n", xoico_che_s_nameof(o,typespec->type ) );
            bcore_msg_fa( "  indirection  : #<sz_t>\n", typespec->indirection );
            bcore_msg_fa( "  flags        : " );
            if( typespec->flag_static   ) bcore_msg_fa( "static " );
            if( typespec->flag_volatile ) bcore_msg_fa( "volatile " );
            if( typespec->flag_restrict ) bcore_msg_fa( "restrict " );
            if( typespec->flag_obliv    ) bcore_msg_fa( "obliv " );
            if( typespec->flag_aware    ) bcore_msg_fa( "aware " );
            if( typespec->flag_scope    ) bcore_msg_fa( "scope " );
            if( typespec->flag_addressable ) bcore_msg_fa( "addressable " );
            if( typespec->flag_variadic ) bcore_msg_fa( "variadic " );
            bcore_msg_fa( "\n" );
        }
        else
        {
            bcore_msg_fa( "Expression does not yield a typespec.\n" );
        }
    BLM_DOWN();}
    BLM_RETURNV(er_t, 0)
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
leaq 0x1872a6(%rip), %rax    # 0x1b2330
movq (%rax), %rax
movq %rax, -0x20(%rbp)
leaq -0x50(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xbfe80
movq -0x58(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq $0x0, 0x10(%rax)
movq -0x18(%rbp), %rdi
leaq 0x10c03b(%rip), %rsi    # 0x137100
movb $0x0, %al
callq 0x4a20
movq %rax, -0x60(%rbp)
cmpq $0x0, -0x60(%rbp)
je 0x2b0f5
movq -0x60(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x58(%rbp), %rdi
callq 0xc0720
movq -0x68(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x2b50a
movq -0x20(%rbp), %rax
movq %rax, -0x108(%rbp)
movb $0x0, %al
callq 0xff2e0
movq -0x108(%rbp), %rdi
movq %rax, %rcx
xorl %eax, %eax
movl %eax, %esi
movabsq $-0x503db0e6e1c2e704, %rdx # imm = 0xAFC24F191E3D18FC
callq 0xc01a0
movq %rax, -0x70(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x100(%rbp)
callq 0x35ee0
movq -0x100(%rbp), %rdi
movq %rax, %rcx
xorl %eax, %eax
movl %eax, %esi
movabsq $-0x7850996cdf80346a, %rdx # imm = 0x87AF6693207FCB96
callq 0xc01a0
movq %rax, -0x78(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0xf8(%rbp)
callq 0x5d20
movq -0xf8(%rbp), %rdi
movq %rax, %rcx
xorl %eax, %eax
movl %eax, %esi
movabsq $-0x641110359430e9c5, %rdx # imm = 0x9BEEEFCA6BCF163B
callq 0xc01a0
movq %rax, -0x80(%rbp)
movq -0x18(%rbp), %rdi
movq -0x70(%rbp), %rdx
leaq 0x10bf6a(%rip), %rsi    # 0x137103
movb $0x0, %al
callq 0x4a20
movq %rax, -0x88(%rbp)
cmpq $0x0, -0x88(%rbp)
je 0x2b1d8
movq -0x88(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x58(%rbp), %rdi
callq 0xc0720
movq -0x90(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x2b50a
movq -0x18(%rbp), %rdi
leaq 0x10c9f0(%rip), %rsi    # 0x137bd3
movb $0x0, %al
callq 0x4a20
movq %rax, -0x98(%rbp)
cmpq $0x0, -0x98(%rbp)
je 0x2b222
movq -0x98(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x58(%rbp), %rdi
callq 0xc0720
movq -0xa0(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x2b50a
movq -0x70(%rbp), %rax
movq 0x8(%rax), %rsi
leaq 0x10bede(%rip), %rdi    # 0x13710f
movb $0x0, %al
callq 0x9c9e0
movq -0x10(%rbp), %rax
movq %rax, -0x110(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x70(%rbp), %rsi
leaq 0x10bec4(%rip), %rdi    # 0x13711d
movb $0x0, %al
callq 0x2b520
movq -0x118(%rbp), %rdi
movq %rax, %rdx
xorl %eax, %eax
movl %eax, %esi
callq 0xc0500
movq -0x110(%rbp), %rdi
movq %rax, %rsi
movq -0x78(%rbp), %rdx
movq -0x80(%rbp), %rcx
callq 0x27f50
cmpq $0x0, %rax
je 0x2b2b0
callq 0x2b5c0
movq %rax, %rdi
callq 0x9e510
leaq 0x12777d(%rip), %rdi    # 0x152a21
movb $0x0, %al
callq 0x9c9e0
jmp 0x2b4eb
movq -0x58(%rbp), %rax
movq %rax, -0xa8(%rbp)
leaq -0xd8(%rbp), %rax
movq %rax, -0xe0(%rbp)
movq -0xe0(%rbp), %rdi
movq -0xa8(%rbp), %rsi
callq 0xbfe80
movq -0xe0(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0xa8(%rbp), %rax
movq $0x1, 0x10(%rax)
movq -0x70(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x2b339
movq -0x18(%rbp), %rdi
leaq 0x10be18(%rip), %rsi    # 0x137127
movb $0x0, %al
callq 0x4c80
movq %rax, -0xe8(%rbp)
movq -0xe0(%rbp), %rdi
callq 0xc0720
movq -0xe8(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x2b50a
movq -0xa8(%rbp), %rax
movq %rax, -0x120(%rbp)
movq -0x78(%rbp), %rdi
callq 0x29f30
movq -0x120(%rbp), %rdi
movq %rax, %rcx
movl $0x1, %esi
movabsq $-0x503db0e6e1c2e704, %rdx # imm = 0xAFC24F191E3D18FC
callq 0xc01a0
movq 0x8(%rax), %rsi
leaq 0x10bdc6(%rip), %rdi    # 0x13713f
movb $0x0, %al
callq 0x9c9e0
movq -0x80(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x2b4d1
leaq 0x10bdb7(%rip), %rdi    # 0x13714d
movb $0x0, %al
callq 0x9c9e0
movq -0x80(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x210d0
movq %rax, %rsi
leaq 0x10bdb6(%rip), %rdi    # 0x13716a
movb $0x0, %al
callq 0x9c9e0
movq -0x10(%rbp), %rdi
movq -0x80(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x22840
movq %rax, %rsi
leaq 0x10bdae(%rip), %rdi    # 0x137184
movb $0x0, %al
callq 0x9c9e0
movq -0x80(%rbp), %rax
movq 0x20(%rax), %rsi
leaq 0x10bdb2(%rip), %rdi    # 0x13719e
movb $0x0, %al
callq 0x9c9e0
leaq 0x10bdbe(%rip), %rdi    # 0x1371b8
movb $0x0, %al
callq 0x9c9e0
movq -0x80(%rbp), %rax
testb $0x1, 0x28(%rax)
je 0x2b419
leaq 0x108211(%rip), %rdi    # 0x133623
movb $0x0, %al
callq 0x9c9e0
movq -0x80(%rbp), %rax
testb $0x1, 0x29(%rax)
je 0x2b431
leaq 0x108208(%rip), %rdi    # 0x133632
movb $0x0, %al
callq 0x9c9e0
movq -0x80(%rbp), %rax
testb $0x1, 0x2a(%rax)
je 0x2b449
leaq 0x1081fb(%rip), %rdi    # 0x13363d
movb $0x0, %al
callq 0x9c9e0
movq -0x80(%rbp), %rax
testb $0x1, 0x2b(%rax)
je 0x2b461
leaq 0x10833a(%rip), %rdi    # 0x133794
movb $0x0, %al
callq 0x9c9e0
movq -0x80(%rbp), %rax
testb $0x1, 0x2c(%rax)
je 0x2b479
leaq 0x10831b(%rip), %rdi    # 0x13378d
movb $0x0, %al
callq 0x9c9e0
movq -0x80(%rbp), %rax
testb $0x1, 0x2d(%rax)
je 0x2b491
leaq 0x10bd40(%rip), %rdi    # 0x1371ca
movb $0x0, %al
callq 0x9c9e0
movq -0x80(%rbp), %rax
testb $0x1, 0x2e(%rax)
je 0x2b4a9
leaq 0x10bd2f(%rip), %rdi    # 0x1371d1
movb $0x0, %al
callq 0x9c9e0
movq -0x80(%rbp), %rax
testb $0x1, 0x2f(%rax)
je 0x2b4c1
leaq 0x10bd24(%rip), %rdi    # 0x1371de
movb $0x0, %al
callq 0x9c9e0
leaq 0x127559(%rip), %rdi    # 0x152a21
movb $0x0, %al
callq 0x9c9e0
jmp 0x2b4df
leaq 0x10bd10(%rip), %rdi    # 0x1371e8
movb $0x0, %al
callq 0x9c9e0
leaq -0xe0(%rbp), %rdi
callq 0xc06e0
movq $0x0, -0xf0(%rbp)
movq -0x58(%rbp), %rdi
callq 0xc0720
movq -0xf0(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
nopw (%rax,%rax)