// File: /workspace/github_c_makefile_star2_O2/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 $-0x7db75ee6a3133b53, %rcx # imm = 0x8248A1195CECC4AD
cmpq %rcx, %rax
je 0x42c4e
movabsq $-0x69eb30e6f0372831, %rcx # imm = 0x9614CF190FC8D7CF
cmpq %rcx, %rax
je 0x42a9f
movabsq $-0x5fc58b56bd24bc43, %rcx # imm = 0xA03A74A942DB43BD
cmpq %rcx, %rax
je 0x42bd4
movabsq $-0x3cedf4e70f8fbbf8, %rcx # imm = 0xC3120B18F0704408
cmpq %rcx, %rax
je 0x42ace
movabsq $-0x31f869528f143ee7, %rcx # imm = 0xCE0796AD70EBC119
cmpq %rcx, %rax
je 0x42c90
movabsq $-0x26cbaf10f87bc4f0, %rcx # imm = 0xD93450EF07843B10
cmpq %rcx, %rax
je 0x42b3c
movabsq $-0x266ae76f02928178, %rcx # imm = 0xD9951890FD6D7E88
cmpq %rcx, %rax
je 0x42af0
movabsq $-0x18e04de6fabe8d85, %rcx # imm = 0xE71FB2190541727B
cmpq %rcx, %rax
je 0x42cd4
movabsq $0x56d7b2194448b0d8, %rcx # imm = 0x56D7B2194448B0D8
cmpq %rcx, %rax
je 0x42b5e
movabsq $-0x9fb03e6f2fe8924, %rcx # imm = 0xF604FC190D0176DC
cmpq %rcx, %rax
je 0x42cfa
movabsq $0x29c1fb6e090c590, %rcx # imm = 0x29C1FB6E090C590
cmpq %rcx, %rax
je 0x42c2c
movabsq $0x125073191daf5431, %rcx # imm = 0x125073191DAF5431
cmpq %rcx, %rax
je 0x42cb2
movabsq $0x2138e5192571d261, %rcx # imm = 0x2138E5192571D261
cmpq %rcx, %rax
je 0x42c70
movabsq $0x215ad619258e9f4a, %rcx # imm = 0x215AD619258E9F4A
cmpq %rcx, %rax
je 0x42b12
movabsq $0x4dea9618e618ae3c, %rcx # imm = 0x4DEA9618E618AE3C
cmpq %rcx, %rax
je 0x42bf6
movabsq $0x4e0f7f18e637a364, %rcx # imm = 0x4E0F7F18E637A364
cmpq %rcx, %rax
je 0x42b80
movabsq $-0x16f0e7b3955c0045, %rcx # imm = 0xE90F184C6AA3FFBB
cmpq %rcx, %rax
jne 0x42db1
testq %r14, %r14
je 0x42d1d
movq 0x8(%r14), %rax
testq %rax, %rax
je 0x42d1d
movq 0x8(%rax), %r15
jmp 0x42d20
movq %r14, %rdi
callq 0x8d3ab
testb %al, %al
je 0x42db1
movq %r14, %rdi
callq 0x8d63e
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x42d83
sqrtsd %xmm0, %xmm0
jmp 0x42d88
movq %r14, %rdi
callq 0x8d3ab
testb %al, %al
je 0x42db1
movq %r14, %rdi
callq 0x8d63e
callq 0xd0e0
jmp 0x42d88
movq %r14, %rdi
callq 0x8d3ab
testb %al, %al
je 0x42db1
movq %r14, %rdi
callq 0x8d63e
callq 0xd0c0
jmp 0x42d88
movq %r14, %rdi
callq 0x8d3ab
testb %al, %al
je 0x42db1
movq %r14, %rdi
callq 0x8db7d
xorb $0x1, %al
movzbl %al, %esi
movq %rbx, %rdi
callq 0x8d5ee
jmp 0x42db5
movq %r14, %rdi
callq 0x8d3ab
testb %al, %al
je 0x42db1
movq %r14, %rdi
callq 0x8d63e
callq 0xd080
jmp 0x42d88
movq %r14, %rdi
callq 0x8d3ab
testb %al, %al
je 0x42db1
movq %r14, %rdi
callq 0x8d63e
callq 0xd0f0
jmp 0x42d88
movq %r14, %rdi
callq 0x8d3ab
testb %al, %al
je 0x42db1
movq %r14, %rdi
callq 0x8d63e
xorpd %xmm1, %xmm1
xorpd %xmm2, %xmm2
cmpltsd %xmm0, %xmm2
movsd 0x71b3b(%rip), %xmm3    # 0xb46e8
andpd %xmm2, %xmm3
cmpltsd %xmm1, %xmm0
movsd 0x71b62(%rip), %xmm1    # 0xb4720
andpd %xmm0, %xmm1
andnpd %xmm3, %xmm0
orpd %xmm0, %xmm1
cvttsd2si %xmm1, %rsi
jmp 0x42cf2
movq %r14, %rdi
callq 0x8d3ab
testb %al, %al
je 0x42db1
movq %r14, %rdi
callq 0x8d63e
callq 0xd410
jmp 0x42d88
testq %r14, %r14
je 0x42d19
movq 0x8(%r14), %rax
testq %rax, %rax
je 0x42d19
movabsq $-0x240ec4eb25c1f3e8, %rcx # imm = 0xDBF13B14DA3E0C18
cmpq %rcx, 0x8(%rax)
jne 0x42d92
movq (%r14), %rax
movq 0x18(%rax), %rsi
jmp 0x42cf2
movq %r14, %rdi
callq 0x8d3ab
testb %al, %al
je 0x42db1
movq %r14, %rdi
callq 0x8d63e
callq 0x42e04
jmp 0x42d88
movq %r14, %rdi
callq 0x8d3ab
testb %al, %al
je 0x42db1
movq %r14, %rdi
callq 0x8d63e
callq 0xd4b0
jmp 0x42d88
movq %r14, %rdi
callq 0x8d3f3
testb %al, %al
je 0x42d38
movq %r14, %rdi
callq 0x8d9e8
negq %rax
jmp 0x42dc4
movq %r14, %rdi
callq 0x8d3ab
testb %al, %al
je 0x42db1
movq %r14, %rdi
callq 0x8d63e
callq 0x42ded
jmp 0x42d88
movq %r14, %rdi
callq 0x8d3ab
testb %al, %al
je 0x42db1
movq %r14, %rdi
callq 0x8d63e
callq 0x42dd6
jmp 0x42d88
movq %r14, %rdi
callq 0x8d3f3
testb %al, %al
je 0x42d56
movq %r14, %rdi
callq 0x8d9e8
movq %rax, %rsi
negq %rsi
cmovsq %rax, %rsi
movq %rbx, %rdi
jmp 0x42dca
movq %r14, %rdi
callq 0x8d3ab
testb %al, %al
je 0x42db1
movq %r14, %rdi
callq 0x8d63e
callq 0xd1a0
jmp 0x42d88
xorl %edi, %edi
jmp 0x42d96
xorl %r15d, %r15d
movq (%r14), %rdi
callq 0x6026d
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x3c770
jmp 0x42db5
movq %r14, %rdi
callq 0x8d3cf
testb %al, %al
je 0x42db1
movq %r14, %rdi
callq 0x8d63e
xorpd 0x7197c(%rip), %xmm0    # 0xb46d0
jmp 0x42d88
movq %r14, %rdi
callq 0x8d3ab
testb %al, %al
je 0x42db1
movq %r14, %rdi
callq 0x8d63e
movapd 0x7195e(%rip), %xmm1    # 0xb46d0
xorpd %xmm0, %xmm1
maxsd %xmm0, %xmm1
movq %rbx, %rdi
movapd %xmm1, %xmm0
jmp 0x42d8b
callq 0xd480
movq %rbx, %rdi
callq 0x8d566
jmp 0x42db5
movq 0x8(%rax), %rdi
callq 0x3f11e
testb %al, %al
je 0x42db1
movq (%r14), %rdi
movq 0x8(%r14), %rax
testq %rax, %rax
je 0x42dbd
movq 0x8(%rax), %rsi
jmp 0x42dbf
movb $0x0, (%r15)
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
xorl %esi, %esi
callq 0x36fc4
movq %rbx, %rdi
movq %rax, %rsi
callq 0x8d5c6
jmp 0x42db5