// File: /workspace/github_c_makefile_star2_O3/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: x_btcl_operator_uop_s_solve_exportable_a
er_t x_btcl_operator_uop_s_solve_exportable_a( const x_btcl_operator_uop_s* o, const sr_s* a, sr_s* result, bl_t* success )
{
    // bcore_x_btcl_operator.x:107:1
    
    (*(success)) = true;
    
    switch( o->type )
    {
        case ((tp_t)(TYPEOF_identity)): sr_s_tsc(result,sr_s_type(a), ((x_inst*)bcore_fork(a->o)) ); return  0;
    
        case ((tp_t)(TYPEOF_neg)):
        {
            if( sr_s_is_integer(a) ) { sr_s_const_from_s3(result,-sr_s_to_s3(a) ); return  0; }
            if( sr_s_is_float(a)   ) { sr_s_const_from_f3(result,-sr_s_to_f3(a) ); return  0; }
        }
        break;
    
        case ((tp_t)(TYPEOF_size)):
        {
            if( sr_s_type(a) == ((tp_t)(TYPEOF_x_btcl_list_s))          ) { sr_s_const_from_s3(result,((const x_btcl_list_s*)(a->o))->arr.size ); return  0; }
            if( x_array_t_is_array(sr_s_type(a) ) ) { sr_s_const_from_s3(result,x_array_t_size(((const x_array*)( a->o)),sr_s_type(a) ) ); return  0; }
        }
        break;
    
        case ((tp_t)(TYPEOF_not)):   if( sr_s_is_numeric(a) ) { sr_s_const_from_bl(result,!sr_s_to_bl(a) ); return  0; } break;
        case ((tp_t)(TYPEOF_exp)):   if( sr_s_is_numeric(a) ) { sr_s_const_from_f3(result,f3_exp(   sr_s_to_f3(a) ) ); return  0; } break;
        case ((tp_t)(TYPEOF_log)):   if( sr_s_is_numeric(a) ) { sr_s_const_from_f3(result,f3_log(   sr_s_to_f3(a) ) ); return  0; } break;
        case ((tp_t)(TYPEOF_log2)):  if( sr_s_is_numeric(a) ) { sr_s_const_from_f3(result,f3_log2(  sr_s_to_f3(a) ) ); return  0; } break;
        case ((tp_t)(TYPEOF_log10)): if( sr_s_is_numeric(a) ) { sr_s_const_from_f3(result,f3_log10( sr_s_to_f3(a) ) ); return  0; } break;
        case ((tp_t)(TYPEOF_sin)):   if( sr_s_is_numeric(a) ) { sr_s_const_from_f3(result,f3_sin(   sr_s_to_f3(a) ) ); return  0; } break;
        case ((tp_t)(TYPEOF_cos)):   if( sr_s_is_numeric(a) ) { sr_s_const_from_f3(result,f3_cos(   sr_s_to_f3(a) ) ); return  0; } break;
        case ((tp_t)(TYPEOF_tan)):   if( sr_s_is_numeric(a) ) { sr_s_const_from_f3(result,f3_tan(   sr_s_to_f3(a) ) ); return  0; } break;
        case ((tp_t)(TYPEOF_tanh)):  if( sr_s_is_numeric(a) ) { sr_s_const_from_f3(result,f3_tanh(  sr_s_to_f3(a) ) ); return  0; } break;
        case ((tp_t)(TYPEOF_sqrt)):  if( sr_s_is_numeric(a) ) { sr_s_const_from_f3(result,f3_sqrt(  sr_s_to_f3(a) ) ); return  0; } break;
        case ((tp_t)(TYPEOF_sign)):  if( sr_s_is_numeric(a) ) { sr_s_const_from_s3(result,f3_sign(  sr_s_to_f3(a) ) ); return  0; } break;
    
        case ((tp_t)(TYPEOF_abs)):
        {
            if( sr_s_is_integer(a) ) { sr_s_const_from_s3(result,s3_abs( sr_s_to_s3(a) ) ); return  0; }
            if( sr_s_is_numeric(a) ) { sr_s_const_from_f3(result,f3_abs( sr_s_to_f3(a) ) ); return  0; }
        }
        break;
    
        case ((tp_t)(TYPEOF_ceil)):  if( sr_s_is_numeric(a) ) { sr_s_const_from_f3(result,f3_ceil(  sr_s_to_f3(a) ) ); return  0; } break;
        case ((tp_t)(TYPEOF_floor)): if( sr_s_is_numeric(a) ) { sr_s_const_from_f3(result,f3_floor( sr_s_to_f3(a) ) ); return  0; } break;
    
        default: break;
    }
    
    (*(success)) = false;
    return  0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rcx, %r15
movq %rdx, %rbx
movq %rsi, %r14
movb $0x1, (%rcx)
movq 0x8(%rdi), %rax
movabsq $-0x16f0e7b3955c0046, %rcx # imm = 0xE90F184C6AA3FFBA
cmpq %rcx, %rax
jle 0x8f789
movabsq $0x2138e5192571d260, %rcx # imm = 0x2138E5192571D260
cmpq %rcx, %rax
jle 0x8f804
movabsq $0x4dea9618e618ae3b, %rcx # imm = 0x4DEA9618E618AE3B
cmpq %rcx, %rax
jle 0x8f9a5
movabsq $0x4dea9618e618ae3c, %rcx # imm = 0x4DEA9618E618AE3C
cmpq %rcx, %rax
je 0x8fb2e
movabsq $0x4e0f7f18e637a364, %rcx # imm = 0x4E0F7F18E637A364
cmpq %rcx, %rax
je 0x8fa44
movabsq $0x56d7b2194448b0d8, %rcx # imm = 0x56D7B2194448B0D8
cmpq %rcx, %rax
jne 0x8fc4b
movq %r14, %rdi
callq 0x108085
testb %al, %al
je 0x8fc4b
movq %r14, %rdi
callq 0x10847b
callq 0xd0f0
jmp 0x8fc18
movabsq $-0x31f869528f143ee8, %rcx # imm = 0xCE0796AD70EBC118
cmpq %rcx, %rax
jg 0x8f85f
movabsq $-0x5fc58b56bd24bc44, %rcx # imm = 0xA03A74A942DB43BC
cmpq %rcx, %rax
jg 0x8f910
movabsq $-0x7db75ee6a3133b53, %rcx # imm = 0x8248A1195CECC4AD
cmpq %rcx, %rax
je 0x8fa98
movabsq $-0x69eb30e6f0372831, %rcx # imm = 0x9614CF190FC8D7CF
cmpq %rcx, %rax
jne 0x8fc4b
movq %r14, %rdi
callq 0x108085
testb %al, %al
je 0x8fc4b
movq %r14, %rdi
callq 0x10847b
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x8fc13
sqrtsd %xmm0, %xmm0
jmp 0x8fc18
movabsq $0x29c1fb6e090c58f, %rcx # imm = 0x29C1FB6E090C58F
cmpq %rcx, %rax
jg 0x8f8ba
movabsq $-0x16f0e7b3955c0045, %rcx # imm = 0xE90F184C6AA3FFBB
cmpq %rcx, %rax
je 0x8f9f5
movabsq $-0x9fb03e6f2fe8924, %rcx # imm = 0xF604FC190D0176DC
cmpq %rcx, %rax
jne 0x8fc4b
movq %r14, %rdi
callq 0x108085
testb %al, %al
je 0x8fc4b
movq %r14, %rdi
callq 0x10847b
callq 0xd1a0
jmp 0x8fc18
movabsq $-0x266ae76f02928179, %rcx # imm = 0xD9951890FD6D7E87
cmpq %rcx, %rax
jg 0x8f958
movabsq $-0x31f869528f143ee7, %rcx # imm = 0xCE0796AD70EBC119
cmpq %rcx, %rax
je 0x8faba
movabsq $-0x26cbaf10f87bc4f0, %rcx # imm = 0xD93450EF07843B10
cmpq %rcx, %rax
jne 0x8fc4b
movq %r14, %rdi
callq 0x108085
testb %al, %al
je 0x8fc4b
movq %r14, %rdi
callq 0x10847b
callq 0xd080
jmp 0x8fc18
movabsq $0x29c1fb6e090c590, %rcx # imm = 0x29C1FB6E090C590
cmpq %rcx, %rax
je 0x8fa14
movabsq $0x125073191daf5431, %rcx # imm = 0x125073191DAF5431
cmpq %rcx, %rax
jne 0x8fc4b
movq %r14, %rdi
callq 0x108085
testb %al, %al
je 0x8fc4b
movq %r14, %rdi
callq 0x10847b
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x8fb7b
callq 0xd210
jmp 0x8fc18
movabsq $-0x5fc58b56bd24bc43, %rcx # imm = 0xA03A74A942DB43BD
cmpq %rcx, %rax
je 0x8faea
movabsq $-0x3cedf4e70f8fbbf8, %rcx # imm = 0xC3120B18F0704408
cmpq %rcx, %rax
jne 0x8fc4b
movq %r14, %rdi
callq 0x108085
testb %al, %al
je 0x8fc4b
movq %r14, %rdi
callq 0x10847b
callq 0xd0e0
jmp 0x8fc18
movabsq $-0x266ae76f02928178, %rcx # imm = 0xD9951890FD6D7E88
cmpq %rcx, %rax
je 0x8fb0c
movabsq $-0x18e04de6fabe8d85, %rcx # imm = 0xE71FB2190541727B
cmpq %rcx, %rax
jne 0x8fc4b
movq %r14, %rdi
callq 0x1080cd
testb %al, %al
je 0x8fbd3
movq %r14, %rdi
callq 0x1088f4
movq %rax, %rsi
negq %rsi
cmovsq %rax, %rsi
jmp 0x8fb57
movabsq $0x2138e5192571d261, %rcx # imm = 0x2138E5192571D261
cmpq %rcx, %rax
je 0x8fb5f
movabsq $0x215ad619258e9f4a, %rcx # imm = 0x215AD619258E9F4A
cmpq %rcx, %rax
jne 0x8fc4b
movq %r14, %rdi
callq 0x108085
testb %al, %al
je 0x8fc4b
movq %r14, %rdi
callq 0x108b00
xorb $0x1, %al
movzbl %al, %esi
movq %rbx, %rdi
callq 0x1083dd
jmp 0x8fc4f
testq %r14, %r14
je 0x8fb88
movq 0x8(%r14), %rax
testq %rax, %rax
je 0x8fb88
movq 0x8(%rax), %r15
jmp 0x8fb8b
movq %r14, %rdi
callq 0x108085
testb %al, %al
je 0x8fc4b
movq %r14, %rdi
callq 0x10847b
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x8fb7b
callq 0xd030
jmp 0x8fc18
movq %r14, %rdi
callq 0x108085
testb %al, %al
je 0x8fc4b
movq %r14, %rdi
callq 0x10847b
xorpd %xmm1, %xmm1
xorpd %xmm2, %xmm2
cmpltsd %xmm0, %xmm2
movsd 0xa780f(%rip), %xmm3    # 0x137280
andpd %xmm2, %xmm3
cmpltsd %xmm1, %xmm0
movsd 0xa7836(%rip), %xmm1    # 0x1372b8
andpd %xmm0, %xmm1
andnpd %xmm3, %xmm0
orpd %xmm0, %xmm1
cvttsd2si %xmm1, %rsi
jmp 0x8fb57
movq %r14, %rdi
callq 0x108085
testb %al, %al
je 0x8fc4b
movq %r14, %rdi
callq 0x10847b
callq 0xd4b0
jmp 0x8fc18
movq %r14, %rdi
callq 0x108085
testb %al, %al
je 0x8fc4b
movq %r14, %rdi
callq 0x10847b
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x8fb7b
callq 0xd3c0
jmp 0x8fc18
movq %r14, %rdi
callq 0x108085
testb %al, %al
je 0x8fc4b
movq %r14, %rdi
callq 0x10847b
callq 0xd410
jmp 0x8fc18
movq %r14, %rdi
callq 0x108085
testb %al, %al
je 0x8fc4b
movq %r14, %rdi
callq 0x10847b
callq 0xd0c0
jmp 0x8fc18
testq %r14, %r14
je 0x8fbad
movq 0x8(%r14), %rax
testq %rax, %rax
je 0x8fbad
movabsq $-0x240ec4eb25c1f3e8, %rcx # imm = 0xDBF13B14DA3E0C18
cmpq %rcx, 0x8(%rax)
jne 0x8fc22
movq (%r14), %rax
movq 0x18(%rax), %rsi
movq %rbx, %rdi
jmp 0x8fc64
movq %r14, %rdi
callq 0x1080cd
testb %al, %al
je 0x8fbb1
movq %r14, %rdi
callq 0x1088f4
negq %rax
jmp 0x8fc5e
movsd 0xa773d(%rip), %xmm0    # 0x1372c0
jmp 0x8fc18
xorl %r15d, %r15d
movq (%r14), %rdi
callq 0xbe7e4
movq %rax, %r14
movq %rbx, %rdi
callq 0x107ca9
testq %r15, %r15
je 0x8fc00
movq %r15, %rdi
callq 0x1074f1
jmp 0x8fc02
xorl %esi, %esi
jmp 0x8fc26
movq %r14, %rdi
callq 0x1080a9
testb %al, %al
je 0x8fc4b
movq %r14, %rdi
callq 0x10847b
xorpd 0xa773f(%rip), %xmm0    # 0x137310
jmp 0x8fc18
movq %r14, %rdi
callq 0x108085
testb %al, %al
je 0x8fc4b
movq %r14, %rdi
callq 0x10847b
movapd 0xa7721(%rip), %xmm1    # 0x137310
xorpd %xmm0, %xmm1
maxsd %xmm0, %xmm1
movq %rbx, %rdi
movapd %xmm1, %xmm0
jmp 0x8fc1b
xorl %eax, %eax
movq %r14, (%rbx)
movq %rax, 0x8(%rbx)
movq $0x3, 0x10(%rbx)
jmp 0x8fc4f
callq 0xd480
movq %rbx, %rdi
callq 0x1082ef
jmp 0x8fc4f
movq 0x8(%rax), %rsi
movabsq $-0x196aeddfdbdcdb38, %rdi # imm = 0xE6951220242324C8
callq 0xe9a82
testb %al, %al
je 0x8fc4b
movq (%r14), %rdi
movq 0x8(%r14), %rax
testq %rax, %rax
je 0x8fc57
movq 0x8(%rax), %rsi
jmp 0x8fc59
movb $0x0, (%r15)
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
xorl %esi, %esi
callq 0x73243
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10838e
jmp 0x8fc4f