// File: /workspace/github_c_makefile_star2_O3/johsteffens[P]beth/xoico/src/xoico.xo.c
// Function: xoico_typespec_s_converts_to
bl_t xoico_typespec_s_converts_to( const xoico_typespec_s* o, const xoico_typespec_s* b )
{
    // xoico_typespec.x:336:1
    
    if( o->type == b->type )
    {
        if( o->indirection == b->indirection )
        {
            if( o->access_class == TYPEOF_const )
            {
                return  ( b->access_class == TYPEOF_const );
            }
            else
            {
                return  true;
            }
        }
        else
        {
            return  false;
        }
    }
    else
    {
        if( o->indirection == 0 && b->indirection == 0 )
        {
            if( xoico_typespec_is_numeric(o->type ) && xoico_typespec_is_numeric(b->type ) )
            {
                return  true;
            }
            else if( o->type == ((tp_t)(TYPEOF_vd_t)) && b->type == ((tp_t)(TYPEOF_vc_t)) )
            {
                return  true;
            }
            else if( o->type == ((tp_t)(TYPEOF_sd_t)) && b->type == ((tp_t)(TYPEOF_sc_t)) )
            {
                return  true;
            }
            else
            {
                return  false;
            }
        }
        else if( b->type == ((tp_t)(TYPEOF_vc_t)) && b->indirection == 0 )
        {
            if( o->indirection == 1 )
            {
                return  true;
            }
            else
            {
                return  false;
            }
        }
        else if( b->type == ((tp_t)(TYPEOF_vd_t)) && b->indirection == 0 )
        {
            if( o->indirection == 1 && ( o->access_class != TYPEOF_const ) )
            {
                return  true;
            }
            else
            {
                return  false;
            }
        }
        else if( b->type == ((tp_t)(TYPEOF_bl_t)) && b->indirection == 0 )
        {
            if( o->indirection > 0 )
            {
                return  true;
            }
            else if( o->type == ((tp_t)(TYPEOF_vd_t)) || o->type == ((tp_t)(TYPEOF_vc_t)) || o->type == ((tp_t)(TYPEOF_sc_t)) || o->type == ((tp_t)(TYPEOF_sd_t)) )
            {
                return  ( o->indirection == 0 );
            }
            else
            {
                return  false;
            }
        }
        else
        {
            return  false;
        }
    }
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq 0x8(%rdi), %rbx
movq 0x20(%rdi), %rdx
movq 0x8(%rsi), %r14
cmpq %r14, %rbx
jne 0x11ea9
cmpq 0x20(%rsi), %rdx
jne 0x11fd0
movabsq $0x65c9718e19e3df34, %rcx # imm = 0x65C9718E19E3DF34
movb $0x1, %al
cmpq %rcx, 0x10(%rdi)
jne 0x11fd2
cmpq %rcx, 0x10(%rsi)
jmp 0x11ef5
testq %rdx, %rdx
sete %cl
jne 0x11ebc
cmpq $0x0, 0x20(%rsi)
je 0x11f77
movabsq $-0x3ac242643d9c35a8, %rax # imm = 0xC53DBD9BC263CA58
cmpq %rax, %r14
je 0x11f2d
movabsq $0x6f0b060106a30da4, %rax # imm = 0x6F0B060106A30DA4
cmpq %rax, %r14
je 0x11efd
movabsq $0x54de8100f7c1cbe5, %rax # imm = 0x54DE8100F7C1CBE5
cmpq %rax, %r14
jne 0x11fd0
xorq $0x1, %rdx
orq 0x20(%rsi), %rdx
sete %al
jmp 0x11fd2
cmpq $0x0, 0x20(%rsi)
jne 0x11fd0
cmpq $0x1, %rdx
jne 0x11fd0
movb $0x1, %al
movabsq $0x65c9718e19e3df34, %rcx # imm = 0x65C9718E19E3DF34
cmpq %rcx, 0x10(%rdi)
je 0x11fd0
jmp 0x11fd2
cmpq $0x0, 0x20(%rsi)
jne 0x11fd0
movb $0x1, %al
testq %rdx, %rdx
jg 0x11fd2
xorl %eax, %eax
movabsq $0x54de8100f7c1cbe4, %rdx # imm = 0x54DE8100F7C1CBE4
cmpq %rdx, %rbx
jg 0x11fda
movabsq $-0x84b14e74a9e1ff0, %rdx # imm = 0xF7B4EB18B561E010
cmpq %rdx, %rbx
je 0x11ff8
movabsq $0x230abe18cdeefc99, %rdx # imm = 0x230ABE18CDEEFC99
jmp 0x11ff3
movq %rbx, %rdi
callq 0x11ffc
testb %al, %al
je 0x11f93
movq %r14, %rdi
callq 0x11ffc
movl %eax, %ecx
movb $0x1, %al
testb %cl, %cl
jne 0x11fd2
movabsq $0x230abe18cdeefc99, %rax # imm = 0x230ABE18CDEEFC99
cmpq %rax, %rbx
je 0x11fbf
movabsq $0x6f0b060106a30da4, %rax # imm = 0x6F0B060106A30DA4
cmpq %rax, %rbx
jne 0x11fd0
movb $0x1, %al
movabsq $0x54de8100f7c1cbe5, %rcx # imm = 0x54DE8100F7C1CBE5
jmp 0x11fcb
movb $0x1, %al
movabsq $-0x84b14e74a9e1ff0, %rcx # imm = 0xF7B4EB18B561E010
cmpq %rcx, %r14
je 0x11fd2
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movabsq $0x6f0b060106a30da4, %rdx # imm = 0x6F0B060106A30DA4
cmpq %rdx, %rbx
je 0x11ff8
movabsq $0x54de8100f7c1cbe5, %rdx # imm = 0x54DE8100F7C1CBE5
cmpq %rdx, %rbx
jne 0x11fd2
movl %ecx, %eax
jmp 0x11fd2