// File: /workspace/github_c_makefile_star2_O3/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 0x97a59
movq 0x8(%rbx), %rax
testq %rax, %rax
je 0x97d97
movabsq $0x27c97e6c217d8867, %rcx # imm = 0x27C97E6C217D8867
cmpq %rcx, 0x8(%rax)
jne 0x97a70
leaq 0x1043c1(%rip), %rax    # 0x19bdd0
movq (%rax), %rsi
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0xd6675
movq $0x1, 0x10(%r14)
movq (%rbx), %rbx
callq 0x94c58
movabsq $0x4f0240b228764b7, %rdx # imm = 0x4F0240B228764B7
movl $0x1, %esi
movq %r14, %rdi
movq %rax, %rcx
callq 0xd68a8
movq 0x8(%rbx), %rcx
movq %rcx, 0x8(%rax)
movq %rax, %rdi
jmp 0x97df5
xorl %r14d, %r14d
xorl %edi, %edi
callq 0x108085
testb %al, %al
jne 0x97da3
jmp 0x97e19
movabsq $-0x644282552f36739d, %rcx # imm = 0x9BBD7DAAD0C98C63
cmpq %rcx, 0x8(%rax)
jne 0x97b2b
leaq 0x104345(%rip), %rax    # 0x19bdd0
movq (%rax), %rsi
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0xd6675
movq $0x1, 0x10(%r14)
movq (%rbx), %rbx
callq 0x955cc
movabsq $-0x838927f2963e13f, %rdx # imm = 0xF7C76D80D69C1EC1
movl $0x1, %esi
movq %r14, %rdi
movq %rax, %rcx
callq 0xd68a8
movq %rax, %r14
movq 0x8(%rbx), %rax
movq %rax, 0x8(%r14)
leaq 0x10(%rbx), %r15
cmpq $0x0, 0x10(%rbx)
jne 0x97b04
leaq 0x95b65(%rip), %rdi     # 0x12d647
leaq 0xa17c5(%rip), %rsi     # 0x1392ae
leaq 0xa17c7(%rip), %rdx     # 0x1392b7
leaq 0x9f837(%rip), %rcx     # 0x13732e
movl $0x1f7f, %r8d           # imm = 0x1F7F
xorl %eax, %eax
callq 0xbe4ef
leaq 0x10(%r14), %r12
movq %r15, %rdi
callq 0x979d5
movq %r12, %rdi
movq %rax, %rsi
callq 0x97e59
movq %r14, %rdi
addq $0x28, %rdi
addq $0x28, %rbx
jmp 0x97d7d
movabsq $0x3736f25bc629e322, %rcx # imm = 0x3736F25BC629E322
cmpq %rcx, 0x8(%rax)
jne 0x97c31
leaq 0x10428a(%rip), %rax    # 0x19bdd0
movq (%rax), %rsi
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0xd6675
movq $0x1, 0x10(%r14)
movq (%rbx), %rbx
callq 0x960fc
movabsq $0x333d2a8358c8f554, %rdx # imm = 0x333D2A8358C8F554
movl $0x1, %esi
movq %r14, %rdi
movq %rax, %rcx
callq 0xd68a8
movq %rax, %r14
movq 0x8(%rbx), %rax
movq %rax, 0x8(%r14)
cmpq $0x0, 0x10(%rbx)
jne 0x97bbb
leaq 0x95aae(%rip), %rdi     # 0x12d647
leaq 0xa170e(%rip), %rsi     # 0x1392ae
leaq 0xa1710(%rip), %rdx     # 0x1392b7
leaq 0x9f780(%rip), %rcx     # 0x13732e
movl $0x1f8a, %r8d           # imm = 0x1F8A
xorl %eax, %eax
callq 0xbe4ef
leaq 0x10(%rbx), %r12
leaq 0x28(%rbx), %r15
cmpq $0x0, 0x28(%rbx)
jne 0x97bf3
leaq 0x95a76(%rip), %rdi     # 0x12d647
leaq 0xa16fc(%rip), %rsi     # 0x1392d4
leaq 0xa16d8(%rip), %rdx     # 0x1392b7
leaq 0x9f748(%rip), %rcx     # 0x13732e
movl $0x1f8b, %r8d           # imm = 0x1F8B
xorl %eax, %eax
callq 0xbe4ef
leaq 0x10(%r14), %r13
movq %r12, %rdi
callq 0x979d5
movq %r13, %rdi
movq %rax, %rsi
callq 0x97e59
leaq 0x18(%r14), %r12
movq %r15, %rdi
callq 0x979d5
movq %r12, %rdi
movq %rax, %rsi
callq 0x97e59
movq %r14, %rdi
addq $0x38, %rdi
addq $0x40, %rbx
jmp 0x97d7d
movabsq $0x25ea5fdb026468e0, %rcx # imm = 0x25EA5FDB026468E0
cmpq %rcx, 0x8(%rax)
jne 0x97d97
leaq 0x104184(%rip), %rax    # 0x19bdd0
movq (%rax), %rsi
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0xd6675
movq $0x1, 0x10(%r14)
movq (%rbx), %rbx
callq 0x96e7c
movabsq $0x46b1264e3350e9fe, %rdx # imm = 0x46B1264E3350E9FE
movl $0x1, %esi
movq %r14, %rdi
movq %rax, %rcx
callq 0xd68a8
movq %rax, %r14
movq 0x8(%rbx), %rax
movq %rax, 0x8(%r14)
cmpq $0x0, 0x10(%rbx)
jne 0x97cc1
leaq 0x959a8(%rip), %rdi     # 0x12d647
leaq 0xa1608(%rip), %rsi     # 0x1392ae
leaq 0xa160a(%rip), %rdx     # 0x1392b7
leaq 0x9f67a(%rip), %rcx     # 0x13732e
movl $0x1f97, %r8d           # imm = 0x1F97
xorl %eax, %eax
callq 0xbe4ef
cmpq $0x0, 0x28(%rbx)
jne 0x97cf1
leaq 0x95978(%rip), %rdi     # 0x12d647
leaq 0xa15fe(%rip), %rsi     # 0x1392d4
leaq 0xa15da(%rip), %rdx     # 0x1392b7
leaq 0x9f64a(%rip), %rcx     # 0x13732e
movl $0x1f98, %r8d           # imm = 0x1F98
xorl %eax, %eax
callq 0xbe4ef
leaq 0x10(%rbx), %r13
leaq 0x28(%rbx), %r12
leaq 0x40(%rbx), %r15
cmpq $0x0, 0x40(%rbx)
jne 0x97d2d
leaq 0x9593c(%rip), %rdi     # 0x12d647
leaq 0xa15cb(%rip), %rsi     # 0x1392dd
leaq 0xa159e(%rip), %rdx     # 0x1392b7
leaq 0x9f60e(%rip), %rcx     # 0x13732e
movl $0x1f99, %r8d           # imm = 0x1F99
xorl %eax, %eax
callq 0xbe4ef
leaq 0x10(%r14), %rbp
movq %r13, %rdi
callq 0x979d5
movq %rbp, %rdi
movq %rax, %rsi
callq 0x97e59
leaq 0x18(%r14), %r13
movq %r12, %rdi
callq 0x979d5
movq %r13, %rdi
movq %rax, %rsi
callq 0x97e59
leaq 0x20(%r14), %r12
movq %r15, %rdi
callq 0x979d5
movq %r12, %rdi
movq %rax, %rsi
callq 0x97e59
movq %r14, %rdi
addq $0x48, %rdi
addq $0x58, %rbx
movq %rbx, %rsi
callq 0x54692
movq %r14, %rdi
callq 0xbe7e4
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
jmp 0x97e00
movq %rbx, %rdi
callq 0x108085
testb %al, %al
je 0x97e07
leaq 0x104026(%rip), %rax    # 0x19bdd0
movq (%rax), %rsi
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0xd6675
movq $0x1, 0x10(%r14)
callq 0x95169
movabsq $0x50e723bc207f24dc, %rdx # imm = 0x50E723BC207F24DC
movl $0x1, %esi
movq %r14, %rdi
movq %rax, %rcx
callq 0xd68a8
movq %rax, %r15
movq %rbx, %rdi
callq 0x10847b
movsd %xmm0, 0x8(%r15)
movq %r15, %rdi
callq 0xbe7e4
movq %rax, %rbx
movq %r14, %rdi
callq 0xd6d2c
jmp 0x97e47
movq 0x8(%rbx), %rax
testq %rax, %rax
je 0x97e16
movq 0x8(%rax), %r14
jmp 0x97e19
xorl %r14d, %r14d
movq %r14, %rdi
callq 0xd6ec4
leaq 0xa148f(%rip), %rdi     # 0x1392b7
leaq 0x9f4ff(%rip), %rsi     # 0x13732e
leaq 0xa14b0(%rip), %rcx     # 0x1392e6
xorl %ebx, %ebx
movl $0x1fa8, %edx           # imm = 0x1FA8
movq %rax, %r8
xorl %eax, %eax
callq 0xbe6f9
movq %rbx, %rax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq