// File: /workspace/github_c_makefile_star2_O3/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: x_btcl_bop_cat_ab
er_t x_btcl_bop_cat_ab( sr_s* a, sr_s* b, sr_s* sr )
{
    // bcore_x_btcl_op.x:316:1
    
    x_btcl_clone_if_weak(a );
    x_btcl_clone_if_weak(b );
    if( sr_s_type(a) == ((tp_t)(TYPEOF_x_btcl_signature_s)) && sr_s_type(b) == ((tp_t)(TYPEOF_x_btcl_block_s)) )
    {BLM_INIT_LEVEL(1);
        x_btcl_signature_s* signature = ((x_btcl_signature_s*)(a->o));
        x_btcl_block_s* block     = ((x_btcl_block_s*)(b->o));
        x_btcl_function_s* function = x_btcl_function_s_setup(((x_btcl_function_s*)BLM_LEVEL_T_PUSH(1,x_btcl_function_s,x_btcl_function_s_create())),signature, block, NULL );
        sr_s_asc(sr,((x_btcl_function_s*)bcore_fork(function)) );
    BLM_DOWN();}
    else
    {BLM_INIT_LEVEL(1);
        x_btcl_list_s* list = ((x_btcl_list_s*)BLM_LEVEL_T_PUSH(1,x_btcl_list_s,x_btcl_list_s_create()));
        if( sr_s_type(a) == ((tp_t)(TYPEOF_x_btcl_list_s)) ) x_btcl_list_s_push_list_fork(list,((x_btcl_list_s*)(a->o)) ); else x_btcl_list_s_push_fork(list,a );
        if( sr_s_type(b) == ((tp_t)(TYPEOF_x_btcl_list_s)) ) x_btcl_list_s_push_list_fork(list,((x_btcl_list_s*)(b->o)) ); else x_btcl_list_s_push_fork(list,b );
        sr_s_asc(sr,((x_btcl_list_s*)bcore_fork(list)) );
    BLM_DOWN();}
    
    return  0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r13
callq 0x82aab
movq %r14, %rdi
callq 0x82aab
testq %r13, %r13
je 0x8eb70
movq 0x8(%r13), %rax
testq %rax, %rax
je 0x8eb70
testq %r14, %r14
je 0x8eb70
movabsq $0x7e995b597f71cb9a, %rcx # imm = 0x7E995B597F71CB9A
cmpq %rcx, 0x8(%rax)
jne 0x8eb70
movq 0x8(%r14), %rax
testq %rax, %rax
je 0x8eb70
movabsq $0x7313f38fdcab8a79, %rcx # imm = 0x7313F38FDCAB8A79
cmpq %rcx, 0x8(%rax)
jne 0x8eb70
leaq 0x10d2f5(%rip), %rax    # 0x19bdd0
movq (%rax), %rsi
leaq 0x58(%rsp), %r15
movq %r15, 0x28(%rsp)
movq %r15, %rdi
callq 0xd6675
movq $0x1, 0x10(%r15)
movq (%r13), %r12
movq (%r14), %r13
callq 0x8d94e
movabsq $-0x19831b480b40fba0, %rdx # imm = 0xE67CE4B7F4BF0460
movl $0x1, %esi
movq %r15, %rdi
movq %rax, %rcx
callq 0xd68a8
movq %rax, %r15
xorl %r14d, %r14d
movq %rax, %rdi
movq %r12, %rsi
movq %r13, %rdx
xorl %ecx, %ecx
callq 0x83921
movq %r15, %rdi
callq 0xbe7e4
movq %rax, %r15
movq %rbx, %rdi
callq 0x107ca9
testq %r15, %r15
je 0x8eb57
movq (%r15), %rdi
callq 0x1074f1
movq %rax, %r14
movq %r15, (%rbx)
movq %r14, 0x8(%rbx)
movq $0x3, 0x10(%rbx)
leaq 0x28(%rsp), %rdi
jmp 0x8edb2
movq %rbx, 0x48(%rsp)
leaq 0x10d254(%rip), %rax    # 0x19bdd0
movq (%rax), %rsi
leaq 0x58(%rsp), %r15
movq %r15, 0x50(%rsp)
movq %r15, %rdi
callq 0xd6675
movq $0x1, 0x10(%r15)
callq 0x8c302
movabsq $-0x240ec4eb25c1f3e8, %r12 # imm = 0xDBF13B14DA3E0C18
movl $0x1, %esi
movq %r15, %rdi
movq %r12, %rdx
movq %rax, %rcx
callq 0xd68a8
movq %rax, 0x20(%rsp)
testq %r13, %r13
movq %r14, 0x40(%rsp)
je 0x8ec48
movq 0x8(%r13), %rbx
testq %rbx, %rbx
je 0x8ec52
cmpq %r12, 0x8(%rbx)
jne 0x8ec54
movq (%r13), %rbp
cmpq $0x0, 0x18(%rbp)
je 0x8ec90
movq 0x20(%rsp), %rax
leaq 0x8(%rax), %r13
movl $0x10, %r12d
xorl %ebx, %ebx
movq 0x10(%rbp), %rax
movq -0x10(%rax,%r12), %rdi
movq -0x8(%rax,%r12), %r15
movq (%rax,%r12), %r14
callq 0xbe7e4
orq $0x2, %r14
movq %rax, 0x28(%rsp)
movq %r15, 0x30(%rsp)
movq %r14, 0x38(%rsp)
movq %r14, 0x10(%rsp)
movups 0x28(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r13, %rdi
callq 0xbb23d
incq %rbx
addq $0x18, %r12
cmpq 0x18(%rbp), %rbx
jb 0x8ebf9
jmp 0x8ec90
movq 0x8, %rbx
jmp 0x8ec54
xorl %ebx, %ebx
movq (%r13), %rdi
movq 0x10(%r13), %r14
callq 0xbe7e4
orq $0x2, %r14
movq %rax, 0x28(%rsp)
movq %rbx, 0x30(%rsp)
movq %r14, 0x38(%rsp)
movq 0x20(%rsp), %rax
leaq 0x8(%rax), %rdi
movq %r14, 0x10(%rsp)
movups 0x28(%rsp), %xmm0
movups %xmm0, (%rsp)
callq 0xbb23d
movq 0x40(%rsp), %rax
testq %rax, %rax
je 0x8ed2c
movq 0x8(%rax), %rbx
testq %rbx, %rbx
je 0x8ed36
movabsq $-0x240ec4eb25c1f3e8, %rcx # imm = 0xDBF13B14DA3E0C18
cmpq %rcx, 0x8(%rbx)
jne 0x8ed38
movq (%rax), %r12
cmpq $0x0, 0x18(%r12)
je 0x8ed73
movq 0x20(%rsp), %r14
addq $0x8, %r14
movl $0x10, %r13d
xorl %ebx, %ebx
movq 0x10(%r12), %rax
movq -0x10(%rax,%r13), %rdi
movq -0x8(%rax,%r13), %r15
movq (%rax,%r13), %rbp
callq 0xbe7e4
orq $0x2, %rbp
movq %rax, 0x28(%rsp)
movq %r15, 0x30(%rsp)
movq %rbp, 0x38(%rsp)
movq %rbp, 0x10(%rsp)
movups 0x28(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
callq 0xbb23d
incq %rbx
addq $0x18, %r13
cmpq 0x18(%r12), %rbx
jb 0x8ecdb
jmp 0x8ed73
movq 0x8, %rbx
jmp 0x8ed38
xorl %ebx, %ebx
movq (%rax), %rdi
movq 0x10(%rax), %r14
callq 0xbe7e4
orq $0x2, %r14
movq %rax, 0x28(%rsp)
movq %rbx, 0x30(%rsp)
movq %r14, 0x38(%rsp)
movq 0x20(%rsp), %rdi
addq $0x8, %rdi
movq %r14, 0x10(%rsp)
movups 0x28(%rsp), %xmm0
movups %xmm0, (%rsp)
callq 0xbb23d
movq 0x20(%rsp), %rdi
callq 0xbe7e4
movq %rax, %r14
movq 0x48(%rsp), %rbx
movq %rbx, %rdi
callq 0x107ca9
testq %r14, %r14
je 0x8ed9c
movq (%r14), %rdi
callq 0x1074f1
jmp 0x8ed9e
xorl %eax, %eax
movq %r14, (%rbx)
movq %rax, 0x8(%rbx)
movq $0x3, 0x10(%rbx)
leaq 0x50(%rsp), %rdi
callq 0xd6d0d
xorl %eax, %eax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq