// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_stamp_s_parse_extend
er_t xoico_stamp_s_parse_extend( xoico_stamp_s* o, x_source* source )
{
    // xoico_stamp.x:369:1
    BLM_INIT_LEVEL(0);
    st_s* buf = ((st_s*)BLM_LEVEL_T_PUSH(0,st_s,st_s_create()));
    bcore_self_s* self = ((bcore_self_s*)BLM_LEVEL_T_PUSH(0,bcore_self_s,bcore_self_s_create()));
    self->type = o->tp_name;
    self->trait = o->trait_name;
    
    if( x_source_parse_bl(source," #?'{'" ) )
    {
        while( !x_source_eos(source) && !x_source_parse_bl(source," #?'}'" ) )
        {
            if( x_source_parse_bl(source," #?w'func'" ) )
            {
                BLM_TRY(xoico_stamp_s_parse_func(o,source ))
            }
            else if( x_source_parse_bl(source," #?w'wrap'" ) )
            {
                BLM_TRY(xoico_stamp_s_parse_wrap(o,source ))
            }
            else
            {BLM_INIT_LEVEL(3);
                bl_t exit = false;
    
                st_s_clear(buf);
                bl_t arg_of_initializer = false;
    
                while( !exit && !x_source_eos(source) )
                {
                    u0_t c =  x_source_get_u0(source);
                    switch( c )
                    {
                        case ':':
                        {BLM_INIT_LEVEL(7);
                            st_s* name = ((st_s*)BLM_LEVEL_T_PUSH(7,st_s,st_s_create()));
                            BLM_TRY(xoico_group_s_parse_name_recursive(o->group,source, name ))
                            st_s_push_st(buf,name );
                        BLM_DOWN();}
                        break;
    
                        case '$':
                        {
                            arg_of_initializer = true;
                        }
                        break;
    
                        case '@':
                        {
                            st_s_push_st(buf,&(o->st_name ));
                        }
                        break;
    
                        case ';':
                        {
                            st_s_push_char(buf,c );
                            exit = true;
                        }
                        break;
    
                        case '"': // string literal
                        {
                            st_s_push_char(buf,c );
                            while( !x_source_eos(source) && ((c = x_source_get_char(source)) != '"') )
                            {
                                st_s_push_char(buf,c );
                                if( c == '\\' ) st_s_push_char(buf,x_source_get_char(source) );
                                if( c == '\n' ) BLM_RETURNV(er_t, x_source_parse_error_fa(source,"Newline in string literal." ))
                            }
                            if( x_source_eos(source) ) BLM_RETURNV(er_t, x_source_parse_error_fa(source,"End of file in string literal." ))
                            st_s_push_char(buf,c );
                        }
                        break;
    
                        default:
                        {
                            st_s_push_char(buf,c );
                        }
                        break;
                    }
                }
    
                if( arg_of_initializer ) o->has_compact_initializer = true;
    
                xoico_stamp_self_item_s* self_item = ((xoico_stamp_self_item_s*)BLM_LEVEL_T_PUSH(3,xoico_stamp_self_item_s,xoico_stamp_self_item_s_create()));
                self_item->arg_of_initializer = arg_of_initializer;
                st_s_copy(&(self_item->st),buf );
                x_source_point_s_setup_from_source(&(self_item->source_point),source );
                x_array_push_d(((x_array*)(BCORE_PASS_CREATE(xoico_stamp_arr_self_item_s,o->arr_self_item))),((x_inst*)(((xoico_stamp_self_item_s*)bcore_fork(self_item)) )));
            BLM_DOWN();}
        }
    }
    else
    {
        if( x_source_parse_bl(source," #?w'func'" ) )
        {
            BLM_TRY(xoico_stamp_s_parse_func(o,source ))
        }
        else  // a non-block must close with semicolon
        {
            BLM_TRY(x_source_parse_fa(source," ;" ))
        }
    }
    
    BLM_TRY(x_source_parse_fa(source," #-?';' " )) // closing semicolon is optional
    
    BLM_RETURNV(er_t, 0)
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1c0, %rsp            # imm = 0x1C0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
leaq 0x199846(%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 -0x20(%rbp), %rax
movq %rax, -0x188(%rbp)
movb $0x0, %al
callq 0xff2e0
movq -0x188(%rbp), %rdi
movq %rax, %rcx
xorl %eax, %eax
movl %eax, %esi
movabsq $-0x503db0e6e1c2e704, %rdx # imm = 0xAFC24F191E3D18FC
callq 0xc01a0
movq %rax, -0x60(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x180(%rbp)
movb $0x0, %al
callq 0xa5460
movq -0x180(%rbp), %rdi
movq %rax, %rcx
xorl %eax, %eax
movl %eax, %esi
movabsq $-0x4b706df6ad0a9f1, %rdx # imm = 0xFB48F920952F560F
callq 0xc01a0
movq %rax, -0x68(%rbp)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rcx
movq -0x68(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rcx
movq -0x68(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x18(%rbp), %rdi
leaq 0x11ada3(%rip), %rsi    # 0x13394e
callq 0x6700
testb $0x1, %al
jne 0x18bb9
jmp 0x190c7
jmp 0x18bbb
movq -0x18(%rbp), %rdi
callq 0x6730
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x189(%rbp)
jne 0x18beb
movq -0x18(%rbp), %rdi
leaq 0x11b750(%rip), %rsi    # 0x13432e
callq 0x6700
xorb $-0x1, %al
movb %al, -0x189(%rbp)
movb -0x189(%rbp), %al
testb $0x1, %al
jne 0x18bfa
jmp 0x190c2
movq -0x18(%rbp), %rdi
leaq 0x11c06b(%rip), %rsi    # 0x134c70
callq 0x6700
testb $0x1, %al
jne 0x18c10
jmp 0x18c4b
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15280
movq %rax, -0x70(%rbp)
cmpq $0x0, -0x70(%rbp)
je 0x18c46
movq -0x70(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x58(%rbp), %rdi
callq 0xc0720
movq -0x78(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x191d5
jmp 0x190bd
movq -0x18(%rbp), %rdi
leaq 0x11c025(%rip), %rsi    # 0x134c7b
callq 0x6700
testb $0x1, %al
jne 0x18c61
jmp 0x18ca2
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x189d0
movq %rax, -0x80(%rbp)
cmpq $0x0, -0x80(%rbp)
je 0x18c9d
movq -0x80(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x58(%rbp), %rdi
callq 0xc0720
movq -0x88(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x191d5
jmp 0x190bb
movq -0x58(%rbp), %rax
movq %rax, -0x90(%rbp)
leaq -0xc0(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0xc8(%rbp), %rdi
movq -0x90(%rbp), %rsi
callq 0xbfe80
movq -0xc8(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
movq $0x3, 0x10(%rax)
movb $0x0, -0xc9(%rbp)
movq -0x60(%rbp), %rdi
callq 0xffb50
movb $0x0, -0xca(%rbp)
xorl %eax, %eax
testb $0x1, -0xc9(%rbp)
movb %al, -0x18a(%rbp)
jne 0x18d24
movq -0x18(%rbp), %rdi
callq 0x6730
xorb $-0x1, %al
movb %al, -0x18a(%rbp)
movb -0x18a(%rbp), %al
testb $0x1, %al
jne 0x18d33
jmp 0x18ff5
movq -0x18(%rbp), %rdi
callq 0xa4b0
movb %al, -0xcb(%rbp)
movzbl -0xcb(%rbp), %eax
addl $-0x22, %eax
movl %eax, %ecx
movq %rcx, -0x198(%rbp)
subl $0x1e, %eax
ja 0x18fe0
movq -0x198(%rbp), %rax
leaq 0x11a2e8(%rip), %rcx    # 0x133054
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0xc8(%rbp), %rax
movq %rax, -0xd8(%rbp)
leaq -0x108(%rbp), %rax
movq %rax, -0x110(%rbp)
movq -0x110(%rbp), %rdi
movq -0xd8(%rbp), %rsi
callq 0xbfe80
movq -0x110(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq $0x7, 0x10(%rax)
movq -0xd8(%rbp), %rax
movq %rax, -0x1a0(%rbp)
movb $0x0, %al
callq 0xff2e0
movq -0x1a0(%rbp), %rdi
movq %rax, %rcx
movl $0x7, %esi
movabsq $-0x503db0e6e1c2e704, %rdx # imm = 0xAFC24F191E3D18FC
callq 0xc01a0
movq %rax, -0x118(%rbp)
movq -0x10(%rbp), %rax
movq 0xc8(%rax), %rdi
movq -0x18(%rbp), %rsi
movq -0x118(%rbp), %rdx
callq 0x10af0
movq %rax, -0x120(%rbp)
cmpq $0x0, -0x120(%rbp)
je 0x18e51
movq -0x120(%rbp), %rax
movq %rax, -0x128(%rbp)
movq -0x110(%rbp), %rdi
callq 0xc0720
movq -0x128(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x191d5
movq -0x60(%rbp), %rdi
movq -0x118(%rbp), %rsi
callq 0xffe20
leaq -0x110(%rbp), %rdi
callq 0xc06e0
jmp 0x18ff0
movb $0x1, -0xca(%rbp)
jmp 0x18ff0
movq -0x60(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
callq 0xffe20
jmp 0x18ff0
movq -0x60(%rbp), %rdi
movsbl -0xcb(%rbp), %esi
callq 0xffba0
movb $0x1, -0xc9(%rbp)
jmp 0x18ff0
movq -0x60(%rbp), %rdi
movsbl -0xcb(%rbp), %esi
callq 0xffba0
movq -0x18(%rbp), %rdi
callq 0x6730
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x1a1(%rbp)
jne 0x18ef6
movq -0x18(%rbp), %rdi
callq 0xa490
movb %al, -0xcb(%rbp)
movzbl %al, %eax
cmpl $0x22, %eax
setne %al
movb %al, -0x1a1(%rbp)
movb -0x1a1(%rbp), %al
testb $0x1, %al
jne 0x18f05
jmp 0x18f8a
movq -0x60(%rbp), %rdi
movsbl -0xcb(%rbp), %esi
callq 0xffba0
movzbl -0xcb(%rbp), %eax
cmpl $0x5c, %eax
jne 0x18f44
movq -0x60(%rbp), %rax
movq %rax, -0x1b0(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa490
movq -0x1b0(%rbp), %rdi
movsbl %al, %esi
callq 0xffba0
movzbl -0xcb(%rbp), %eax
cmpl $0xa, %eax
jne 0x18f85
movq -0x18(%rbp), %rdi
leaq 0x11a93f(%rip), %rsi    # 0x13389a
movb $0x0, %al
callq 0x4c80
movq %rax, -0x130(%rbp)
movq -0xc8(%rbp), %rdi
callq 0xc0720
movq -0x130(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x191d5
jmp 0x18ec0
movq -0x18(%rbp), %rdi
callq 0x6730
testb $0x1, %al
jne 0x18f99
jmp 0x18fce
movq -0x18(%rbp), %rdi
leaq 0x11bce2(%rip), %rsi    # 0x134c86
movb $0x0, %al
callq 0x4c80
movq %rax, -0x138(%rbp)
movq -0xc8(%rbp), %rdi
callq 0xc0720
movq -0x138(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x191d5
movq -0x60(%rbp), %rdi
movsbl -0xcb(%rbp), %esi
callq 0xffba0
jmp 0x18ff0
movq -0x60(%rbp), %rdi
movsbl -0xcb(%rbp), %esi
callq 0xffba0
jmp 0x18d02
testb $0x1, -0xca(%rbp)
je 0x19006
movq -0x10(%rbp), %rax
movb $0x1, 0x39(%rax)
movq -0x90(%rbp), %rax
movq %rax, -0x1c0(%rbp)
callq 0x1bbf0
movq -0x1c0(%rbp), %rdi
movq %rax, %rcx
movl $0x3, %esi
movabsq $-0x4a7225c98ee69178, %rdx # imm = 0xB58DDA3671196E88
callq 0xc01a0
movq %rax, -0x140(%rbp)
movb -0xca(%rbp), %cl
movq -0x140(%rbp), %rax
andb $0x1, %cl
movb %cl, 0x40(%rax)
movq -0x140(%rbp), %rdi
addq $0x20, %rdi
movq -0x60(%rbp), %rsi
callq 0xfe850
movq -0x140(%rbp), %rdi
addq $0x8, %rdi
movq -0x18(%rbp), %rsi
callq 0x5560
movq -0x10(%rbp), %rdi
addq $0x40, %rdi
leaq 0x2d08(%rip), %rsi      # 0x1bd90
callq 0x6750
movq %rax, -0x1b8(%rbp)
movq -0x140(%rbp), %rdi
callq 0x9d3d0
movq -0x1b8(%rbp), %rdi
movq %rax, %rsi
callq 0x85f0
leaq -0xc8(%rbp), %rdi
callq 0xc06e0
jmp 0x190bd
jmp 0x18bbb
jmp 0x1916f
movq -0x18(%rbp), %rdi
leaq 0x11bb9e(%rip), %rsi    # 0x134c70
callq 0x6700
testb $0x1, %al
jne 0x190dd
jmp 0x19124
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x15280
movq %rax, -0x148(%rbp)
cmpq $0x0, -0x148(%rbp)
je 0x19122
movq -0x148(%rbp), %rax
movq %rax, -0x150(%rbp)
movq -0x58(%rbp), %rdi
callq 0xc0720
movq -0x150(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x191d5
jmp 0x1916d
movq -0x18(%rbp), %rdi
leaq 0x11eaa3(%rip), %rsi    # 0x137bd2
movb $0x0, %al
callq 0x4a20
movq %rax, -0x158(%rbp)
cmpq $0x0, -0x158(%rbp)
je 0x1916b
movq -0x158(%rbp), %rax
movq %rax, -0x160(%rbp)
movq -0x58(%rbp), %rdi
callq 0xc0720
movq -0x160(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x191d5
jmp 0x1916d
jmp 0x1916f
movq -0x18(%rbp), %rdi
leaq 0x11a8f6(%rip), %rsi    # 0x133a70
movb $0x0, %al
callq 0x4a20
movq %rax, -0x168(%rbp)
cmpq $0x0, -0x168(%rbp)
je 0x191b6
movq -0x168(%rbp), %rax
movq %rax, -0x170(%rbp)
movq -0x58(%rbp), %rdi
callq 0xc0720
movq -0x170(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x191d5
movq $0x0, -0x178(%rbp)
movq -0x58(%rbp), %rdi
callq 0xc0720
movq -0x178(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x1c0, %rsp            # imm = 0x1C0
popq %rbp
retq
nopw %cs:(%rax,%rax)