// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/sfx-bltrie.c
// Function: blindtrie_insertatsplitnode
static void blindtrie_insertatsplitnode(GtBlindtrie *blindtrie,
                                        GtBlindtriesnodeptr oldnode,
                                        GtBlindtriesymbol mm_oldsuffix,
                                        GtUword lcp,
                                        GtBlindtriesymbol mm_newsuffix,
                                        GtUword currentstartpos,
                                        GtUword
                                           currenttwobitencodingstoppos)
{
  GtBlindtriesnodeptr newleaf, newnode, previousnode, currentnode;

  gt_assert(GT_ISUNIQUEINT(mm_oldsuffix) ||
            GT_ISUNIQUEINT(mm_newsuffix) ||
            mm_oldsuffix != mm_newsuffix ||
            blindtrie_isleaf(blindtrie,oldnode) ||
            blindtrie_getdepth(blindtrie,oldnode) == lcp);

  /* insert a new node before node oldnode if necessary */
  if (blindtrie_isleaf(blindtrie,oldnode))
  {
    gt_assert(lcp > 0);
  }
  if (blindtrie_isleaf(blindtrie,oldnode) ||
      blindtrie_getdepth(blindtrie,oldnode) > lcp)
  {
    newnode = blindtrie_newnode(blindtrie);
    blindtrie_firstchar_set(blindtrie,newnode,
                            blindtrie_isleaf(blindtrie,oldnode),mm_oldsuffix);
    if (!blindtrie_isleaf(blindtrie,oldnode))
    {
      blindtrie_setdepth(blindtrie,newnode,
                         blindtrie_getdepth(blindtrie,oldnode));
      /* newnode inherits depth+children */
    }
    blindtrie_copy_either(blindtrie,newnode,oldnode);
    blindtrie_rightsibling_set(blindtrie,newnode,GT_BLINDTRIE_REFNULL);
    blindtrie_setleaf(blindtrie,oldnode,false);
    gt_assert(!GT_ISUNIQUEINT(blindtrie_firstchar_get(blindtrie,oldnode)));
    gt_assert(lcp > 0);
    blindtrie_setdepth(blindtrie,oldnode,lcp);
    /* oldnode has newnode as only child*/
    blindtrie_firstchild_set(blindtrie,oldnode,newnode);
  }
  gt_assert(blindtrie_isleaf(blindtrie,oldnode) ||
            blindtrie_getdepth(blindtrie,oldnode) == lcp);
  previousnode = GT_BLINDTRIE_REFNULL;
  currentnode = blindtrie_firstchild_get(blindtrie,oldnode);
  while (currentnode != GT_BLINDTRIE_REFNULL &&
         blindtrie_comparecharacters(blindtrie_firstchar_get(blindtrie,
                                                             currentnode),
                                     mm_newsuffix) < 0)
  {
    previousnode = currentnode;
    currentnode = blindtrie_rightsibling_get(blindtrie,currentnode);
  }
  /* insert new leaf with current suffix */
  /* search S[lcp] among the offsprings */
  newleaf = blindtrie_newleaf(blindtrie,currentstartpos,
                              currenttwobitencodingstoppos,mm_newsuffix,
                              currentnode);
  if (previousnode != GT_BLINDTRIE_REFNULL)
  {
    blindtrie_rightsibling_set(blindtrie,previousnode,newleaf);
  } else
  {
    blindtrie_firstchild_set(blindtrie,oldnode,newleaf);
  }
}

