// File: DRSY[P]MyRBTree/main.cpp
// Function: RBTree::_insert(Node*, int)
bool _insert(NodePtr_t root, int value) {
      auto [father, pptr] = findInsertion(root, value);
      if(!father) {
        std::cerr << red("inserted value already in the tree\n");
        return false;
      }
      NodePtr_t new_node = new Node_t(value);
      new_node->color = Color::red;
      new_node->father = father;
      (*pptr) = new_node;
      // father node is black
      if(isblack(father)) {
          return true;
      }
      else {
          ascend_fatherIsRed(new_node, father);
          return true;
      }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x130, %rsp            # imm = 0x130
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x108(%rbp)
movq -0x18(%rbp), %rsi
movl -0x1c(%rbp), %edx
callq 0x2f20
movq %rax, -0x30(%rbp)
movq %rdx, -0x28(%rbp)
cmpq $0x0, -0x30(%rbp)
jne 0x2e5c
leaq -0x91(%rbp), %rdi
movq %rdi, -0x110(%rbp)
callq 0x2250
movq -0x110(%rbp), %rdx
leaq 0x3393(%rip), %rsi      # 0x6004
leaq -0x90(%rbp), %rdi
callq 0x3110
jmp 0x2c7f
leaq -0xc9(%rbp), %rdi
movq %rdi, -0x118(%rbp)
callq 0x2250
movq -0x118(%rbp), %rdx
leaq 0x336c(%rip), %rsi      # 0x600c
leaq -0xc8(%rbp), %rdi
callq 0x3110
jmp 0x2cae
leaq -0x70(%rbp), %rdi
leaq -0x90(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
callq 0x3040
jmp 0x2cc7
leaq -0xf1(%rbp), %rdi
movq %rdi, -0x120(%rbp)
callq 0x2250
movq -0x120(%rbp), %rdx
leaq 0x3348(%rip), %rsi      # 0x6030
leaq -0xf0(%rbp), %rdi
callq 0x3110
jmp 0x2cf6
leaq -0x50(%rbp), %rdi
leaq -0x70(%rbp), %rsi
leaq -0xf0(%rbp), %rdx
callq 0x3040
jmp 0x2d0c
movq 0x62dd(%rip), %rdi      # 0x8ff0
leaq -0x50(%rbp), %rsi
callq 0x2150
jmp 0x2d1e
leaq -0x50(%rbp), %rdi
callq 0x20c0
leaq -0xf0(%rbp), %rdi
callq 0x20c0
leaq -0xf1(%rbp), %rdi
callq 0x21a0
leaq -0x70(%rbp), %rdi
callq 0x20c0
leaq -0xc8(%rbp), %rdi
callq 0x20c0
leaq -0xc9(%rbp), %rdi
callq 0x21a0
leaq -0x90(%rbp), %rdi
callq 0x20c0
leaq -0x91(%rbp), %rdi
callq 0x21a0
movb $0x0, -0x1(%rbp)
jmp 0x2f06
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x2e4b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x2e33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x2e27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x2e12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x2e06
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x20c0
leaq -0xf0(%rbp), %rdi
callq 0x20c0
leaq -0xf1(%rbp), %rdi
callq 0x21a0
leaq -0x70(%rbp), %rdi
callq 0x20c0
leaq -0xc8(%rbp), %rdi
callq 0x20c0
leaq -0xc9(%rbp), %rdi
callq 0x21a0
leaq -0x90(%rbp), %rdi
callq 0x20c0
leaq -0x91(%rbp), %rdi
callq 0x21a0
jmp 0x2f14
movl $0x20, %edi
callq 0x2170
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x128(%rbp)
movl -0x1c(%rbp), %esi
callq 0x2bd0
jmp 0x2e7d
movq -0x128(%rbp), %rax
movq %rax, -0x100(%rbp)
movq -0x100(%rbp), %rax
movl $0x0, 0x4(%rax)
movq -0x30(%rbp), %rcx
movq -0x100(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x100(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
movq -0x30(%rbp), %rax
cmpl $0x1, 0x4(%rax)
jne 0x2eeb
movb $0x1, -0x1(%rbp)
jmp 0x2f06
movq -0x128(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
movl $0x20, %esi
callq 0x2180
jmp 0x2f14
movq -0x108(%rbp), %rdi
movq -0x100(%rbp), %rsi
movq -0x30(%rbp), %rdx
callq 0x31c0
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x130, %rsp            # imm = 0x130
popq %rbp
retq
movq -0xa0(%rbp), %rdi
callq 0x2240