// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: x_btcl_operator_f3_create_op
x_btcl_operator_f3* x_btcl_operator_f3_create_op( const sr_s* sr )
{
    // bcore_x_btcl_operator_f3.x:305:1
    
    if( sr_s_type(sr) == ((tp_t)(TYPEOF_x_btcl_functor_arg_uop_s)) )
    {BLM_INIT_LEVEL(1);
        const x_btcl_functor_arg_uop_s* src = ((const x_btcl_functor_arg_uop_s*)(sr->o));
        x_btcl_operator_f3_arg_nop_s* op = ((x_btcl_operator_f3_arg_nop_s*)BLM_LEVEL_T_PUSH(1,x_btcl_operator_f3_arg_nop_s,x_btcl_operator_f3_arg_nop_s_create()));
        op->index = src->index;
        BLM_RETURNV(x_btcl_operator_f3*,((x_btcl_operator_f3*)( ((x_btcl_operator_f3_arg_nop_s*)bcore_fork(op)))))
    BLM_DOWN();}
    
    if( sr_s_type(sr) == ((tp_t)(TYPEOF_x_btcl_operator_uop_s)) )
    {BLM_INIT_LEVEL(1);
        const x_btcl_operator_uop_s* src = ((const x_btcl_operator_uop_s*)(sr->o));
        x_btcl_operator_f3_uop_s* op = ((x_btcl_operator_f3_uop_s*)BLM_LEVEL_T_PUSH(1,x_btcl_operator_f3_uop_s,x_btcl_operator_f3_uop_s_create()));
        op->type = src->type;
        ASSERT( src->a.o );
        x_btcl_operator_f3_a_attach( &(op->a ), (x_btcl_operator_f3*)( x_btcl_operator_f3_create_op(&(src->a ))));
        x_source_point_s_copy(&(op->sp),&(src->sp ));
        BLM_RETURNV(x_btcl_operator_f3*,((x_btcl_operator_f3*)( ((x_btcl_operator_f3_uop_s*)bcore_fork(op)))))
    BLM_DOWN();}
    
    if( sr_s_type(sr) == ((tp_t)(TYPEOF_x_btcl_operator_bop_s)) )
    {BLM_INIT_LEVEL(1);
        const x_btcl_operator_bop_s* src = ((const x_btcl_operator_bop_s*)(sr->o));
        x_btcl_operator_f3_bop_s* op = ((x_btcl_operator_f3_bop_s*)BLM_LEVEL_T_PUSH(1,x_btcl_operator_f3_bop_s,x_btcl_operator_f3_bop_s_create()));
        op->type = src->type;
        ASSERT( src->a.o );
        ASSERT( src->b.o );
        x_btcl_operator_f3_a_attach( &(op->a ), (x_btcl_operator_f3*)( x_btcl_operator_f3_create_op(&(src->a ))));
        x_btcl_operator_f3_a_attach( &(op->b ), (x_btcl_operator_f3*)( x_btcl_operator_f3_create_op(&(src->b ))));
        x_source_point_s_copy(&(op->sp),&(src->sp ));
        BLM_RETURNV(x_btcl_operator_f3*,((x_btcl_operator_f3*)( ((x_btcl_operator_f3_bop_s*)bcore_fork(op)))))
    BLM_DOWN();}
    
    if( sr_s_type(sr) == ((tp_t)(TYPEOF_x_btcl_operator_top_s)) )
    {BLM_INIT_LEVEL(1);
        const x_btcl_operator_top_s* src = ((const x_btcl_operator_top_s*)(sr->o));
        x_btcl_operator_f3_top_s* op = ((x_btcl_operator_f3_top_s*)BLM_LEVEL_T_PUSH(1,x_btcl_operator_f3_top_s,x_btcl_operator_f3_top_s_create()));
        op->type = src->type;
        ASSERT( src->a.o );
        ASSERT( src->b.o );
        ASSERT( src->c.o );
        x_btcl_operator_f3_a_attach( &(op->a ), (x_btcl_operator_f3*)( x_btcl_operator_f3_create_op(&(src->a ))));
        x_btcl_operator_f3_a_attach( &(op->b ), (x_btcl_operator_f3*)( x_btcl_operator_f3_create_op(&(src->b ))));
        x_btcl_operator_f3_a_attach( &(op->c ), (x_btcl_operator_f3*)( x_btcl_operator_f3_create_op(&(src->c ))));
        x_source_point_s_copy(&(op->sp),&(src->sp ));
        BLM_RETURNV(x_btcl_operator_f3*,((x_btcl_operator_f3*)( ((x_btcl_operator_f3_top_s*)bcore_fork(op)))))
    BLM_DOWN();}
    
    if( sr_s_is_numeric(sr) )
    {BLM_INIT_LEVEL(1);
        x_btcl_operator_f3_const_nop_s* op = ((x_btcl_operator_f3_const_nop_s*)BLM_LEVEL_T_PUSH(1,x_btcl_operator_f3_const_nop_s,x_btcl_operator_f3_const_nop_s_create()));
        op->val = sr_s_to_f3(sr);
        BLM_RETURNV(x_btcl_operator_f3*,((x_btcl_operator_f3*)( ((x_btcl_operator_f3_const_nop_s*)bcore_fork(op)))))
    BLM_DOWN();}
    
    ERR_fa( "Cannot convert from type #<sc_t>", bnameof( sr_s_type(sr) ) );
    return  NULL;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rdi, %rbx
testq %rdi, %rdi
je 0x467d6
movq 0x8(%rbx), %rax
testq %rax, %rax
je 0x467d6
movabsq $0x27c97e6c217d8867, %rcx # imm = 0x27C97E6C217D8867
cmpq %rcx, 0x8(%rax)
jne 0x464b5
leaq 0xd1963(%rip), %rax     # 0x117dd0
movq (%rax), %rsi
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x717f5
movq $0x1, 0x10(%r14)
movq (%rbx), %rbx
callq 0x454c0
pushq $0x1
popq %rsi
movabsq $0x4f0240b228764b7, %rdx # imm = 0x4F0240B228764B7
movq %r14, %rdi
movq %rax, %rcx
callq 0x71967
movq 0x8(%rbx), %rcx
movq %rcx, 0x8(%rax)
movq %rax, %rdi
jmp 0x46832
movabsq $-0x644282552f36739d, %rcx # imm = 0x9BBD7DAAD0C98C63
cmpq %rcx, 0x8(%rax)
jne 0x4656e
leaq 0xd1900(%rip), %rax     # 0x117dd0
movq (%rax), %rsi
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x717f5
movq $0x1, 0x10(%r14)
movq (%rbx), %rbx
callq 0x45670
pushq $0x1
popq %rsi
movabsq $-0x838927f2963e13f, %rdx # imm = 0xF7C76D80D69C1EC1
movq %r14, %rdi
movq %rax, %rcx
callq 0x71967
movq %rax, %r14
movq 0x8(%rbx), %rax
movq %rax, 0x8(%r14)
leaq 0x10(%rbx), %r15
cmpq $0x0, 0x10(%rbx)
jne 0x46547
leaq 0x64122(%rip), %rdi     # 0xaa647
leaq 0x701ae(%rip), %rsi     # 0xb66da
leaq 0x701b0(%rip), %rdx     # 0xb66e3
leaq 0x6e214(%rip), %rcx     # 0xb474e
movl $0x1f7f, %r8d           # imm = 0x1F7F
xorl %eax, %eax
callq 0x5ffac
leaq 0x10(%r14), %r12
movq %r15, %rdi
callq 0x4642f
movq %r12, %rdi
movq %rax, %rsi
callq 0x46897
movq %r14, %rdi
addq $0x28, %rdi
addq $0x28, %rbx
jmp 0x467bc
movabsq $0x3736f25bc629e322, %rcx # imm = 0x3736F25BC629E322
cmpq %rcx, 0x8(%rax)
jne 0x46672
leaq 0xd1847(%rip), %rax     # 0x117dd0
movq (%rax), %rsi
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x717f5
movq $0x1, 0x10(%r14)
movq (%rbx), %rbx
callq 0x45ab0
pushq $0x1
popq %rsi
movabsq $0x333d2a8358c8f554, %rdx # imm = 0x333D2A8358C8F554
movq %r14, %rdi
movq %rax, %rcx
callq 0x71967
movq %rax, %r14
movq 0x8(%rbx), %rax
movq %rax, 0x8(%r14)
cmpq $0x0, 0x10(%rbx)
jne 0x465fc
leaq 0x6406d(%rip), %rdi     # 0xaa647
leaq 0x700f9(%rip), %rsi     # 0xb66da
leaq 0x700fb(%rip), %rdx     # 0xb66e3
leaq 0x6e15f(%rip), %rcx     # 0xb474e
movl $0x1f8a, %r8d           # imm = 0x1F8A
xorl %eax, %eax
callq 0x5ffac
leaq 0x10(%rbx), %r12
leaq 0x28(%rbx), %r15
cmpq $0x0, 0x28(%rbx)
jne 0x46634
leaq 0x64035(%rip), %rdi     # 0xaa647
leaq 0x700e7(%rip), %rsi     # 0xb6700
leaq 0x700c3(%rip), %rdx     # 0xb66e3
leaq 0x6e127(%rip), %rcx     # 0xb474e
movl $0x1f8b, %r8d           # imm = 0x1F8B
xorl %eax, %eax
callq 0x5ffac
leaq 0x10(%r14), %r13
movq %r12, %rdi
callq 0x4642f
movq %r13, %rdi
movq %rax, %rsi
callq 0x46897
leaq 0x18(%r14), %r12
movq %r15, %rdi
callq 0x4642f
movq %r12, %rdi
movq %rax, %rsi
callq 0x46897
movq %r14, %rdi
addq $0x38, %rdi
addq $0x40, %rbx
jmp 0x467bc
movabsq $0x25ea5fdb026468e0, %rcx # imm = 0x25EA5FDB026468E0
cmpq %rcx, 0x8(%rax)
jne 0x467d6
leaq 0xd1743(%rip), %rax     # 0x117dd0
movq (%rax), %rsi
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x717f5
movq $0x1, 0x10(%r14)
movq (%rbx), %rbx
callq 0x45fdb
pushq $0x1
popq %rsi
movabsq $0x46b1264e3350e9fe, %rdx # imm = 0x46B1264E3350E9FE
movq %r14, %rdi
movq %rax, %rcx
callq 0x71967
movq %rax, %r14
movq 0x8(%rbx), %rax
movq %rax, 0x8(%r14)
cmpq $0x0, 0x10(%rbx)
jne 0x46700
leaq 0x63f69(%rip), %rdi     # 0xaa647
leaq 0x6fff5(%rip), %rsi     # 0xb66da
leaq 0x6fff7(%rip), %rdx     # 0xb66e3
leaq 0x6e05b(%rip), %rcx     # 0xb474e
movl $0x1f97, %r8d           # imm = 0x1F97
xorl %eax, %eax
callq 0x5ffac
cmpq $0x0, 0x28(%rbx)
jne 0x46730
leaq 0x63f39(%rip), %rdi     # 0xaa647
leaq 0x6ffeb(%rip), %rsi     # 0xb6700
leaq 0x6ffc7(%rip), %rdx     # 0xb66e3
leaq 0x6e02b(%rip), %rcx     # 0xb474e
movl $0x1f98, %r8d           # imm = 0x1F98
xorl %eax, %eax
callq 0x5ffac
leaq 0x10(%rbx), %r13
leaq 0x28(%rbx), %r12
leaq 0x40(%rbx), %r15
cmpq $0x0, 0x40(%rbx)
jne 0x4676c
leaq 0x63efd(%rip), %rdi     # 0xaa647
leaq 0x6ffb8(%rip), %rsi     # 0xb6709
leaq 0x6ff8b(%rip), %rdx     # 0xb66e3
leaq 0x6dfef(%rip), %rcx     # 0xb474e
movl $0x1f99, %r8d           # imm = 0x1F99
xorl %eax, %eax
callq 0x5ffac
leaq 0x10(%r14), %rbp
movq %r13, %rdi
callq 0x4642f
movq %rbp, %rdi
movq %rax, %rsi
callq 0x46897
leaq 0x18(%r14), %r13
movq %r12, %rdi
callq 0x4642f
movq %r13, %rdi
movq %rax, %rsi
callq 0x46897
leaq 0x20(%r14), %r12
movq %r15, %rdi
callq 0x4642f
movq %r12, %rdi
movq %rax, %rsi
callq 0x46897
movq %r14, %rdi
addq $0x48, %rdi
addq $0x58, %rbx
movq %rbx, %rsi
callq 0x2dd98
movq %r14, %rdi
callq 0x6026d
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
jmp 0x4683d
movq %rbx, %rdi
callq 0x8d3ab
testb %al, %al
je 0x46844
leaq 0xd15e7(%rip), %rax     # 0x117dd0
movq (%rax), %rsi
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x717f5
movq $0x1, 0x10(%r14)
callq 0x455ed
pushq $0x1
popq %rsi
movabsq $0x50e723bc207f24dc, %rdx # imm = 0x50E723BC207F24DC
movq %r14, %rdi
movq %rax, %rcx
callq 0x71967
movq %rax, %r15
movq %rbx, %rdi
callq 0x8d63e
movsd %xmm0, 0x8(%r15)
movq %r15, %rdi
callq 0x6026d
movq %rax, %rbx
movq %r14, %rdi
callq 0x71b64
jmp 0x46885
testq %rbx, %rbx
je 0x46858
movq 0x8(%rbx), %rax
testq %rax, %rax
je 0x46858
movq 0x8(%rax), %rdi
jmp 0x4685a
xorl %edi, %edi
callq 0x71db6
leaq 0x6fe7d(%rip), %rdi     # 0xb66e3
leaq 0x6dee1(%rip), %rsi     # 0xb474e
leaq 0x6fe9e(%rip), %rcx     # 0xb6712
xorl %ebx, %ebx
movl $0x1fa8, %edx           # imm = 0x1FA8
movq %rax, %r8
xorl %eax, %eax
callq 0x60186
movq %rbx, %rax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq