// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/lib/bcore/bcore_btree.c
// Function: bcore_btree_node_ps_s_sum
uz_t bcore_btree_node_ps_s_sum( const bcore_btree_node_ps_s* root, bl_t (*func)( vd_t arg, bcore_btree_ps_key_t key, bcore_btree_ps_val_t val ), vd_t arg )
{
    uz_t sum = 0;
    if( !root ) return sum;
    if( root->child0 )
    {
        if( root->child0 != BNUL_PS ) sum += bcore_btree_node_ps_s_sum( root->child0, func, arg );
    }
    if( root->child1 )
    {
        sum += root->kv1.val * ( ( func ) ? func( arg, root->kv1.key, root->kv1.val ) : 1 );
        if( root->child1 != BNUL_PS ) sum += bcore_btree_node_ps_s_sum( root->child1, func, arg );
    }
    if( root->child2 )
    {
        sum += root->kv2.val * ( ( func ) ? func( arg, root->kv2.key, root->kv2.val ) : 1 );
        if( root->child2 != BNUL_PS ) sum += bcore_btree_node_ps_s_sum( root->child2, func, arg );
    }
    return sum;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x1229d0
movq -0x28(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x122b3e
movq -0x10(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x122a0b
movq -0x10(%rbp), %rax
leaq 0x90eea(%rip), %rcx     # 0x1b38d0
cmpq %rcx, 0x28(%rax)
je 0x122a09
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x1229a0
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x122a0b
movq -0x10(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0x122aa0
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x122a50
movq -0x18(%rbp), %rax
movq -0x20(%rbp), %rdi
movq -0x10(%rbp), %rcx
movq (%rcx), %rsi
movq -0x10(%rbp), %rcx
movq 0x8(%rcx), %rdx
callq *%rax
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x34(%rbp)
jmp 0x122a5a
movl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x122a5a
movq -0x30(%rbp), %rax
movl -0x34(%rbp), %ecx
movslq %ecx, %rcx
imulq %rcx, %rax
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
leaq 0x90e55(%rip), %rcx     # 0x1b38d0
cmpq %rcx, 0x30(%rax)
je 0x122a9e
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x1229a0
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x122aa0
movq -0x10(%rbp), %rax
cmpq $0x0, 0x38(%rax)
je 0x122b36
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x122ae6
movq -0x18(%rbp), %rax
movq -0x20(%rbp), %rdi
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rsi
movq -0x10(%rbp), %rcx
movq 0x18(%rcx), %rdx
callq *%rax
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x44(%rbp)
jmp 0x122af0
movl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x122af0
movq -0x40(%rbp), %rax
movl -0x44(%rbp), %ecx
movslq %ecx, %rcx
imulq %rcx, %rax
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
leaq 0x90dbf(%rip), %rcx     # 0x1b38d0
cmpq %rcx, 0x38(%rax)
je 0x122b34
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x1229a0
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x122b36
movq -0x28(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax,%rax)