// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/interval_tree.c
// Function: interval_tree_left_rotate
static void interval_tree_left_rotate(GtIntervalTree *it,
                                      GtIntervalTreeNode **root,
                                      GtIntervalTreeNode *x)
{
  GtIntervalTreeNode *y;
  y = x->right;
  x->right = y->left;
  if (y->left != it->nil)
    y->left->parent = x;
  y->parent = x->parent;
  if (x->parent == it->nil)
    *root = y;
  else {
    if (x == x->parent->left)
      x->parent->left = y;
    else
      x->parent->right = y;
  }
  y->left = x;
  x->parent = y;
  /* interval tree augmentation */
  x->max = x->high;
  if (x->left != it->nil && x->left->max > x->max)
    x->max = x->left->max;
  if (x->right != it->nil && x->right->max > x->max)
    x->max = x->right->max;
  y->max = y->high;
  if (y->left != it->nil && y->left->max > y->max)
    y->max = y->left->max;
  if (y->right != it->nil && y->right->max > y->max)
    y->max = y->right->max;
}

// Assembly:
movq %rdi, -0x8(%rsp)
movq %rsi, -0x10(%rsp)
movq %rdx, -0x18(%rsp)
movq -0x18(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x20(%rsp)
movq -0x20(%rsp), %rax
movq 0x8(%rax), %rcx
movq -0x18(%rsp), %rax
movq %rcx, 0x10(%rax)
movq -0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq -0x8(%rsp), %rcx
cmpq 0x48(%rcx), %rax
je 0x8bcf4
movq -0x18(%rsp), %rcx
movq -0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq %rcx, (%rax)
movq -0x18(%rsp), %rax
movq (%rax), %rcx
movq -0x20(%rsp), %rax
movq %rcx, (%rax)
movq -0x18(%rsp), %rax
movq (%rax), %rax
movq -0x8(%rsp), %rcx
cmpq 0x48(%rcx), %rax
jne 0x8bd26
movq -0x20(%rsp), %rcx
movq -0x10(%rsp), %rax
movq %rcx, (%rax)
jmp 0x8bd5f
movq -0x18(%rsp), %rax
movq -0x18(%rsp), %rcx
movq (%rcx), %rcx
cmpq 0x8(%rcx), %rax
jne 0x8bd4c
movq -0x20(%rsp), %rcx
movq -0x18(%rsp), %rax
movq (%rax), %rax
movq %rcx, 0x8(%rax)
jmp 0x8bd5d
movq -0x20(%rsp), %rcx
movq -0x18(%rsp), %rax
movq (%rax), %rax
movq %rcx, 0x10(%rax)
jmp 0x8bd5f
movq -0x18(%rsp), %rcx
movq -0x20(%rsp), %rax
movq %rcx, 0x8(%rax)
movq -0x20(%rsp), %rcx
movq -0x18(%rsp), %rax
movq %rcx, (%rax)
movq -0x18(%rsp), %rax
movq 0x30(%rax), %rcx
movq -0x18(%rsp), %rax
movq %rcx, 0x38(%rax)
movq -0x18(%rsp), %rax
movq 0x8(%rax), %rax
movq -0x8(%rsp), %rcx
cmpq 0x48(%rcx), %rax
je 0x8bdce
movq -0x18(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rax
movq -0x18(%rsp), %rcx
cmpq 0x38(%rcx), %rax
jbe 0x8bdce
movq -0x18(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rcx
movq -0x18(%rsp), %rax
movq %rcx, 0x38(%rax)
movq -0x18(%rsp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rsp), %rcx
cmpq 0x48(%rcx), %rax
je 0x8be10
movq -0x18(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x38(%rax), %rax
movq -0x18(%rsp), %rcx
cmpq 0x38(%rcx), %rax
jbe 0x8be10
movq -0x18(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x38(%rax), %rcx
movq -0x18(%rsp), %rax
movq %rcx, 0x38(%rax)
movq -0x20(%rsp), %rax
movq 0x30(%rax), %rcx
movq -0x20(%rsp), %rax
movq %rcx, 0x38(%rax)
movq -0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq -0x8(%rsp), %rcx
cmpq 0x48(%rcx), %rax
je 0x8be64
movq -0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rax
movq -0x20(%rsp), %rcx
cmpq 0x38(%rcx), %rax
jbe 0x8be64
movq -0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rcx
movq -0x20(%rsp), %rax
movq %rcx, 0x38(%rax)
movq -0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rsp), %rcx
cmpq 0x48(%rcx), %rax
je 0x8bea6
movq -0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x38(%rax), %rax
movq -0x20(%rsp), %rcx
cmpq 0x38(%rcx), %rax
jbe 0x8bea6
movq -0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x38(%rax), %rcx
movq -0x20(%rsp), %rax
movq %rcx, 0x38(%rax)
retq
nopw (%rax,%rax)