// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/lib/bcore/bcore_st.c
// Function: c_char
static char c_char( sc_t o, uz_t on, sc_t f, uz_t* fi )
{
    uz_t i = *fi;
    char c = 3;  // ETX (end of text) when index is out of range
    if( f[ i ] == '\'' )
    {
        c = f[ ++i ];
        if( !f[ i ] || f[ ++i ] != '\'' ) ERR( "Format '%s' at position %zu: '<char>' expected.", f, i - 2 );
        i++;
    }
    else if( f[ i ] == '[' )
    {
        uz_t i0 = i;
        i++;
        int idx = atoi( f + i );
        if( idx >= 0 && idx < on ) c = o[ idx ];
        while( f[ i ] && f[ i ] != ']' ) i++;
        if( !f[ i ] || f[ i ] != ']' ) ERR( "Format '%s' at position %zu: [<index>] expected.", f, i0 );
        i++;
    }
    else
    {
        ERR( "Format '%s' at position %zu: '<char>' or [<index>] expected.", f, i );
    }
    *fi = i;
    return c;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movb $0x3, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq -0x28(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x27, %eax
jne 0x106c8f
movq -0x18(%rbp), %rax
movq -0x28(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x28(%rbp)
movb 0x1(%rax,%rcx), %al
movb %al, -0x29(%rbp)
movq -0x18(%rbp), %rax
movq -0x28(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0x106c51
movq -0x18(%rbp), %rax
movq -0x28(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x28(%rbp)
movsbl 0x1(%rax,%rcx), %eax
cmpl $0x27, %eax
je 0x106c7e
movq -0x18(%rbp), %r8
movq -0x28(%rbp), %r9
subq $0x2, %r9
leaq 0x4fe47(%rip), %rdi     # 0x156aab
leaq 0x4f9cd(%rip), %rsi     # 0x156638
movl $0x51c, %edx            # imm = 0x51C
leaq 0x4fe3b(%rip), %rcx     # 0x156ab2
movb $0x0, %al
callq 0x9cf40
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x106dab
movq -0x18(%rbp), %rax
movq -0x28(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x5b, %eax
jne 0x106d80
movq -0x28(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
addq -0x28(%rbp), %rdi
callq 0x4290
movl %eax, -0x3c(%rbp)
cmpl $0x0, -0x3c(%rbp)
jl 0x106ce6
movslq -0x3c(%rbp), %rax
cmpq -0x10(%rbp), %rax
jae 0x106ce6
movq -0x8(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x29(%rbp)
jmp 0x106ce8
movq -0x18(%rbp), %rax
movq -0x28(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x3d(%rbp)
je 0x106d13
movq -0x18(%rbp), %rax
movq -0x28(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x5d, %eax
setne %al
movb %al, -0x3d(%rbp)
movb -0x3d(%rbp), %al
testb $0x1, %al
jne 0x106d1c
jmp 0x106d2a
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x106ce8
movq -0x18(%rbp), %rax
movq -0x28(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0x106d49
movq -0x18(%rbp), %rax
movq -0x28(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x5d, %eax
je 0x106d72
movq -0x18(%rbp), %r8
movq -0x38(%rbp), %r9
leaq 0x4fd53(%rip), %rdi     # 0x156aab
leaq 0x4f8d9(%rip), %rsi     # 0x156638
movl $0x526, %edx            # imm = 0x526
leaq 0x4fd77(%rip), %rcx     # 0x156ae2
movb $0x0, %al
callq 0x9cf40
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x106da9
movq -0x18(%rbp), %r8
movq -0x28(%rbp), %r9
leaq 0x4fd1c(%rip), %rdi     # 0x156aab
leaq 0x4f8a2(%rip), %rsi     # 0x156638
movl $0x52b, %edx            # imm = 0x52B
leaq 0x4fd71(%rip), %rcx     # 0x156b13
movb $0x0, %al
callq 0x9cf40
jmp 0x106dab
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movb -0x29(%rbp), %al
addq $0x40, %rsp
popq %rbp
retq
nop