// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/lib/bcore/bcore_btree.c
// Function: bcore_btree_ip_s_pull
void bcore_btree_ip_s_pull( bcore_btree_ip_s* o, bcore_btree_node_ip_s* node )
{
    if( bcore_btree_node_ip_s_is_empty( node->child0 ) )
    {
        if( bcore_btree_node_ip_s_is_full( node->child1 ) )
        {
            node->child0->kv1    = node->kv1;
            node->child0->child1 = node->child1->child0;
            bcore_btree_node_ip_s_set_parent_child1( node->child0 );
            node->kv1            = node->child1->kv1;
            node->child1->kv1    = node->child1->kv2;
            node->child1->child0 = node->child1->child1;
            node->child1->child1 = node->child1->child2;
            node->child1->child2 = NULL;
        }
        else if( bcore_btree_node_ip_s_is_full( node ) )
        {
            node->child1->kv2    = node->child1->kv1;
            node->child1->kv1    = node->kv1;
            node->child1->child2 = node->child1->child1;
            node->child1->child1 = node->child1->child0;
            node->child1->child0 = node->child0->child0;
            bcore_btree_node_ip_s_set_parent_child0( node->child1 );
            bcore_btree_ip_s_delete_node( o, node->child0 );
            node->kv1    = node->kv2;
            node->child0 = node->child1;
            node->child1 = node->child2;
            node->child2 = NULL;
        }
        else
        {
            node->child1->kv2    = node->child1->kv1;
            node->child1->kv1    = node->kv1;
            node->child1->child2 = node->child1->child1;
            node->child1->child1 = node->child1->child0;
            node->child1->child0 = node->child0->child0;
            bcore_btree_node_ip_s_set_parent_child0( node->child1 );
            bcore_btree_ip_s_delete_node( o, node->child0 );
            node->child0 = node->child1;
            node->child1 = node->child2 = NULL;
            if( node->parent )
            {
                bcore_btree_ip_s_pull( o, node->parent );
            }
            else
            {
                o->root = node->child0;
                o->root->parent = NULL;
                bcore_btree_ip_s_delete_node( o, node );
            }
        }
    }
    else if( bcore_btree_node_ip_s_is_empty( node->child1 ) )
    {
        if( bcore_btree_node_ip_s_is_full( node->child0 ) )
        {
            node->child1->kv1    = node->kv1;
            node->child1->child1 = node->child1->child0;
            node->child1->child0 = node->child0->child2;
            bcore_btree_node_ip_s_set_parent_child0( node->child1 );
            node->kv1            = node->child0->kv2;
            node->child0->child2 = NULL;
        }
        else if( bcore_btree_node_ip_s_is_full( node ) )
        {
            node->child0->kv2    = node->kv1;
            node->child0->child2 = node->child1->child0;
            bcore_btree_node_ip_s_set_parent_child2( node->child0 );
            bcore_btree_ip_s_delete_node( o, node->child1 );
            node->kv1    = node->kv2;
            node->child1 = node->child2;
            node->child2 = NULL;
        }
        else
        {
            node->child0->kv2    = node->kv1;
            node->child0->child2 = node->child1->child0;
            bcore_btree_node_ip_s_set_parent_child2( node->child0 );
            bcore_btree_ip_s_delete_node( o, node->child1 );
            node->child1 = node->child2 = NULL;
            if( node->parent )
            {
                bcore_btree_ip_s_pull( o, node->parent );
            }
            else
            {
                o->root = node->child0;
                o->root->parent = NULL;
                bcore_btree_ip_s_delete_node( o, node );
            }
        }
    }
    else // node->child2 is empty
    {
        if( bcore_btree_node_ip_s_is_full( node ) )
        {
            if( bcore_btree_node_ip_s_is_full( node->child1 ) )
            {
                node->child2->kv1 = node->kv2;
                node->child2->child1 = node->child2->child0;
                node->child2->child0 = node->child1->child2;
                bcore_btree_node_ip_s_set_parent_child0( node->child2 );
                node->kv2            = node->child1->kv2;
                node->child1->child2 = NULL;
            }
            else
            {
                node->child1->kv2    = node->kv2;
                node->child1->child2 = node->child2->child0;
                bcore_btree_node_ip_s_set_parent_child2( node->child1 );
                bcore_btree_ip_s_delete_node( o, node->child2 );
                node->child2         = NULL;
            }
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x1209c0
cmpl $0x0, %eax
je 0x1219db
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x1209a0
cmpl $0x0, %eax
je 0x1217c9
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x28(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x1208f0
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x30(%rcx), %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x30(%rcx), %rcx
movq 0x10(%rcx), %rdx
movq %rdx, (%rax)
movq 0x18(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x38(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq $0x0, 0x38(%rax)
jmp 0x1219d6
movq -0x10(%rbp), %rdi
callq 0x1209a0
cmpl $0x0, %eax
je 0x1218c2
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x30(%rcx), %rcx
movq (%rcx), %rdx
movq %rdx, 0x10(%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rcx, 0x38(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x28(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x28(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x1208b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x121360
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rdx
movq %rdx, (%rax)
movq 0x18(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rax
movq $0x0, 0x38(%rax)
jmp 0x1219d4
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x30(%rcx), %rcx
movq (%rcx), %rdx
movq %rdx, 0x10(%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x30(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rcx, 0x38(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x28(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x28(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x1208b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x121360
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq $0x0, 0x38(%rax)
movq -0x10(%rbp), %rax
movq $0x0, 0x30(%rax)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x1219a7
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x1216d0
jmp 0x1219d2
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq $0x0, 0x20(%rax)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x121360
jmp 0x1219d4
jmp 0x1219d6
jmp 0x121cf6
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x1209c0
cmpl $0x0, %eax
je 0x121be4
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x1209a0
cmpl $0x0, %eax
je 0x121a8e
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x28(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x38(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x1208b0
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x28(%rcx), %rcx
movq 0x10(%rcx), %rdx
movq %rdx, (%rax)
movq 0x18(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq $0x0, 0x38(%rax)
jmp 0x121bdf
movq -0x10(%rbp), %rdi
callq 0x1209a0
cmpl $0x0, %eax
je 0x121b29
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rcx), %rdx
movq %rdx, 0x10(%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x28(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq %rcx, 0x38(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x120930
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rsi
callq 0x121360
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rdx
movq %rdx, (%rax)
movq 0x18(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rax
movq $0x0, 0x38(%rax)
jmp 0x121bdd
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rcx), %rdx
movq %rdx, 0x10(%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x28(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq %rcx, 0x38(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x120930
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rsi
callq 0x121360
movq -0x10(%rbp), %rax
movq $0x0, 0x38(%rax)
movq -0x10(%rbp), %rax
movq $0x0, 0x30(%rax)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x121bb0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x1216d0
jmp 0x121bdb
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq $0x0, 0x20(%rax)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x121360
jmp 0x121bdd
jmp 0x121bdf
jmp 0x121cf4
movq -0x10(%rbp), %rdi
callq 0x1209a0
cmpl $0x0, %eax
je 0x121cf2
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x1209a0
cmpl $0x0, %eax
je 0x121c92
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rdx
movq %rdx, (%rax)
movq 0x18(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x28(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq 0x38(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x1208b0
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x30(%rcx), %rcx
movq 0x10(%rcx), %rdx
movq %rdx, 0x10(%rax)
movq 0x18(%rcx), %rcx
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq $0x0, 0x38(%rax)
jmp 0x121cf0
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rdx
movq %rdx, 0x10(%rax)
movq 0x18(%rcx), %rcx
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x28(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rcx, 0x38(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x120930
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rsi
callq 0x121360
movq -0x10(%rbp), %rax
movq $0x0, 0x38(%rax)
jmp 0x121cf2
jmp 0x121cf4
jmp 0x121cf6
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)