// File: vsklad[P]cgen/./bal/bal/binarytreeindex.hpp
// Function: bal::AvlTreesIndex<unsigned int, true, &int bal::compare_clauses<false>(unsigned int const*, unsigned int const*), &unsigned int bal::clause_index_variable_id<false>(unsigned int const*)>::insertion_point_from_container_offset(bal::avl_tree_insertion_point_t&, unsigned int)
inline void insertion_point_from_container_offset(insertion_point_t& insertion_point, const container_offset_t offset) {
            static_assert(contains_data_itself, "not implemented");
            if (insertion_point.version_stamp == CONTAINER_END ||
                insertion_point.kind != btipkCurrent || insertion_point.offset != offset) {
                _assert_level_0(offset < this->size_);
                const CONTAINER_DATA_T* const p_item = _bti_item(this->data_, offset);
                bool result = false;
                if (_bti_item_parent_offset(p_item) != CONTAINER_END) {
                    const CONTAINER_DATA_T* const p_parent = _bti_item(this->data_, _bti_item_parent_offset(p_item));
                    result = (_bti_item_left_offset(p_parent) == offset) ||
                                (_bti_item_right_offset(p_parent) == offset);
                } else if _bti_item_parent_offset(p_item) {
                    const container_offset_t instance_offset = instance_determiner(_bti_item_container_item(p_item));
                    _assert_level_0(instance_offset < this->instances_.size_);
                    result = this->instances_.data_[instance_offset] == offset;
                };
                if (result) {
                    this->insertion_point_init(insertion_point);
                    insertion_point.kind = btipkCurrent;
                    insertion_point.offset = offset;
                    insertion_point.container_offset = _bti_item_container_offset(p_item, offset);
                };
            };
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rax
cmpl $-0x1, 0x4(%rax)
je 0x1c50f
movq -0x10(%rbp), %rax
cmpl $0x3, 0x8(%rax)
jne 0x1c50f
movq -0x10(%rbp), %rax
movl 0xc(%rax), %eax
cmpl -0x14(%rbp), %eax
je 0x1c637
movq -0x40(%rbp), %rcx
movl -0x14(%rbp), %eax
cmpl 0x10(%rcx), %eax
jae 0x1c51d
jmp 0x1c53c
leaq 0x41439(%rip), %rdi     # 0x5d95d
leaq 0x41223(%rip), %rsi     # 0x5d74e
movl $0x1ea, %edx            # imm = 0x1EA
leaq 0x428ce(%rip), %rcx     # 0x5ee05
callq 0xd1c0
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x14(%rbp), %ecx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x20(%rbp)
movb $0x0, -0x21(%rbp)
movq -0x20(%rbp), %rax
cmpl $-0x1, (%rax)
je 0x1c5a3
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x20(%rbp), %rcx
movl (%rcx), %ecx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movl 0x8(%rax), %ecx
movb $0x1, %al
cmpl -0x14(%rbp), %ecx
movb %al, -0x41(%rbp)
je 0x1c599
movq -0x30(%rbp), %rax
movl 0x4(%rax), %eax
cmpl -0x14(%rbp), %eax
sete %al
movb %al, -0x41(%rbp)
movb -0x41(%rbp), %al
andb $0x1, %al
movb %al, -0x21(%rbp)
jmp 0x1c604
movq -0x20(%rbp), %rax
cmpl $0x0, (%rax)
je 0x1c602
movq -0x20(%rbp), %rdi
addq $0xc, %rdi
callq 0x157a0
movq -0x40(%rbp), %rcx
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl 0x38(%rcx), %eax
jae 0x1c5ca
jmp 0x1c5e9
leaq 0x41771(%rip), %rdi     # 0x5dd42
leaq 0x41176(%rip), %rsi     # 0x5d74e
movl $0x1f3, %edx            # imm = 0x1F3
leaq 0x42821(%rip), %rcx     # 0x5ee05
callq 0xd1c0
movq -0x40(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x34(%rbp), %ecx
movl (%rax,%rcx,4), %eax
cmpl -0x14(%rbp), %eax
sete %al
andb $0x1, %al
movb %al, -0x21(%rbp)
jmp 0x1c604
testb $0x1, -0x21(%rbp)
je 0x1c635
movq -0x40(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x15780
movq -0x10(%rbp), %rax
movl $0x3, 0x8(%rax)
movl -0x14(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0xc(%rax)
movl -0x14(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
jmp 0x1c637
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)