// File: miniplane[P]mintree/./BpTree.h
// Function: BpTree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, 2ul>::Node::after_removal_from_inner()
void after_removal_from_inner() {
			if (elements >= k)
				return; // everything's fine

			if (!parent)
				return; // no siblings

			size_t pos_in_parent;
			for (pos_in_parent = 0; pos_in_parent <= parent->elements; pos_in_parent++) // finds position of this inner node
				if (this == parent->children[pos_in_parent])
					break;

			Node* prev_inner = pos_in_parent > 0                ? parent->children[pos_in_parent-1] : nullptr;
			Node* next_inner = pos_in_parent < parent->elements ? parent->children[pos_in_parent+1] : nullptr;

			// inner tries to borrow key from sibling

			if (can_borrow_from(prev_inner)) // borrow from previous
				return borrow_from_node(prev_inner, pos_in_parent, true);
			else if (can_borrow_from(next_inner)) // borrow from next
				return borrow_from_node(next_inner, pos_in_parent, false);
			
			// if borrowing not possible, -> merge

			if (prev_inner)
				prev_inner->merge_nodes(this, pos_in_parent-1); // call from previous, pass current
			else if (next_inner)
				merge_nodes(next_inner, pos_in_parent); // call from current, pass next
			else
				return;
		}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x30(%rbp)
callq 0x31d0
movq -0x30(%rbp), %rdi
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
cmpq $0x2, 0xb8(%rax)
jb 0x6d30
jmp 0x6e7b
movq -0x28(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x6d3f
jmp 0x6e7b
movq $0x0, -0x10(%rbp)
movq -0x28(%rbp), %rcx
movq -0x10(%rbp), %rax
movq (%rcx), %rcx
cmpq 0xb8(%rcx), %rax
ja 0x6d7f
movq -0x28(%rbp), %rax
movq (%rax), %rcx
movq -0x10(%rbp), %rdx
cmpq 0x8(%rcx,%rdx,8), %rax
jne 0x6d6f
jmp 0x6d7f
jmp 0x6d71
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x6d47
cmpq $0x0, -0x10(%rbp)
jbe 0x6da0
movq -0x28(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
subq $0x1, %rcx
movq 0x8(%rax,%rcx,8), %rax
movq %rax, -0x38(%rbp)
jmp 0x6da8
xorl %eax, %eax
movq %rax, -0x38(%rbp)
jmp 0x6da8
movq -0x28(%rbp), %rcx
movq -0x38(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq (%rcx), %rcx
cmpq 0xb8(%rcx), %rax
jae 0x6dda
movq -0x28(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rax,%rcx,8), %rax
movq %rax, -0x40(%rbp)
jmp 0x6de2
xorl %eax, %eax
movq %rax, -0x40(%rbp)
jmp 0x6de2
movq -0x28(%rbp), %rdi
movq -0x40(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rsi
callq 0x6850
testb $0x1, %al
jne 0x6dfd
jmp 0x6e15
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x10(%rbp), %rdx
movl $0x1, %ecx
callq 0x6e90
jmp 0x6e7b
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x6850
testb $0x1, %al
jne 0x6e28
jmp 0x6e3d
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x10(%rbp), %rdx
xorl %ecx, %ecx
callq 0x6e90
jmp 0x6e7b
jmp 0x6e3f
cmpq $0x0, -0x18(%rbp)
je 0x6e5d
movq -0x28(%rbp), %rsi
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rdx
subq $0x1, %rdx
callq 0x7140
jmp 0x6e7b
cmpq $0x0, -0x20(%rbp)
je 0x6e77
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x10(%rbp), %rdx
callq 0x7140
jmp 0x6e79
jmp 0x6e7b
jmp 0x6e7b
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)