// Assembly:
subq $0x68, %rsp
movq 0x70(%rsp), %rax
movq %rdi, 0x60(%rsp)
movl %esi, 0x5c(%rsp)
movq %rdx, 0x50(%rsp)
movq %rcx, 0x48(%rsp)
movq %r8, 0x40(%rsp)
movq %r9, 0x38(%rsp)
cmpq $0x100, 0x50(%rsp)      # imm = 0x100
jae 0x2b9397
cmpq $0x100, 0x40(%rsp)      # imm = 0x100
jae 0x2b9397
movq 0x50(%rsp), %rax
cmpq 0x40(%rsp), %rax
jne 0x2b9397
movq 0x60(%rsp), %rdi
movl 0x5c(%rsp), %esi
callq 0x2b9080
testb $0x1, %al
jne 0x2b9397
movq 0x60(%rsp), %rdi
movl 0x5c(%rsp), %esi
callq 0x2b9fe0
cmpq 0x48(%rsp), %rax
je 0x2b9397
movq 0x382c3a(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x25cca3(%rip), %rsi    # 0x516013
leaq 0x2cfeec(%rip), %rdx    # 0x589263
leaq 0x2cff99(%rip), %rcx    # 0x589317
leaq 0x2cf7ee(%rip), %r8     # 0x588b73
movl $0x215, %r9d            # imm = 0x215
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2b9399
movq 0x60(%rsp), %rdi
movl 0x5c(%rsp), %esi
callq 0x2b9080
testb $0x1, %al
jne 0x2b93ad
jmp 0x2b93f3
jmp 0x2b93af
cmpq $0x0, 0x48(%rsp)
ja 0x2b93ef
movq 0x382be2(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x25cc4b(%rip), %rsi    # 0x516013
leaq 0x2cff64(%rip), %rdx    # 0x589333
leaq 0x2cff41(%rip), %rcx    # 0x589317
leaq 0x2cf796(%rip), %r8     # 0x588b73
movl $0x21a, %r9d            # imm = 0x21A
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2b93f1
jmp 0x2b93f3
movq 0x60(%rsp), %rdi
movl 0x5c(%rsp), %esi
callq 0x2b9080
testb $0x1, %al
jne 0x2b941e
movq 0x60(%rsp), %rdi
movl 0x5c(%rsp), %esi
callq 0x2b9fe0
cmpq 0x48(%rsp), %rax
jbe 0x2b9593
movq 0x60(%rsp), %rdi
callq 0x2ba3c0
movl %eax, 0x30(%rsp)
movq 0x60(%rsp), %rax
movq %rax, 0x18(%rsp)
movl 0x30(%rsp), %eax
movl %eax, 0x24(%rsp)
movq 0x60(%rsp), %rdi
movl 0x5c(%rsp), %esi
callq 0x2b9080
movq 0x18(%rsp), %rdi
movl 0x24(%rsp), %esi
movq 0x50(%rsp), %rcx
movzbl %al, %edx
andl $0x1, %edx
callq 0x2ba4c0
movq 0x60(%rsp), %rdi
movl 0x5c(%rsp), %esi
callq 0x2b9080
testb $0x1, %al
jne 0x2b94a8
movq 0x60(%rsp), %rax
movq %rax, 0x8(%rsp)
movl 0x30(%rsp), %eax
movl %eax, 0x14(%rsp)
movq 0x60(%rsp), %rdi
movl 0x5c(%rsp), %esi
callq 0x2b9fe0
movq 0x8(%rsp), %rdi
movl 0x14(%rsp), %esi
movq %rax, %rdx
callq 0x2ba560
movq 0x60(%rsp), %rdi
movl 0x30(%rsp), %esi
movl 0x5c(%rsp), %edx
callq 0x2bb340
movq 0x60(%rsp), %rdi
movl 0x30(%rsp), %esi
xorl %edx, %edx
callq 0x2baa10
movq 0x60(%rsp), %rdi
movl 0x5c(%rsp), %esi
xorl %edx, %edx
callq 0x2ba6e0
movq 0x60(%rsp), %rdi
movl 0x5c(%rsp), %esi
callq 0x2bac10
cmpq $0x100, %rax            # imm = 0x100
jb 0x2b9528
movq 0x382aa9(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x25cb12(%rip), %rsi    # 0x516013
leaq 0x2cfe33(%rip), %rdx    # 0x58933b
leaq 0x2cfe08(%rip), %rcx    # 0x589317
leaq 0x2cf65d(%rip), %r8     # 0x588b73
movl $0x22b, %r9d            # imm = 0x22B
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2b952a
jmp 0x2b952c
cmpq $0x0, 0x48(%rsp)
ja 0x2b956c
movq 0x382a65(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x25cace(%rip), %rsi    # 0x516013
leaq 0x2cfde7(%rip), %rdx    # 0x589333
leaq 0x2cfdc4(%rip), %rcx    # 0x589317
leaq 0x2cf619(%rip), %r8     # 0x588b73
movl $0x22c, %r9d            # imm = 0x22C
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2b956e
movq 0x60(%rsp), %rdi
movl 0x5c(%rsp), %esi
movq 0x48(%rsp), %rdx
callq 0x2ba560
movq 0x60(%rsp), %rdi
movl 0x5c(%rsp), %esi
movl 0x30(%rsp), %edx
callq 0x2ba5e0
jmp 0x2b9595
movq 0x60(%rsp), %rdi
movl 0x5c(%rsp), %esi
callq 0x2b9080
testb $0x1, %al
jne 0x2b95f4
movq 0x60(%rsp), %rdi
movl 0x5c(%rsp), %esi
callq 0x2b9fe0
cmpq 0x48(%rsp), %rax
je 0x2b95f4
movq 0x3829dd(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x25ca46(%rip), %rsi    # 0x516013
leaq 0x2cfcef(%rip), %rdx    # 0x5892c3
leaq 0x2cfd3c(%rip), %rcx    # 0x589317
leaq 0x2cf591(%rip), %r8     # 0x588b73
movl $0x232, %r9d            # imm = 0x232
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2b95f6
movl $0x0, 0x2c(%rsp)
movq 0x60(%rsp), %rdi
movl 0x5c(%rsp), %esi
callq 0x2b9f60
movl %eax, 0x28(%rsp)
xorl %eax, %eax
cmpl $0x0, 0x28(%rsp)
movb %al, 0x7(%rsp)
je 0x2b9642
movq 0x60(%rsp), %rdi
movl 0x28(%rsp), %esi
callq 0x2bac10
movq %rax, %rdi
movq 0x40(%rsp), %rsi
callq 0x2babc0
cmpl $0x0, %eax
setl %al
movb %al, 0x7(%rsp)
movb 0x7(%rsp), %al
testb $0x1, %al
jne 0x2b964c
jmp 0x2b9668
movl 0x28(%rsp), %eax
movl %eax, 0x2c(%rsp)
movq 0x60(%rsp), %rdi
movl 0x28(%rsp), %esi
callq 0x2ba2a0
movl %eax, 0x28(%rsp)
jmp 0x2b9610
movq 0x60(%rsp), %rdi
movq 0x38(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq 0x40(%rsp), %rcx
movl 0x28(%rsp), %r8d
callq 0x2ba660
movl %eax, 0x34(%rsp)
cmpl $0x0, 0x2c(%rsp)
je 0x2b96a5
movq 0x60(%rsp), %rdi
movl 0x2c(%rsp), %esi
movl 0x34(%rsp), %edx
callq 0x2baa10
jmp 0x2b96b7
movq 0x60(%rsp), %rdi
movl 0x5c(%rsp), %esi
movl 0x34(%rsp), %edx
callq 0x2ba5e0
addq $0x68, %rsp
retq
nopl (%rax)