// File: /workspace/github_c_makefile_star2_O3/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: x_btcl_operator_f3_uop_s_setup
BCORE_DEFINE_OBJECT_INST_P_NASC_END( x_btcl_operator_f3_uop_s )

er_t x_btcl_operator_f3_uop_s_setup( x_btcl_operator_f3_uop_s* o )
{
    // bcore_x_btcl_operator_f3.x:129:5
    
    o->sa = ( x_btcl_operator_f3_spect_s* )x_btcl_operator_f3_spect_s_get_aware( o->a );
    switch( o->type )
    {
        case ((tp_t)(TYPEOF_identity)): o->fp_get = f3_ident; break;
        case ((tp_t)(TYPEOF_neg)):      o->fp_get = f3_neg;   break;
        case ((tp_t)(TYPEOF_exp)):      o->fp_get = f3_exp;   break;
        case ((tp_t)(TYPEOF_log)):      o->fp_get = f3_log;   break;
        case ((tp_t)(TYPEOF_log2)):     o->fp_get = f3_log2;  break;
        case ((tp_t)(TYPEOF_log10)):    o->fp_get = f3_log10; break;
        case ((tp_t)(TYPEOF_sin)):      o->fp_get = f3_sin;   break;
        case ((tp_t)(TYPEOF_cos)):      o->fp_get = f3_cos;   break;
        case ((tp_t)(TYPEOF_tan)):      o->fp_get = f3_tan;   break;
        case ((tp_t)(TYPEOF_tanh)):     o->fp_get = f3_tanh;  break;
        case ((tp_t)(TYPEOF_sqrt)):     o->fp_get = f3_sqrt;  break;
        case ((tp_t)(TYPEOF_sign)):     o->fp_get = f3_sign;  break;
        case ((tp_t)(TYPEOF_abs)):      o->fp_get = f3_abs;   break;
        case ((tp_t)(TYPEOF_ceil)):     o->fp_get = f3_ceil;  break;
        case ((tp_t)(TYPEOF_floor)):    o->fp_get = f3_floor; break;
        default: return  x_source_point_s_parse_error_fa(&(o->sp),"Unhandled operator type: #<sc_t>.", bnameof( o->type ) ); break;
    }
    BLM_TRY(x_btcl_operator_f3_a_setup(o->a))
    return  0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x10(%rdi), %rax
movq (%rax), %r14
leaq 0x10509c(%rip), %r12    # 0x19a8a8
movl 0x105096(%rip), %eax    # 0x19a8a8
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r12,%rax,8), %rcx
movq 0x18(%r12,%rax,8), %rdx
andq %r14, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r14, %rdx
je 0x95865
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r14, %rdx
je 0x95865
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r14, %rdx
je 0x95865
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r14, %rdx
jne 0x9586e
movq (%rax,%rcx), %r15
testq %r15, %r15
jne 0x95895
movabsq $0x37a58f457601baa0, %rdi # imm = 0x37A58F457601BAA0
movq %r14, %rsi
callq 0xe9bc5
movq %rax, %r15
leaq 0x10501e(%rip), %rdi    # 0x19a8a8
movq %r14, %rsi
movq %rax, %rdx
callq 0x115fac
movq %r15, 0x18(%rbx)
movq 0x8(%rbx), %rdi
movabsq $-0x18e04de6fabe8d86, %rax # imm = 0xE71FB2190541727A
cmpq %rax, %rdi
jle 0x95904
movabsq $0x125073191daf5430, %rax # imm = 0x125073191DAF5430
cmpq %rax, %rdi
jg 0x9595c
movabsq $-0x9fb03e6f2fe8925, %rax # imm = 0xF604FC190D0176DB
cmpq %rax, %rdi
jg 0x95a14
movabsq $-0x18e04de6fabe8d85, %rax # imm = 0xE71FB2190541727B
cmpq %rax, %rdi
je 0x95a80
movabsq $-0x16f0e7b3955c0045, %rax # imm = 0xE90F184C6AA3FFBB
cmpq %rax, %rdi
jne 0x95aa4
leaq 0x299(%rip), %rax       # 0x95b98
jmp 0x95ad3
movabsq $-0x3cedf4e70f8fbbf9, %rax # imm = 0xC3120B18F0704407
cmpq %rax, %rdi
jle 0x959a1
movabsq $-0x26cbaf10f87bc4f1, %rax # imm = 0xD93450EF07843B0F
cmpq %rax, %rdi
jg 0x959e6
movabsq $-0x3cedf4e70f8fbbf8, %rax # imm = 0xC3120B18F0704408
cmpq %rax, %rdi
je 0x95a65
movabsq $-0x31f869528f143ee7, %rax # imm = 0xCE0796AD70EBC119
cmpq %rax, %rdi
jne 0x95aa4
leaq -0x5cd0(%rip), %rax     # 0x8fc87
jmp 0x95ad3
movabsq $0x4e0f7f18e637a363, %rax # imm = 0x4E0F7F18E637A363
cmpq %rax, %rdi
jg 0x95a3e
movabsq $0x125073191daf5431, %rax # imm = 0x125073191DAF5431
cmpq %rax, %rdi
je 0x95a89
movabsq $0x2138e5192571d261, %rax # imm = 0x2138E5192571D261
cmpq %rax, %rdi
jne 0x95aa4
leaq 0x1fd(%rip), %rax       # 0x95b99
jmp 0x95ad3
movabsq $-0x7db75ee6a3133b53, %rax # imm = 0x8248A1195CECC4AD
cmpq %rax, %rdi
je 0x95acc
movabsq $-0x69eb30e6f0372831, %rax # imm = 0x9614CF190FC8D7CF
cmpq %rax, %rdi
je 0x95a77
movabsq $-0x5fc58b56bd24bc43, %rax # imm = 0xA03A74A942DB43BD
cmpq %rax, %rdi
jne 0x95aa4
leaq -0x5cb4(%rip), %rax     # 0x8fd2d
jmp 0x95ad3
movabsq $-0x26cbaf10f87bc4f0, %rax # imm = 0xD93450EF07843B10
cmpq %rax, %rdi
je 0x95a6e
movabsq $-0x266ae76f02928178, %rax # imm = 0xD9951890FD6D7E88
cmpq %rax, %rdi
jne 0x95aa4
leaq -0x5ce7(%rip), %rax     # 0x8fd28
jmp 0x95ad3
movabsq $-0x9fb03e6f2fe8924, %rax # imm = 0xF604FC190D0176DC
cmpq %rax, %rdi
je 0x95a92
movabsq $0x29c1fb6e090c590, %rax # imm = 0x29C1FB6E090C590
cmpq %rax, %rdi
jne 0x95aa4
leaq -0x5d9b(%rip), %rax     # 0x8fc9e
jmp 0x95ad3
movabsq $0x4e0f7f18e637a364, %rax # imm = 0x4E0F7F18E637A364
cmpq %rax, %rdi
je 0x95a9b
movabsq $0x56d7b2194448b0d8, %rax # imm = 0x56D7B2194448B0D8
cmpq %rax, %rdi
jne 0x95aa4
leaq -0x5da4(%rip), %rax     # 0x8fcbf
jmp 0x95ad3
leaq -0x5e01(%rip), %rax     # 0x8fc6b
jmp 0x95ad3
leaq -0x5db1(%rip), %rax     # 0x8fcc4
jmp 0x95ad3
leaq -0x5db5(%rip), %rax     # 0x8fcc9
jmp 0x95ad3
leaq -0x5d74(%rip), %rax     # 0x8fd13
jmp 0x95ad3
leaq -0x5e20(%rip), %rax     # 0x8fc70
jmp 0x95ad3
leaq -0x5ddf(%rip), %rax     # 0x8fcba
jmp 0x95ad3
leaq -0x5dc6(%rip), %rax     # 0x8fcdc
jmp 0x95ad3
addq $0x28, %rbx
callq 0xd6ec4
leaq 0xa3669(%rip), %rsi     # 0x13911d
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x8dd3f
leaq -0x5e1e(%rip), %rax     # 0x8fcb5
movq %rax, 0x20(%rbx)
movq 0x10(%rbx), %rbx
movq (%rbx), %r14
movl 0x104dc4(%rip), %eax    # 0x19a8a8
cltq
leaq (%rax,%rax,2), %rax
movq 0x20(%r12,%rax,8), %rcx
movq 0x18(%r12,%rax,8), %rdx
andq %r14, %rdx
shlq $0x4, %rdx
leaq (%rcx,%rdx), %rax
movq (%rcx,%rdx), %rdx
movl $0x8, %ecx
cmpq %r14, %rdx
je 0x95b37
movq 0x10(%rax), %rdx
movl $0x18, %ecx
cmpq %r14, %rdx
je 0x95b37
movq 0x20(%rax), %rdx
movl $0x28, %ecx
cmpq %r14, %rdx
je 0x95b37
movq 0x30(%rax), %rdx
movl $0x38, %ecx
cmpq %r14, %rdx
jne 0x95b40
movq (%rax,%rcx), %r15
testq %r15, %r15
jne 0x95b67
movabsq $0x37a58f457601baa0, %rdi # imm = 0x37A58F457601BAA0
movq %r14, %rsi
callq 0xe9bc5
movq %rax, %r15
leaq 0x104d4c(%rip), %rdi    # 0x19a8a8
movq %r14, %rsi
movq %rax, %rdx
callq 0x115fac
movq %rbx, %rdi
callq *0x10(%r15)
testq %rax, %rax
je 0x95b87
movq %rax, %rbx
leaq 0x106253(%rip), %rax    # 0x19bdd0
movq (%rax), %rdi
callq 0xd6d2c
jmp 0x95b89
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq