// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: bcore_shell_op_parse_param
bl_t bcore_shell_op_parse_param( bcore_shell_op* o, x_source* source, bcore_sink* sink )
{
    // bcore_shell.h:126:5
    
    sz_t direct_index = 0;
    BLM_TRY_EXIT(x_source_parse_fa(source,"#skip' \t'" ))
    while( !x_source_eos(source) && !x_source_parse_bl(source,"#?([0]==';'||[0]=='\n')" ) )
    {
        x_stamp* stamp =((x_stamp*)( o));
    
        /// addressing parameter via name
        if( x_source_parse_bl(source,"#?([0]=='-'&&(([1]>='A'&&[1]<='Z')||([1]>='a'&&[1]<='z')))" ) )
        {BLM_INIT_LEVEL(2);
            st_s name;BLM_T_INIT_SPUSH(st_s, &name);;
            BLM_TRY_EXIT(x_source_parse_fa(source,"-#name", &name ))
            tp_t tp_name = btypeof( name.sc );
            sz_t index = 0;
            for(index = 0; index < x_stamp_size(stamp); index++ ) if( x_stamp_name(stamp,index ) == tp_name ) break;
            if( index == x_stamp_size(stamp) )
            {
                bcore_sink_a_push_fa(sink,"Invalid parameter '#<sc_t>'\n", name.sc );
                BLM_RETURNV(bl_t, false)
            }
            BLM_TRY_EXIT(x_source_parse_fa(source,"#skip' '" ))
    
            tp_t type = x_stamp_type(stamp,tp_name );
    
            switch( type )
            {
                case ((tp_t)(TYPEOF_bl_t)):
                {
                    if( x_source_parse_bl(source,"#?'true'" ) )
                    {
                        BLM_TRY_EXIT(x_stamp_set_sr(stamp,tp_name, sr_bl(true ) ))
                    }
                    else if( x_source_parse_bl(source,"#?'false'" ) )
                    {
                        BLM_TRY_EXIT(x_stamp_set_sr(stamp,tp_name, sr_bl(false ) ))
                    }
                    else
                    {
                        BLM_TRY_EXIT(x_stamp_set_sr(stamp,tp_name, sr_bl(true ) ))
                    }
                }
                break;
    
                case ((tp_t)(TYPEOF_sz_t)):
                case ((tp_t)(TYPEOF_uz_t)):
                case ((tp_t)(TYPEOF_f3_t)):
                {
                    f3_t v_f3 = 0;
                    BLM_TRY_EXIT(x_source_parse_fa(source,"#<f3_t*>", &v_f3 ))
                    BLM_TRY_EXIT(x_stamp_set_sr(stamp,tp_name, sr_f3(v_f3 ) ))
                }
                break;
    
                case ((tp_t)(TYPEOF_st_s)):
                {BLM_INIT_LEVEL(5);
                    st_s st;BLM_T_INIT_SPUSH(st_s, &st);;
                    if( x_source_parse_bl(source,"#=?'\"'" ) )
                    {
                        BLM_TRY_EXIT(x_source_parse_fa(source,"#string", (&(st)) ))
                    }
                    else
                    {
                        BLM_TRY_EXIT(x_source_parse_fa(source,"#name", (&(st)) ))
                    }
                    BLM_TRY_EXIT(x_stamp_set_sr(stamp,tp_name, sr_awc(((const x_inst*)(&( st )))) ))
                BLM_DOWN();}
                break;
    
                default:
                {
                    bcore_sink_a_push_fa(sink,"Parameter '#<sc_t>' is of unhandled type '#<sc_t>'.\n", name.sc, bnameof( type ) );
                    BLM_RETURNV(bl_t, false)
                }
            }
        BLM_DOWN();}
        else // addressing via index counter
        {BLM_INIT_LEVEL(2);
            if( direct_index >= x_stamp_size(stamp) )
            {
                bcore_sink_a_push_fa(sink,"Passing excess argument. This command has only #<sz_t> arguments.\n", x_stamp_size(stamp) );
                BLM_RETURNV(bl_t, false)
            }
    
            tp_t type = x_stamp_type_i(stamp,direct_index );
            x_inst* inst = ((x_inst*)BLM_LEVEL_TV_PUSH(2,type,x_inst_t_create(type )));
            if( x_btml_t_body_from_source(((x_btml*)( inst)),type, source ) )
            {
                bcore_error_pop_all_to_sink(sink );
                BLM_RETURNV(bl_t, false)
            }
    
            BLM_TRY_EXIT(x_stamp_set_sr_i(stamp,direct_index, sr_tsm(type, ((x_inst*)bcore_fork(inst)) ) ))
            direct_index++;
        BLM_DOWN();}
        BLM_TRY_EXIT(x_source_parse_fa(source,"#skip' \t'" ))
    }
    return  true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x148, %rsp            # imm = 0x148
movq %rdx, 0x20(%rsp)
movq %rsi, %r15
movq %rdi, %r14
leaq 0x82d12(%rip), %rsi     # 0xb4a9e
movq %r15, %rdi
xorl %eax, %eax
callq 0x2ef9c
testq %rax, %rax
je 0x31db4
movq %rax, %rbx
leaq 0xe602b(%rip), %rax     # 0x117dd0
movq (%rax), %rdi
callq 0x71b64
movl %ebx, %edi
callq 0x2dc20
leaq 0x118(%rsp), %rbx
xorl %ebp, %ebp
movq %r15, %rdi
callq 0x2ef3b
movb $0x1, %r12b
testb %al, %al
jne 0x32316
movq %r15, %rdi
leaq 0x82ccd(%rip), %rsi     # 0xb4aa8
callq 0x2ef75
testb %al, %al
jne 0x32316
movq %r15, %rdi
leaq 0x82ccd(%rip), %rsi     # 0xb4abf
callq 0x2ef75
leaq 0xe5fd2(%rip), %rcx     # 0x117dd0
movq (%rcx), %rsi
testb %al, %al
je 0x31eae
movq %rbx, 0x18(%rsp)
movq %rbx, %rdi
callq 0x717f5
movq 0x18(%rsp), %r12
movq $0x2, 0x10(%r12)
leaq 0x30(%rsp), %r13
movq %r13, %rdi
callq 0x8e048
movq %r12, %rdi
movabsq $-0x503db0e6e1c2e704, %rsi # imm = 0xAFC24F191E3D18FC
movq %r13, %rdx
callq 0x71998
movq %r15, %rdi
leaq 0x82caa(%rip), %rsi     # 0xb4afa
movq %r13, %rdx
xorl %eax, %eax
callq 0x2ef9c
testq %rax, %rax
je 0x31e74
movq %rax, %r12
movq 0x18(%rsp), %rdi
callq 0x71b64
movl %r12d, %edi
callq 0x2dc20
movq 0x38(%rsp), %rdi
callq 0x2f020
movq %rax, %r13
xorl %r12d, %r12d
movq %r14, %rdi
callq 0x32863
cmpq %rax, %r12
jge 0x31f3c
movq %r14, %rdi
movq %r12, %rsi
callq 0x32872
cmpq %r13, %rax
je 0x31f3c
incq %r12
jmp 0x31e84
movq %rbx, 0x30(%rsp)
movq %rbx, %rdi
callq 0x717f5
movq 0x30(%rsp), %r12
movq $0x2, 0x10(%r12)
movq %r14, %rdi
callq 0x32863
cmpq %rax, %rbp
jge 0x322c0
movq %r14, %rdi
movq %rbp, %rsi
callq 0x328bc
movq %rax, %r13
movq %rax, %rdi
callq 0x318f1
movq %r12, %rdi
pushq $0x2
popq %rsi
movq %r13, %rdx
movq %rax, %rcx
callq 0x71967
movq %rax, %r12
movq %rax, %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0x36766
testq %rax, %rax
jne 0x322ff
movq %r12, %rdi
callq 0x6026d
movq %rax, %r12
testq %r13, %r13
je 0x320ae
movq %r13, %rdi
callq 0x8cd25
jmp 0x320b0
movq %r14, %rdi
callq 0x32863
cmpq %r12, %rax
je 0x322e0
movq %r15, %rdi
leaq 0x82bc7(%rip), %rsi     # 0xb4b1e
xorl %eax, %eax
callq 0x2ef9c
testq %rax, %rax
je 0x31f78
movq %rax, %r12
movq 0x18(%rsp), %rdi
callq 0x71b64
movl %r12d, %edi
callq 0x2dc20
movq %r14, %rdi
movq %r13, %rsi
callq 0x3288a
movabsq $-0x5fc2af85f419929b, %rcx # imm = 0xA03D507A0BE66D65
cmpq %rcx, %rax
je 0x3201b
movabsq $-0x503db0e6e1c2e704, %rcx # imm = 0xAFC24F191E3D18FC
cmpq %rcx, %rax
je 0x3210b
movabsq $-0x4882601bdca6aefb, %rcx # imm = 0xB77D9FE423595105
cmpq %rcx, %rax
je 0x3201b
movabsq $-0x3f1363e6d8155aed, %rcx # imm = 0xC0EC9C1927EAA513
cmpq %rcx, %rax
je 0x3201b
movabsq $-0x3ac242643d9c35a8, %rcx # imm = 0xC53DBD9BC263CA58
cmpq %rcx, %rax
jne 0x3232b
movq %r15, %rdi
leaq 0x82b43(%rip), %rsi     # 0xb4b27
callq 0x2ef75
testb %al, %al
je 0x32254
leaq 0xe0(%rsp), %rdi
pushq $0x1
popq %rsi
callq 0x8d165
movq (%r14), %rsi
movq 0xf0(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0xe0(%rsp), %xmm0
jmp 0x3207c
andq $0x0, 0x68(%rsp)
movq %r15, %rdi
leaq 0x90984(%rip), %rsi     # 0xc29af
leaq 0x68(%rsp), %rdx
xorl %eax, %eax
callq 0x2ef9c
testq %rax, %rax
je 0x32051
movq %rax, %r12
movq 0x18(%rsp), %rdi
callq 0x71b64
movl %r12d, %edi
callq 0x2dc20
movsd 0x68(%rsp), %xmm0
leaq 0x98(%rsp), %rdi
callq 0x8d0b4
movq (%r14), %rsi
movq 0xa8(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x98(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
movq %r13, %rdx
callq 0x2f7d2
testq %rax, %rax
je 0x32211
movq %rax, %r12
movq 0x18(%rsp), %rdi
callq 0x71b64
movl %r12d, %edi
callq 0x2dc20
jmp 0x32211
xorl %eax, %eax
movq %r12, 0x68(%rsp)
movq %rax, 0x70(%rsp)
movq $0x2, 0x78(%rsp)
movq (%r14), %rsi
movq 0x78(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x68(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
movq %rbp, %rdx
callq 0x2f8c2
testq %rax, %rax
je 0x320fe
movq %rax, %r12
movq 0x30(%rsp), %rdi
callq 0x71b64
movl %r12d, %edi
callq 0x2dc20
incq %rbp
leaq 0x30(%rsp), %rdi
jmp 0x32216
movq 0x18(%rsp), %rsi
leaq 0x68(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x717f5
movq 0x28(%rsp), %r12
movq $0x5, 0x10(%r12)
leaq 0xf8(%rsp), %rbx
movq %rbx, %rdi
callq 0x8e048
movq %r12, %rdi
movabsq $-0x503db0e6e1c2e704, %rsi # imm = 0xAFC24F191E3D18FC
movq %rbx, %rdx
callq 0x71998
movq %r15, %rdi
leaq 0x8305c(%rip), %rsi     # 0xb51b8
callq 0x2ef75
movq %r15, %rdi
testb %al, %al
je 0x32171
leaq 0x790ed(%rip), %rsi     # 0xab25c
jmp 0x32178
leaq 0x8ffb0(%rip), %rsi     # 0xc2128
movq %rbx, %rdx
xorl %eax, %eax
callq 0x2ef9c
testq %rax, %rax
leaq 0x118(%rsp), %rbx
je 0x321a4
movq %rax, %r12
movq 0x28(%rsp), %rdi
callq 0x71b64
movl %r12d, %edi
callq 0x2dc20
movq 0xf8(%rsp), %rdi
callq 0x8cd25
leaq 0xf8(%rsp), %rcx
movq %rcx, 0x50(%rsp)
movq %rax, 0x58(%rsp)
movq $0x1, 0x60(%rsp)
movq (%r14), %rsi
movq 0x60(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x50(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
movq %r13, %rdx
callq 0x2f7d2
testq %rax, %rax
je 0x32207
movq %rax, %r12
movq 0x28(%rsp), %rdi
callq 0x71b64
movl %r12d, %edi
callq 0x2dc20
leaq 0x28(%rsp), %rdi
callq 0x71b48
leaq 0x18(%rsp), %rdi
callq 0x71b48
movq %r15, %rdi
leaq 0x82879(%rip), %rsi     # 0xb4a9e
xorl %eax, %eax
callq 0x2ef9c
testq %rax, %rax
je 0x31dbe
movq %rax, %r12
leaq 0xe5b91(%rip), %rax     # 0x117dd0
movq (%rax), %rdi
callq 0x71b64
movl %r12d, %edi
callq 0x2dc20
jmp 0x31dbe
movq %r15, %rdi
leaq 0x828d2(%rip), %rsi     # 0xb4b30
callq 0x2ef75
testb %al, %al
je 0x32293
leaq 0xc8(%rsp), %rdi
xorl %esi, %esi
callq 0x8d165
movq (%r14), %rsi
movq 0xd8(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0xc8(%rsp), %xmm0
jmp 0x3207c
leaq 0xb0(%rsp), %rdi
pushq $0x1
popq %rsi
callq 0x8d165
movq (%r14), %rsi
movq 0xc0(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0xb0(%rsp), %xmm0
jmp 0x3207c
movq %r14, %rdi
callq 0x32863
leaq 0x828a0(%rip), %rsi     # 0xb4b6f
movq 0x20(%rsp), %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x87cf1
jmp 0x32309
movq 0x38(%rsp), %rdx
leaq 0x82815(%rip), %rsi     # 0xb4b01
movq 0x20(%rsp), %rdi
xorl %eax, %eax
callq 0x87cf1
movq 0x18(%rsp), %rdi
jmp 0x3230e
movq 0x20(%rsp), %rdi
callq 0x6098b
movq 0x30(%rsp), %rdi
callq 0x71b64
xorl %r12d, %r12d
movl %r12d, %eax
addq $0x148, %rsp            # imm = 0x148
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x38(%rsp), %rbx
movq %rax, %rdi
callq 0x71db6
leaq 0x827fb(%rip), %rsi     # 0xb4b3a
movq 0x20(%rsp), %rdi
movq %rbx, %rdx
movq %rax, %rcx
xorl %eax, %eax
callq 0x87cf1
jmp 0x322f8