// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/interval_tree.c
// Function: interval_tree_delete_fixup
static inline void interval_tree_delete_fixup(GtIntervalTree *it,
                                              GtIntervalTreeNode *x)
{
  GtIntervalTreeNode *w;

  while ((x->color == BLACK) && (it->root != x)) {
    if (x == x->parent->left) {
      w = x->parent->right;
      if (w->color == RED) {
        w->color = BLACK;
        x->parent->color = RED;
        interval_tree_left_rotate(it, &it->root, x->parent);
        w = x->parent->right;
      }
      if ( (w->right->color == BLACK) && (w->left->color == BLACK) ) {
        w->color = RED;
        x = x->parent;
      } else {
        if (w->right->color == BLACK) {
          w->left->color = BLACK;
          w->color = RED;
          interval_tree_right_rotate(it, &it->root, w);
          w = x->parent->right;
        }
        w->color = x->parent->color;
        x->parent->color = BLACK;
        w->right->color = BLACK;
        interval_tree_left_rotate(it, &it->root, x->parent);
        x = it->root;
      }
    } else {
      w = x->parent->left;
      if (w->color == RED) {
        w->color = BLACK;
        x->parent->color = RED;
        interval_tree_right_rotate(it, &it->root, x->parent);
        w=x->parent->left;
      }
      if ( (w->right->color == BLACK) && (w->left->color == BLACK) ) {
        w->color = RED;
        x = x->parent;
      } else {
        if (w->left->color == BLACK) {
          w->right->color = BLACK;
          w->color = RED;
          interval_tree_left_rotate(it, &it->root, w);
          w=x->parent->left;
        }
        w->color = x->parent->color;
        x->parent->color = BLACK;
        w->left->color = BLACK;
        interval_tree_right_rotate(it, &it->root, x->parent);
        x = it->root;
      }
    }
  }
  x->color = BLACK;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq 0x18(%rsp), %rcx
xorl %eax, %eax
cmpl $0x0, 0x20(%rcx)
movb %al, 0xf(%rsp)
jne 0x8aa33
movq 0x20(%rsp), %rax
movq (%rax), %rax
cmpq 0x18(%rsp), %rax
setne %al
movb %al, 0xf(%rsp)
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0x8aa40
jmp 0x8ace5
movq 0x18(%rsp), %rax
movq 0x18(%rsp), %rcx
movq (%rcx), %rcx
cmpq 0x8(%rcx), %rax
jne 0x8ab9d
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
cmpl $0x1, 0x20(%rax)
jne 0x8aab6
movq 0x10(%rsp), %rax
movl $0x0, 0x20(%rax)
movq 0x18(%rsp), %rax
movq (%rax), %rax
movl $0x1, 0x20(%rax)
movq 0x20(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rax
movq (%rax), %rdx
callq 0x8bca0
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rax
cmpl $0x0, 0x20(%rax)
jne 0x8aaf2
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x20(%rax)
jne 0x8aaf2
movq 0x10(%rsp), %rax
movl $0x1, 0x20(%rax)
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x18(%rsp)
jmp 0x8ab98
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rax
cmpl $0x0, 0x20(%rax)
jne 0x8ab42
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
movl $0x0, 0x20(%rax)
movq 0x10(%rsp), %rax
movl $0x1, 0x20(%rax)
movq 0x20(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0x8beb0
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x18(%rsp), %rax
movq (%rax), %rax
movl 0x20(%rax), %ecx
movq 0x10(%rsp), %rax
movl %ecx, 0x20(%rax)
movq 0x18(%rsp), %rax
movq (%rax), %rax
movl $0x0, 0x20(%rax)
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rax
movl $0x0, 0x20(%rax)
movq 0x20(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rax
movq (%rax), %rdx
callq 0x8bca0
movq 0x20(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x18(%rsp)
jmp 0x8ace0
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
cmpl $0x1, 0x20(%rax)
jne 0x8abfc
movq 0x10(%rsp), %rax
movl $0x0, 0x20(%rax)
movq 0x18(%rsp), %rax
movq (%rax), %rax
movl $0x1, 0x20(%rax)
movq 0x20(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rax
movq (%rax), %rdx
callq 0x8beb0
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rax
cmpl $0x0, 0x20(%rax)
jne 0x8ac38
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x20(%rax)
jne 0x8ac38
movq 0x10(%rsp), %rax
movl $0x1, 0x20(%rax)
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x18(%rsp)
jmp 0x8acde
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x20(%rax)
jne 0x8ac88
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rax
movl $0x0, 0x20(%rax)
movq 0x10(%rsp), %rax
movl $0x1, 0x20(%rax)
movq 0x20(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0x8bca0
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x18(%rsp), %rax
movq (%rax), %rax
movl 0x20(%rax), %ecx
movq 0x10(%rsp), %rax
movl %ecx, 0x20(%rax)
movq 0x18(%rsp), %rax
movq (%rax), %rax
movl $0x0, 0x20(%rax)
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
movl $0x0, 0x20(%rax)
movq 0x20(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rax
movq (%rax), %rdx
callq 0x8beb0
movq 0x20(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x18(%rsp)
jmp 0x8ace0
jmp 0x8aa0e
movq 0x18(%rsp), %rax
movl $0x0, 0x20(%rax)
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)