// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/lib/bcore/bcore_st.c
// Function: c_match
static bl_t c_match( sc_t o, uz_t on, sc_t f, uz_t* fi )
{
    if( f[ *fi ] == '\'' || f[ *fi ] == '[' )
    {
        uz_t i = *fi;
        char c1 = c_char( o, on, f, &i );
        uz_t i0 = i;
        char rc1 = f[ i ];
        char rc2 = f[ i + 1 ];
        if( rc1 ) i += ( rc2 == '=' ) ? 2 : 1;
        char c2 = c_char( o, on, f, &i );
        *fi = i;
        switch( rc1 )
        {
            case '=': return ( rc2 == '=' ) ? ( c1 == c2 ) : false;
            case '>': return ( rc2 == '=' ) ? ( c1 >= c2 ) : ( c1 > c2 );
            case '<': return ( rc2 == '=' ) ? ( c1 <= c2 ) : ( c1 < c2 );
            case '!': return ( rc2 == '=' ) ? ( c1 != c2 ) : false;
            default: ERR( "Format '%s' at position %zu: relation expected.", f, i0 );
        }
    }
    else if( f[ *fi ] == '(' )
    {
        uz_t i = *fi + 1;
        bl_t flag = c_match( o, on, f, &i );
        while( f[ i ] && f[ i ] != ')' )
        {
            if( f[ i ] == '&' && f[ i + 1 ] == '&' )
            {
                i+= 2;
                bl_t flag2 = c_match( o, on, f,  &i );
                flag = flag && flag2;
            }
            else if( f[ i ] == '|' && f[ i + 1 ] == '|' )
            {
                i+= 2;
                bl_t flag2 = c_match( o, on, f,  &i );
                flag = flag || flag2;
            }
            else
            {
                ERR( "Format '%s' at position %zu: logical operator (&& or ||) expected.", f, i );
            }
        }
        if( f[ i ] != ')' ) ERR( "Format '%s' at position %zu: ) expected.", f, i );
        i++;
        *fi = i;
        return flag;
    }
    else if( f[ *fi ] == '!' )
    {
        ( *fi )++;
        return !c_match( o, on, f, fi );
    }
    else
    {
        ERR( "Format '%s' at position %zu: invalid expression.", f, *fi );
    }
    return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq -0x28(%rbp), %rcx
movq (%rcx), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x27, %eax
je 0x104ff7
movq -0x20(%rbp), %rax
movq -0x28(%rbp), %rcx
movq (%rcx), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x5b, %eax
jne 0x1051e2
movq -0x28(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
leaq -0x30(%rbp), %rcx
callq 0x106bd0
movb %al, -0x31(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x20(%rbp), %rax
movq -0x30(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x41(%rbp)
movq -0x20(%rbp), %rax
movq -0x30(%rbp), %rcx
movb 0x1(%rax,%rcx), %al
movb %al, -0x42(%rbp)
cmpb $0x0, -0x41(%rbp)
je 0x105063
movsbl -0x42(%rbp), %edx
movl $0x1, %eax
movl $0x2, %ecx
cmpl $0x3d, %edx
cmovel %ecx, %eax
cltq
addq -0x30(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
leaq -0x30(%rbp), %rcx
callq 0x106bd0
movb %al, -0x43(%rbp)
movq -0x30(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
movsbl -0x41(%rbp), %eax
addl $-0x21, %eax
movl %eax, %ecx
movq %rcx, -0x60(%rbp)
subl $0x1d, %eax
ja 0x1051b4
movq -0x60(%rbp), %rax
leaq 0x5150d(%rip), %rcx     # 0x1565b4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movsbl -0x42(%rbp), %eax
cmpl $0x3d, %eax
jne 0x1050d0
movsbl -0x31(%rbp), %eax
movsbl -0x43(%rbp), %ecx
cmpl %ecx, %eax
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x64(%rbp)
jmp 0x1050d7
xorl %eax, %eax
movl %eax, -0x64(%rbp)
jmp 0x1050d7
movl -0x64(%rbp), %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x105424
movsbl -0x42(%rbp), %eax
cmpl $0x3d, %eax
jne 0x10510a
movsbl -0x31(%rbp), %eax
movsbl -0x43(%rbp), %ecx
cmpl %ecx, %eax
setge %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x68(%rbp)
jmp 0x10511f
movsbl -0x31(%rbp), %eax
movsbl -0x43(%rbp), %ecx
cmpl %ecx, %eax
setg %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x68(%rbp)
movl -0x68(%rbp), %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x105424
movsbl -0x42(%rbp), %eax
cmpl $0x3d, %eax
jne 0x105152
movsbl -0x31(%rbp), %eax
movsbl -0x43(%rbp), %ecx
cmpl %ecx, %eax
setle %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x6c(%rbp)
jmp 0x105167
movsbl -0x31(%rbp), %eax
movsbl -0x43(%rbp), %ecx
cmpl %ecx, %eax
setl %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x6c(%rbp)
movl -0x6c(%rbp), %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x105424
movsbl -0x42(%rbp), %eax
cmpl $0x3d, %eax
jne 0x10519a
movsbl -0x31(%rbp), %eax
movsbl -0x43(%rbp), %ecx
cmpl %ecx, %eax
setne %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x70(%rbp)
jmp 0x1051a1
xorl %eax, %eax
movl %eax, -0x70(%rbp)
jmp 0x1051a1
movl -0x70(%rbp), %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x105424
movq -0x20(%rbp), %r8
movq -0x40(%rbp), %r9
leaq 0x51813(%rip), %rdi     # 0x1569d6
leaq 0x5146e(%rip), %rsi     # 0x156638
movl $0x548, %edx            # imm = 0x548
leaq 0x51808(%rip), %rcx     # 0x1569de
movb $0x0, %al
callq 0x9cf40
jmp 0x105420
movq -0x20(%rbp), %rax
movq -0x28(%rbp), %rcx
movq (%rcx), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x28, %eax
jne 0x1053b0
movq -0x28(%rbp), %rax
movq (%rax), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
leaq -0x50(%rbp), %rcx
callq 0x104fb0
andb $0x1, %al
movb %al, -0x51(%rbp)
movq -0x20(%rbp), %rax
movq -0x50(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x71(%rbp)
je 0x10524e
movq -0x20(%rbp), %rax
movq -0x50(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x29, %eax
setne %al
movb %al, -0x71(%rbp)
movb -0x71(%rbp), %al
testb $0x1, %al
jne 0x10525a
jmp 0x105355
movq -0x20(%rbp), %rax
movq -0x50(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x26, %eax
jne 0x1052c1
movq -0x20(%rbp), %rax
movq -0x50(%rbp), %rcx
movsbl 0x1(%rax,%rcx), %eax
cmpl $0x26, %eax
jne 0x1052c1
movq -0x50(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
leaq -0x50(%rbp), %rcx
callq 0x104fb0
andb $0x1, %al
movb %al, -0x52(%rbp)
xorl %eax, %eax
testb $0x1, -0x51(%rbp)
movb %al, -0x72(%rbp)
je 0x1052b4
movb -0x52(%rbp), %al
movb %al, -0x72(%rbp)
movb -0x72(%rbp), %al
andb $0x1, %al
movb %al, -0x51(%rbp)
jmp 0x105350
movq -0x20(%rbp), %rax
movq -0x50(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x7c, %eax
jne 0x105325
movq -0x20(%rbp), %rax
movq -0x50(%rbp), %rcx
movsbl 0x1(%rax,%rcx), %eax
cmpl $0x7c, %eax
jne 0x105325
movq -0x50(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
leaq -0x50(%rbp), %rcx
callq 0x104fb0
andb $0x1, %al
movb %al, -0x53(%rbp)
movb $0x1, %al
testb $0x1, -0x51(%rbp)
movb %al, -0x73(%rbp)
jne 0x10531b
movb -0x53(%rbp), %al
movb %al, -0x73(%rbp)
movb -0x73(%rbp), %al
andb $0x1, %al
movb %al, -0x51(%rbp)
jmp 0x10534e
movq -0x20(%rbp), %r8
movq -0x50(%rbp), %r9
leaq 0x516a2(%rip), %rdi     # 0x1569d6
leaq 0x512fd(%rip), %rsi     # 0x156638
movl $0x55f, %edx            # imm = 0x55F
leaq 0x516c7(%rip), %rcx     # 0x156a0e
movb $0x0, %al
callq 0x9cf40
jmp 0x105350
jmp 0x105223
movq -0x20(%rbp), %rax
movq -0x50(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x29, %eax
je 0x10538f
movq -0x20(%rbp), %r8
movq -0x50(%rbp), %r9
leaq 0x51661(%rip), %rdi     # 0x1569d6
leaq 0x512bc(%rip), %rsi     # 0x156638
movl $0x562, %edx            # imm = 0x562
leaq 0x516c9(%rip), %rcx     # 0x156a51
movb $0x0, %al
callq 0x9cf40
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
movb -0x51(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x105424
movq -0x20(%rbp), %rax
movq -0x28(%rbp), %rcx
movq (%rcx), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x21, %eax
jne 0x1053f0
movq -0x28(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x104fb0
xorb $-0x1, %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x105424
movq -0x20(%rbp), %r8
movq -0x28(%rbp), %rax
movq (%rax), %r9
leaq 0x515d4(%rip), %rdi     # 0x1569d6
leaq 0x5122f(%rip), %rsi     # 0x156638
movl $0x56e, %edx            # imm = 0x56E
leaq 0x51665(%rip), %rcx     # 0x156a7a
movb $0x0, %al
callq 0x9cf40
jmp 0x10541e
jmp 0x105420
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x80, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)