
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Type propagation algorithm not settling */

int __regparm3 fts3DoOptimize(Fts3Table *p,int bReturnDone)

{
  ushort uVar1;
  int iVar2;
  Mem *pMem;
  char *pcVar3;
  SegmentNode *pSVar4;
  sqlite3_blob *p_00;
  bool bVar5;
  sqlite3_stmt *pStmt;
  uint uVar6;
  int iVar7;
  int extraout_EDX;
  int extraout_EDX_00;
  Fts3SegReader **ppFVar8;
  SegmentNode *pSVar9;
  SegmentNode *pSVar10;
  Fts3MultiSegReader *pFVar11;
  SegmentNode *pSVar12;
  SegmentNode *pSVar13;
  SegmentNode *pSVar14;
  Fts3SegReader *pFVar15;
  SegmentNode *pSVar16;
  int in_GS_OFFSET;
  byte bVar17;
  i64 iVar18;
  Fts3Table *pFVar19;
  char *in_stack_ffffff2c;
  char *zTerm;
  Fts3Table *in_stack_ffffff34;
  Fts3MultiSegReader *in_stack_ffffff38;
  SegmentWriter *pSVar20;
  sqlite3 *psVar21;
  int local_b8;
  int local_b4;
  int local_b0;
  int local_9c;
  sqlite3_stmt *pAllLangid;
  SegmentWriter *pWriter;
  i64 iMaxLevel;
  Fts3SegFilter filter;
  Fts3MultiSegReader csr;
  
  bVar17 = 0;
  iVar2 = *(int *)(in_GS_OFFSET + 0x14);
  pAllLangid = (sqlite3_stmt *)0x0;
  local_b8 = fts3SqlStmt(p,0x1b,&pAllLangid,(sqlite3_value **)in_stack_ffffff34);
  if (local_b8 != 0) {
LAB_00139499:
    iVar7 = local_b8;
    pFVar19 = (Fts3Table *)p->pSegments;
    sqlite3_blob_close((sqlite3_blob *)pFVar19);
    p->pSegments = (sqlite3_blob *)0x0;
    sqlite3Fts3PendingTermsClear(pFVar19);
LAB_001394c5:
    if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
      __stack_chk_fail_local();
    }
    return iVar7;
  }
  sqlite3_bind_int64(pAllLangid,p->iPrevLangid,CONCAT44(in_stack_ffffff38,in_stack_ffffff34));
  sqlite3_bind_int64(pAllLangid,p->nIndex,CONCAT44(in_stack_ffffff38,in_stack_ffffff34));
  bVar5 = false;
LAB_00139524:
  local_b8 = 0;
LAB_00139526:
  do {
    iVar7 = sqlite3_step(pAllLangid);
    pStmt = pAllLangid;
    if (iVar7 != 100) {
      iVar7 = sqlite3_reset(pAllLangid);
      if (local_b8 != 0) goto LAB_00139499;
      pFVar19 = (Fts3Table *)p->pSegments;
      sqlite3_blob_close((sqlite3_blob *)pFVar19);
      p->pSegments = (sqlite3_blob *)0x0;
      sqlite3Fts3PendingTermsClear(pFVar19);
      if (((iVar7 == 0) && ((bReturnDone & 1U) != 0)) && (iVar7 = 0x65, !bVar5)) {
        iVar7 = 0;
      }
      goto LAB_001394c5;
    }
    if (pAllLangid == (sqlite3_stmt *)0x0) {
LAB_0013a20e:
      local_9c = 0;
    }
    else {
      iVar7 = extraout_EDX;
      if (*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc) != (sqlite3_mutex *)0x0) {
        (*sqlite3Config.mutex.xMutexEnter)(*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc));
        iVar7 = extraout_EDX_00;
      }
      pMem = *(Mem **)(pStmt + 0x74);
      if ((pMem == (Mem *)0x0) || (*(short *)(pStmt + 0x88) == 0)) {
        psVar21 = *(sqlite3 **)pStmt;
        psVar21->errCode = 0x19;
        sqlite3ErrorFinish(psVar21,iVar7);
        goto LAB_0013a20e;
      }
      uVar1 = pMem->flags;
      if ((uVar1 & 4) == 0) {
        if ((uVar1 & 8) == 0) {
          local_9c = 0;
          if ((uVar1 & 0x12) != 0) {
            iVar18 = memIntValue(pMem);
            local_9c = (int)iVar18;
          }
        }
        else {
          iVar18 = doubleToInt64((pMem->u).r);
          local_9c = (int)iVar18;
        }
      }
      else {
        local_9c = (pMem->u).nZero;
      }
    }
    zTerm = (char *)0x139593;
    columnMallocFailure(pStmt);
    local_b0 = 0;
    if (local_b8 == 0) {
LAB_001395a8:
      if (local_b0 < p->nIndex) {
        do {
          pWriter = (SegmentWriter *)0x0;
          pFVar11 = &csr;
          for (iVar7 = 0xe; iVar7 != 0; iVar7 = iVar7 + -1) {
            pFVar11->apSegment = (Fts3SegReader **)0x0;
            pFVar11 = (Fts3MultiSegReader *)((int)pFVar11 + (uint)bVar17 * -8 + 4);
          }
          iMaxLevel._0_4_ = (SegmentWriter *)0x0;
          iMaxLevel._4_4_ = 0;
          pFVar11 = &csr;
          local_b8 = fts3SegReaderCursor(p,local_9c,local_b0,-2,(char *)0x0,0,1,0,&csr);
          if (local_b8 == 0) {
            local_b8 = csr.nSegment;
            if (csr.nSegment != 0) {
              local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel);
              uVar6 = iMaxLevel._4_4_;
              pSVar20 = (SegmentWriter *)iMaxLevel;
              if (local_b8 == 0) {
                if ((csr.nSegment == 1) &&
                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {
                  local_b8 = 0x65;
                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;
                  goto LAB_0013979c;
                }
                csr.pFilter = &filter;
                filter.zTerm = (char *)0x0;
                filter.nTerm = 0;
                filter.iCol = 0;
                filter.flags = 3;
                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)
                ;
                while (local_b8 == 0) {
                  zTerm = (char *)0x139706;
                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);
                  if (local_b8 != 100) {
                    if ((local_b8 == 0) &&
                       (in_stack_ffffff2c = (char *)csr.nSegment,
                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment
                                                  ), local_b8 == 0)) {
                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;
                      in_stack_ffffff2c = (char *)0x0;
                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);
                      if ((local_b8 == 0) &&
                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=
                          SBORROW4(uVar6 - iMaxLevel._4_4_,
                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=
                          (int)((uVar6 - iMaxLevel._4_4_) -
                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {
                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,
                                                       CONCAT44(zTerm,in_stack_ffffff2c));
                      }
                    }
                    break;
                  }
                  in_stack_ffffff2c = (char *)csr.nDoclist;
                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,
                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,
                                              (char *)in_stack_ffffff38,(int)pSVar20);
                }
              }
              goto LAB_00139790;
            }
            ppFVar8 = csr.apSegment;
            if (pWriter != (SegmentWriter *)0x0) goto LAB_0013979c;
          }
          else {
LAB_00139790:
            if (pWriter != (SegmentWriter *)0x0) {
LAB_0013979c:
              pcVar3 = pWriter->aData;
              pSVar20 = pWriter;
              if (pcVar3 != (char *)0x0) {
                if (sqlite3Config.bMemstat == 0) {
                  (*sqlite3Config.m.xFree)(pcVar3);
                }
                else {
                  if (mem0.mutex != (sqlite3_mutex *)0x0) {
                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                  }
                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);
                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                  (*sqlite3Config.m.xFree)(pcVar3);
                  if (mem0.mutex != (sqlite3_mutex *)0x0) {
                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                  }
                }
              }
              pcVar3 = pSVar20->zMalloc;
              if (pcVar3 != (char *)0x0) {
                if (sqlite3Config.bMemstat == 0) {
                  (*sqlite3Config.m.xFree)(pcVar3);
                }
                else {
                  if (mem0.mutex != (sqlite3_mutex *)0x0) {
                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                  }
                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);
                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                  (*sqlite3Config.m.xFree)(pcVar3);
                  if (mem0.mutex != (sqlite3_mutex *)0x0) {
                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                  }
                }
              }
              if (pSVar20->pTree != (SegmentNode *)0x0) {
                pSVar14 = pSVar20->pTree->pLeftmost;
                if (pSVar14->pParent != (SegmentNode *)0x0) {
                  pSVar13 = pSVar14->pParent->pLeftmost;
                  if (pSVar13->pParent != (SegmentNode *)0x0) {
                    pSVar9 = pSVar13->pParent->pLeftmost;
                    if (pSVar9->pParent != (SegmentNode *)0x0) {
                      pSVar16 = pSVar9->pParent->pLeftmost;
                      if (pSVar16->pParent != (SegmentNode *)0x0) {
                        pSVar10 = pSVar16->pParent->pLeftmost;
                        if (pSVar10->pParent != (SegmentNode *)0x0) {
                          pSVar12 = pSVar10->pParent->pLeftmost;
                          zTerm = (char *)0x1398d5;
                          fts3NodeFree(pSVar12->pParent);
                          do {
                            pSVar4 = pSVar12->pRight;
                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {
                              sqlite3_free((SegmentNode *)pSVar12->aData);
                            }
                            sqlite3_free(pSVar12->zMalloc);
                            sqlite3_free(pSVar12);
                            pSVar12 = pSVar4;
                          } while (pSVar4 != (SegmentNode *)0x0);
                        }
                        do {
                          while( true ) {
                            pSVar12 = pSVar10->pRight;
                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {
                              sqlite3_free((SegmentNode *)pSVar10->aData);
                            }
                            pcVar3 = pSVar10->zMalloc;
                            if (pcVar3 == (char *)0x0) break;
                            if (sqlite3Config.bMemstat == 0) {
                              (*sqlite3Config.m.xFree)(pcVar3);
                              break;
                            }
                            if (mem0.mutex != (sqlite3_mutex *)0x0) {
                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                            }
                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);
                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                            (*sqlite3Config.m.xFree)(pcVar3);
                            if (mem0.mutex != (sqlite3_mutex *)0x0) {
                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                              break;
                            }
                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;
                            (*sqlite3Config.m.xFree)(pSVar10);
LAB_0013a552:
                            pSVar10 = pSVar12;
                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;
                          }
                          if (sqlite3Config.bMemstat == 0) {
                            (*sqlite3Config.m.xFree)(pSVar10);
                            goto LAB_0013a552;
                          }
                          if (mem0.mutex != (sqlite3_mutex *)0x0) {
                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                          }
LAB_0013a46f:
                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);
                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                          (*sqlite3Config.m.xFree)(pSVar10);
                          if (mem0.mutex != (sqlite3_mutex *)0x0) {
                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                          }
                          pSVar10 = pSVar12;
                        } while (pSVar12 != (SegmentNode *)0x0);
                      }
LAB_0013a5ca:
                      do {
                        pSVar10 = pSVar16->pRight;
                        pSVar12 = (SegmentNode *)pSVar16->aData;
                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {
                          if (sqlite3Config.bMemstat == 0) {
                            (*sqlite3Config.m.xFree)(pSVar12);
                          }
                          else {
                            if (mem0.mutex != (sqlite3_mutex *)0x0) {
                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                            }
                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);
                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                            (*sqlite3Config.m.xFree)(pSVar12);
                            if (mem0.mutex != (sqlite3_mutex *)0x0) {
                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                            }
                          }
                        }
                        pcVar3 = pSVar16->zMalloc;
                        if (pcVar3 != (char *)0x0) {
                          if (sqlite3Config.bMemstat == 0) {
                            (*sqlite3Config.m.xFree)(pcVar3);
                            goto LAB_0013a6bf;
                          }
                          if (mem0.mutex != (sqlite3_mutex *)0x0) {
                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                          }
                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);
                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                          (*sqlite3Config.m.xFree)(pcVar3);
                          if (mem0.mutex != (sqlite3_mutex *)0x0) {
                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                            goto LAB_0013a6bf;
                          }
                          if (sqlite3Config.bMemstat == 0) {
                            (*sqlite3Config.m.xFree)(pSVar16);
                            goto LAB_0013a6d2;
                          }
LAB_0013a58d:
                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);
                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                          (*sqlite3Config.m.xFree)(pSVar16);
                          if (mem0.mutex != (sqlite3_mutex *)0x0) {
                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                          }
                          pSVar16 = pSVar10;
                          if (pSVar10 == (SegmentNode *)0x0) break;
                          goto LAB_0013a5ca;
                        }
LAB_0013a6bf:
                        if (sqlite3Config.bMemstat != 0) {
                          if (mem0.mutex != (sqlite3_mutex *)0x0) {
                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                          }
                          goto LAB_0013a58d;
                        }
                        (*sqlite3Config.m.xFree)(pSVar16);
LAB_0013a6d2:
                        pSVar16 = pSVar10;
                      } while (pSVar10 != (SegmentNode *)0x0);
                    }
LAB_0013a2a1:
                    do {
                      pSVar16 = pSVar9->pRight;
                      pSVar10 = (SegmentNode *)pSVar9->aData;
                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {
                        if (sqlite3Config.bMemstat == 0) {
                          (*sqlite3Config.m.xFree)(pSVar10);
                        }
                        else {
                          if (mem0.mutex != (sqlite3_mutex *)0x0) {
                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                          }
                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);
                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                          (*sqlite3Config.m.xFree)(pSVar10);
                          if (mem0.mutex != (sqlite3_mutex *)0x0) {
                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                          }
                        }
                      }
                      pcVar3 = pSVar9->zMalloc;
                      if (pcVar3 != (char *)0x0) {
                        if (sqlite3Config.bMemstat == 0) {
                          (*sqlite3Config.m.xFree)(pcVar3);
                          goto LAB_0013a393;
                        }
                        if (mem0.mutex != (sqlite3_mutex *)0x0) {
                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                        }
                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);
                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                        (*sqlite3Config.m.xFree)(pcVar3);
                        if (mem0.mutex != (sqlite3_mutex *)0x0) {
                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                          goto LAB_0013a393;
                        }
                        if (sqlite3Config.bMemstat == 0) {
                          (*sqlite3Config.m.xFree)(pSVar9);
                          goto LAB_0013a3a6;
                        }
LAB_0013a265:
                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);
                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                        (*sqlite3Config.m.xFree)(pSVar9);
                        if (mem0.mutex != (sqlite3_mutex *)0x0) {
                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                        }
                        pSVar9 = pSVar16;
                        if (pSVar16 == (SegmentNode *)0x0) break;
                        goto LAB_0013a2a1;
                      }
LAB_0013a393:
                      if (sqlite3Config.bMemstat != 0) {
                        if (mem0.mutex != (sqlite3_mutex *)0x0) {
                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                        }
                        goto LAB_0013a265;
                      }
                      (*sqlite3Config.m.xFree)(pSVar9);
LAB_0013a3a6:
                      pSVar9 = pSVar16;
                    } while (pSVar16 != (SegmentNode *)0x0);
                  }
LAB_0013998a:
                  do {
                    pSVar9 = pSVar13->pRight;
                    pSVar16 = (SegmentNode *)pSVar13->aData;
                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {
                      if (sqlite3Config.bMemstat == 0) {
                        (*sqlite3Config.m.xFree)(pSVar16);
                      }
                      else {
                        if (mem0.mutex != (sqlite3_mutex *)0x0) {
                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                        }
                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);
                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                        (*sqlite3Config.m.xFree)(pSVar16);
                        if (mem0.mutex != (sqlite3_mutex *)0x0) {
                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                        }
                      }
                    }
                    pcVar3 = pSVar13->zMalloc;
                    if (pcVar3 != (char *)0x0) {
                      if (sqlite3Config.bMemstat == 0) {
                        (*sqlite3Config.m.xFree)(pcVar3);
                        goto LAB_00139a7f;
                      }
                      if (mem0.mutex != (sqlite3_mutex *)0x0) {
                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                      }
                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);
                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                      (*sqlite3Config.m.xFree)(pcVar3);
                      if (mem0.mutex != (sqlite3_mutex *)0x0) {
                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                        goto LAB_00139a7f;
                      }
                      if (sqlite3Config.bMemstat == 0) {
                        (*sqlite3Config.m.xFree)(pSVar13);
                        goto LAB_00139a92;
                      }
LAB_0013994d:
                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);
                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                      (*sqlite3Config.m.xFree)(pSVar13);
                      if (mem0.mutex != (sqlite3_mutex *)0x0) {
                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                      }
                      pSVar13 = pSVar9;
                      if (pSVar9 == (SegmentNode *)0x0) break;
                      goto LAB_0013998a;
                    }
LAB_00139a7f:
                    if (sqlite3Config.bMemstat != 0) {
                      if (mem0.mutex != (sqlite3_mutex *)0x0) {
                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                      }
                      goto LAB_0013994d;
                    }
                    (*sqlite3Config.m.xFree)(pSVar13);
LAB_00139a92:
                    pSVar13 = pSVar9;
                  } while (pSVar9 != (SegmentNode *)0x0);
                }
LAB_00139b0a:
                do {
                  pSVar13 = pSVar14->pRight;
                  pSVar9 = (SegmentNode *)pSVar14->aData;
                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {
                    if (sqlite3Config.bMemstat == 0) {
                      (*sqlite3Config.m.xFree)(pSVar9);
                    }
                    else {
                      if (mem0.mutex != (sqlite3_mutex *)0x0) {
                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                      }
                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);
                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                      (*sqlite3Config.m.xFree)(pSVar9);
                      if (mem0.mutex != (sqlite3_mutex *)0x0) {
                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                      }
                    }
                  }
                  pcVar3 = pSVar14->zMalloc;
                  if (pcVar3 != (char *)0x0) {
                    if (sqlite3Config.bMemstat == 0) {
                      (*sqlite3Config.m.xFree)(pcVar3);
                      goto LAB_00139bff;
                    }
                    if (mem0.mutex != (sqlite3_mutex *)0x0) {
                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                    }
                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);
                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                    (*sqlite3Config.m.xFree)(pcVar3);
                    if (mem0.mutex != (sqlite3_mutex *)0x0) {
                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                      goto LAB_00139bff;
                    }
                    if (sqlite3Config.bMemstat == 0) {
                      (*sqlite3Config.m.xFree)(pSVar14);
                      goto LAB_00139c12;
                    }
LAB_00139acd:
                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);
                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                    (*sqlite3Config.m.xFree)(pSVar14);
                    if (mem0.mutex != (sqlite3_mutex *)0x0) {
                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                    }
                    pSVar14 = pSVar13;
                    if (pSVar13 == (SegmentNode *)0x0) break;
                    goto LAB_00139b0a;
                  }
LAB_00139bff:
                  if (sqlite3Config.bMemstat != 0) {
                    if (mem0.mutex != (sqlite3_mutex *)0x0) {
                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                    }
                    goto LAB_00139acd;
                  }
                  (*sqlite3Config.m.xFree)(pSVar14);
LAB_00139c12:
                  pSVar14 = pSVar13;
                } while (pSVar13 != (SegmentNode *)0x0);
              }
              if (sqlite3Config.bMemstat == 0) {
                (*sqlite3Config.m.xFree)(pSVar20);
              }
              else {
                if (mem0.mutex != (sqlite3_mutex *)0x0) {
                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                }
                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);
                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                (*sqlite3Config.m.xFree)(pSVar20);
                if (mem0.mutex != (sqlite3_mutex *)0x0) {
                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                }
              }
            }
LAB_00139c80:
            ppFVar8 = csr.apSegment;
            if (0 < csr.nSegment) {
              pFVar15 = *csr.apSegment;
LAB_00139c92:
              local_b4 = 0;
              ppFVar8 = csr.apSegment;
              do {
                if (pFVar15 == (Fts3SegReader *)0x0) {
LAB_00139cf4:
                  if (csr.nSegment <= local_b4 + 1) break;
                }
                else {
                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&
                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {
                    if (sqlite3Config.bMemstat == 0) {
                      (*sqlite3Config.m.xFree)(pcVar3);
                    }
                    else {
                      if (mem0.mutex != (sqlite3_mutex *)0x0) {
                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                      }
                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);
                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                      (*sqlite3Config.m.xFree)(pcVar3);
                      if (mem0.mutex != (sqlite3_mutex *)0x0) {
                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                      }
                    }
                  }
                  if ((pFVar15->rootOnly == '\0') &&
                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {
                    if (sqlite3Config.bMemstat == 0) {
                      (*sqlite3Config.m.xFree)(pcVar3);
                    }
                    else {
                      if (mem0.mutex != (sqlite3_mutex *)0x0) {
                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                      }
                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);
                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                      (*sqlite3Config.m.xFree)(pcVar3);
                      if (mem0.mutex != (sqlite3_mutex *)0x0) {
                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                      }
                    }
                  }
                  p_00 = pFVar15->pBlob;
                  if (p_00 != (sqlite3_blob *)0x0) {
                    psVar21 = *(sqlite3 **)(p_00 + 0x14);
                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {
                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);
                    }
                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));
                    if (psVar21->pnBytesFreed == (int *)0x0) {
                      if (sqlite3Config.bMemstat == 0) {
                        (*sqlite3Config.m.xFree)(p_00);
                      }
                      else {
                        if (mem0.mutex != (sqlite3_mutex *)0x0) {
                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                        }
                        iVar7 = (*sqlite3Config.m.xSize)(p_00);
                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                        (*sqlite3Config.m.xFree)(p_00);
                        if (mem0.mutex != (sqlite3_mutex *)0x0) {
                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                        }
                      }
                    }
                    else {
                      zTerm = (char *)0x139f87;
                      measureAllocationSize(psVar21,p_00);
                    }
                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {
                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);
                    }
                  }
                  if (sqlite3Config.bMemstat != 0) {
                    if (mem0.mutex != (sqlite3_mutex *)0x0) {
                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                    }
                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);
                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
                    (*sqlite3Config.m.xFree)(pFVar15);
                    ppFVar8 = csr.apSegment;
                    if (mem0.mutex != (sqlite3_mutex *)0x0) {
                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                      ppFVar8 = csr.apSegment;
                    }
                    goto LAB_00139cf4;
                  }
                  (*sqlite3Config.m.xFree)(pFVar15);
                  ppFVar8 = csr.apSegment;
                  if (csr.nSegment <= local_b4 + 1) break;
                }
                local_b4 = local_b4 + 1;
                pFVar15 = ppFVar8[local_b4];
              } while( true );
            }
          }
          if (ppFVar8 != (Fts3SegReader **)0x0) {
            if (sqlite3Config.bMemstat == 0) {
              (*sqlite3Config.m.xFree)(ppFVar8);
            }
            else {
              if (mem0.mutex != (sqlite3_mutex *)0x0) {
                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
              }
              iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);
              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
              (*sqlite3Config.m.xFree)(ppFVar8);
              if (mem0.mutex != (sqlite3_mutex *)0x0) {
                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
              }
            }
          }
          pcVar3 = csr.aBuffer;
          if (csr.aBuffer != (char *)0x0) {
            if (sqlite3Config.bMemstat == 0) {
              (*sqlite3Config.m.xFree)(csr.aBuffer);
            }
            else {
              if (mem0.mutex != (sqlite3_mutex *)0x0) {
                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
              }
              iVar7 = (*sqlite3Config.m.xSize)(pcVar3);
              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;
              (*sqlite3Config.m.xFree)(pcVar3);
              if (mem0.mutex != (sqlite3_mutex *)0x0) {
                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
              }
            }
          }
          if (local_b8 != 0x65) goto LAB_00139ee4;
          local_b0 = local_b0 + 1;
          bVar5 = true;
          if (p->nIndex <= local_b0) break;
        } while( true );
      }
      goto LAB_00139524;
    }
  } while( true );
LAB_00139ee4:
  local_b0 = local_b0 + 1;
  if (local_b8 != 0) goto LAB_00139526;
  goto LAB_001395a8;
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Removing unreachable block (ram,0x0013954a) */
/* WARNING: Removing unreachable block (ram,0x00139553) */
/* WARNING: Removing unreachable block (ram,0x00139560) */
/* WARNING: Removing unreachable block (ram,0x0013956b) */
/* WARNING: Removing unreachable block (ram,0x0013a200) */
/* WARNING: Removing unreachable block (ram,0x00139579) */
/* WARNING: Removing unreachable block (ram,0x0013a408) */
/* WARNING: Removing unreachable block (ram,0x0013a843) */
/* WARNING: Removing unreachable block (ram,0x0013a854) */
/* WARNING: Removing unreachable block (ram,0x0013a411) */
/* WARNING: Removing unreachable block (ram,0x00139586) */
/* WARNING: Removing unreachable block (ram,0x00139758) */
/* WARNING: Removing unreachable block (ram,0x0013977b) */
/* WARNING: Removing unreachable block (ram,0x0013a80d) */
/* WARNING: Removing unreachable block (ram,0x0013978b) */
/* WARNING: Removing unreachable block (ram,0x0013979c) */
/* WARNING: Removing unreachable block (ram,0x001397ad) */
/* WARNING: Removing unreachable block (ram,0x0013a180) */
/* WARNING: Removing unreachable block (ram,0x001397bb) */
/* WARNING: Removing unreachable block (ram,0x001397c5) */
/* WARNING: Removing unreachable block (ram,0x001397d2) */
/* WARNING: Removing unreachable block (ram,0x001397ff) */
/* WARNING: Removing unreachable block (ram,0x0013980c) */
/* WARNING: Removing unreachable block (ram,0x00139817) */
/* WARNING: Removing unreachable block (ram,0x0013a170) */
/* WARNING: Removing unreachable block (ram,0x00139822) */
/* WARNING: Removing unreachable block (ram,0x0013982c) */
/* WARNING: Removing unreachable block (ram,0x00139837) */
/* WARNING: Removing unreachable block (ram,0x00139860) */
/* WARNING: Removing unreachable block (ram,0x0013986b) */
/* WARNING: Removing unreachable block (ram,0x00139879) */
/* WARNING: Removing unreachable block (ram,0x0013988a) */
/* WARNING: Removing unreachable block (ram,0x00139897) */
/* WARNING: Removing unreachable block (ram,0x0013a238) */
/* WARNING: Removing unreachable block (ram,0x001398a5) */
/* WARNING: Removing unreachable block (ram,0x0013a780) */
/* WARNING: Removing unreachable block (ram,0x001398b6) */
/* WARNING: Removing unreachable block (ram,0x001398c3) */
/* WARNING: Removing unreachable block (ram,0x0013990f) */
/* WARNING: Removing unreachable block (ram,0x001398e8) */
/* WARNING: Removing unreachable block (ram,0x0013991c) */
/* WARNING: Removing unreachable block (ram,0x001398f2) */
/* WARNING: Removing unreachable block (ram,0x0013a430) */
/* WARNING: Removing unreachable block (ram,0x0013990d) */
/* WARNING: Removing unreachable block (ram,0x0013a43c) */
/* WARNING: Removing unreachable block (ram,0x0013a4ab) */
/* WARNING: Removing unreachable block (ram,0x0013a4bc) */
/* WARNING: Removing unreachable block (ram,0x0013a4c8) */
/* WARNING: Removing unreachable block (ram,0x0013a4d2) */
/* WARNING: Removing unreachable block (ram,0x0013a6f0) */
/* WARNING: Removing unreachable block (ram,0x0013a4da) */
/* WARNING: Removing unreachable block (ram,0x0013a4ee) */
/* WARNING: Removing unreachable block (ram,0x0013a501) */
/* WARNING: Removing unreachable block (ram,0x0013a531) */
/* WARNING: Removing unreachable block (ram,0x0013a53f) */
/* WARNING: Removing unreachable block (ram,0x0013a547) */
/* WARNING: Removing unreachable block (ram,0x0013a450) */
/* WARNING: Removing unreachable block (ram,0x0013a464) */
/* WARNING: Removing unreachable block (ram,0x0013a758) */
/* WARNING: Removing unreachable block (ram,0x0013a46f) */
/* WARNING: Removing unreachable block (ram,0x0013a494) */
/* WARNING: Removing unreachable block (ram,0x0013a49f) */
/* WARNING: Removing unreachable block (ram,0x0013a763) */
/* WARNING: Removing unreachable block (ram,0x0013a552) */
/* WARNING: Removing unreachable block (ram,0x0013a55e) */
/* WARNING: Removing unreachable block (ram,0x0013a5ca) */
/* WARNING: Removing unreachable block (ram,0x0013a5de) */
/* WARNING: Removing unreachable block (ram,0x0013a5e2) */
/* WARNING: Removing unreachable block (ram,0x0013a720) */
/* WARNING: Removing unreachable block (ram,0x0013a5ea) */
/* WARNING: Removing unreachable block (ram,0x0013a5f4) */
/* WARNING: Removing unreachable block (ram,0x0013a5ff) */
/* WARNING: Removing unreachable block (ram,0x0013a778) */
/* WARNING: Removing unreachable block (ram,0x0013a62c) */
/* WARNING: Removing unreachable block (ram,0x0013a640) */
/* WARNING: Removing unreachable block (ram,0x0013a647) */
/* WARNING: Removing unreachable block (ram,0x0013a708) */
/* WARNING: Removing unreachable block (ram,0x0013a64f) */
/* WARNING: Removing unreachable block (ram,0x0013a663) */
/* WARNING: Removing unreachable block (ram,0x0013a676) */
/* WARNING: Removing unreachable block (ram,0x0013a6b1) */
/* WARNING: Removing unreachable block (ram,0x0013a6bf) */
/* WARNING: Removing unreachable block (ram,0x0013a6c7) */
/* WARNING: Removing unreachable block (ram,0x0013a568) */
/* WARNING: Removing unreachable block (ram,0x0013a57c) */
/* WARNING: Removing unreachable block (ram,0x0013a587) */
/* WARNING: Removing unreachable block (ram,0x0013a738) */
/* WARNING: Removing unreachable block (ram,0x0013a58d) */
/* WARNING: Removing unreachable block (ram,0x0013a5b3) */
/* WARNING: Removing unreachable block (ram,0x0013a5be) */
/* WARNING: Removing unreachable block (ram,0x0013a743) */
/* WARNING: Removing unreachable block (ram,0x0013a6d2) */
/* WARNING: Removing unreachable block (ram,0x0013a6de) */
/* WARNING: Removing unreachable block (ram,0x0013a2a1) */
/* WARNING: Removing unreachable block (ram,0x0013a2b5) */
/* WARNING: Removing unreachable block (ram,0x0013a2b9) */
/* WARNING: Removing unreachable block (ram,0x0013a3d0) */
/* WARNING: Removing unreachable block (ram,0x0013a2c1) */
/* WARNING: Removing unreachable block (ram,0x0013a2cb) */
/* WARNING: Removing unreachable block (ram,0x0013a2d6) */
/* WARNING: Removing unreachable block (ram,0x0013a400) */
/* WARNING: Removing unreachable block (ram,0x0013a303) */
/* WARNING: Removing unreachable block (ram,0x0013a318) */
/* WARNING: Removing unreachable block (ram,0x0013a31f) */
/* WARNING: Removing unreachable block (ram,0x0013a3c0) */
/* WARNING: Removing unreachable block (ram,0x0013a327) */
/* WARNING: Removing unreachable block (ram,0x0013a33b) */
/* WARNING: Removing unreachable block (ram,0x0013a34e) */
/* WARNING: Removing unreachable block (ram,0x0013a385) */
/* WARNING: Removing unreachable block (ram,0x0013a393) */
/* WARNING: Removing unreachable block (ram,0x0013a39b) */
/* WARNING: Removing unreachable block (ram,0x0013a240) */
/* WARNING: Removing unreachable block (ram,0x0013a254) */
/* WARNING: Removing unreachable block (ram,0x0013a25f) */
/* WARNING: Removing unreachable block (ram,0x0013a3e8) */
/* WARNING: Removing unreachable block (ram,0x0013a265) */
/* WARNING: Removing unreachable block (ram,0x0013a28a) */
/* WARNING: Removing unreachable block (ram,0x0013a295) */
/* WARNING: Removing unreachable block (ram,0x0013a3f3) */
/* WARNING: Removing unreachable block (ram,0x0013a3a6) */
/* WARNING: Removing unreachable block (ram,0x0013a3b2) */
/* WARNING: Removing unreachable block (ram,0x0013998a) */
/* WARNING: Removing unreachable block (ram,0x0013999e) */
/* WARNING: Removing unreachable block (ram,0x001399a2) */
/* WARNING: Removing unreachable block (ram,0x0013a120) */
/* WARNING: Removing unreachable block (ram,0x001399aa) */
/* WARNING: Removing unreachable block (ram,0x001399b4) */
/* WARNING: Removing unreachable block (ram,0x001399bf) */
/* WARNING: Removing unreachable block (ram,0x0013a1f0) */
/* WARNING: Removing unreachable block (ram,0x001399ec) */
/* WARNING: Removing unreachable block (ram,0x00139a00) */
/* WARNING: Removing unreachable block (ram,0x00139a07) */
/* WARNING: Removing unreachable block (ram,0x0013a040) */
/* WARNING: Removing unreachable block (ram,0x00139a0f) */
/* WARNING: Removing unreachable block (ram,0x00139a23) */
/* WARNING: Removing unreachable block (ram,0x00139a36) */
/* WARNING: Removing unreachable block (ram,0x00139a71) */
/* WARNING: Removing unreachable block (ram,0x00139a7f) */
/* WARNING: Removing unreachable block (ram,0x00139a87) */
/* WARNING: Removing unreachable block (ram,0x00139928) */
/* WARNING: Removing unreachable block (ram,0x0013993c) */
/* WARNING: Removing unreachable block (ram,0x00139947) */
/* WARNING: Removing unreachable block (ram,0x0013a1a0) */
/* WARNING: Removing unreachable block (ram,0x0013994d) */
/* WARNING: Removing unreachable block (ram,0x00139973) */
/* WARNING: Removing unreachable block (ram,0x0013997e) */
/* WARNING: Removing unreachable block (ram,0x0013a1ab) */
/* WARNING: Removing unreachable block (ram,0x00139a92) */
/* WARNING: Removing unreachable block (ram,0x00139a9e) */
/* WARNING: Removing unreachable block (ram,0x00139b0a) */
/* WARNING: Removing unreachable block (ram,0x00139b1e) */
/* WARNING: Removing unreachable block (ram,0x00139b22) */
/* WARNING: Removing unreachable block (ram,0x0013a0e8) */
/* WARNING: Removing unreachable block (ram,0x00139b2a) */
/* WARNING: Removing unreachable block (ram,0x00139b34) */
/* WARNING: Removing unreachable block (ram,0x00139b3f) */
/* WARNING: Removing unreachable block (ram,0x0013a198) */
/* WARNING: Removing unreachable block (ram,0x00139b6c) */
/* WARNING: Removing unreachable block (ram,0x00139b80) */
/* WARNING: Removing unreachable block (ram,0x00139b87) */
/* WARNING: Removing unreachable block (ram,0x0013a0d0) */
/* WARNING: Removing unreachable block (ram,0x00139b8f) */
/* WARNING: Removing unreachable block (ram,0x00139ba3) */
/* WARNING: Removing unreachable block (ram,0x00139bb6) */
/* WARNING: Removing unreachable block (ram,0x00139bf1) */
/* WARNING: Removing unreachable block (ram,0x00139bff) */
/* WARNING: Removing unreachable block (ram,0x00139c07) */
/* WARNING: Removing unreachable block (ram,0x00139aa8) */
/* WARNING: Removing unreachable block (ram,0x00139abc) */
/* WARNING: Removing unreachable block (ram,0x00139ac7) */
/* WARNING: Removing unreachable block (ram,0x0013a100) */
/* WARNING: Removing unreachable block (ram,0x00139acd) */
/* WARNING: Removing unreachable block (ram,0x00139af3) */
/* WARNING: Removing unreachable block (ram,0x00139afe) */
/* WARNING: Removing unreachable block (ram,0x0013a10b) */
/* WARNING: Removing unreachable block (ram,0x00139c12) */
/* WARNING: Removing unreachable block (ram,0x00139c1e) */
/* WARNING: Removing unreachable block (ram,0x0013a158) */
/* WARNING: Removing unreachable block (ram,0x00139c29) */
/* WARNING: Removing unreachable block (ram,0x00139c33) */
/* WARNING: Removing unreachable block (ram,0x00139c3e) */
/* WARNING: Removing unreachable block (ram,0x00139c6b) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

int __regparm3 FUN_00139450(int param_1,uint param_2)

{
  bool bVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int *piVar6;
  int **ppiVar7;
  int in_GS_OFFSET;
  byte bVar8;
  int local_b8;
  int local_b4;
  int local_b0;
  undefined4 local_74;
  undefined4 local_70;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined4 local_5c;
  int *local_58;
  int local_54;
  undefined4 *local_4c;
  int local_48;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  int local_20;
  
  bVar8 = 0;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_b8 = FUN_00101610();
  if (local_b8 != 0) {
LAB_00139499:
    iVar2 = local_b8;
    FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));
    *(undefined4 *)(param_1 + 0xf8) = 0;
    FUN_0004f080();
LAB_001394c5:
    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
      FUN_00153870();
    }
    return iVar2;
  }
  FUN_00079e80();
  FUN_00079e00();
  bVar1 = false;
LAB_00139524:
  local_b8 = 0;
LAB_00139526:
  do {
    iVar2 = FUN_000e7e00(0);
    if (iVar2 != 100) {
      iVar2 = FUN_000bfe40(0);
      if (local_b8 != 0) goto LAB_00139499;
      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));
      *(undefined4 *)(param_1 + 0xf8) = 0;
      FUN_0004f080();
      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {
        iVar2 = 0;
      }
      goto LAB_001394c5;
    }
    FUN_0004c6c0();
    local_b0 = 0;
    if (local_b8 == 0) {
LAB_001395a8:
      if (local_b0 < *(int *)(param_1 + 0xfc)) {
        do {
          ppiVar7 = &local_58;
          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {
            *ppiVar7 = (int *)0x0;
            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;
          }
          local_74 = 0;
          local_70 = 0;
          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);
          if (local_b8 == 0) {
            local_b8 = local_54;
            piVar6 = local_58;
            if (local_54 != 0) {
              local_b8 = FUN_00108b40(&local_74);
              if (local_b8 == 0) {
                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {
                  local_b8 = 0x65;
                  goto LAB_00139c92;
                }
                local_4c = &local_68;
                local_68 = 0;
                local_64 = 0;
                local_60 = 0;
                local_5c = 3;
                local_b8 = FUN_0012cf60(0);
                while (local_b8 == 0) {
                  local_b8 = FUN_0012ba30();
                  if (local_b8 != 100) {
                    if (local_b8 == 0) {
                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);
                    }
                    break;
                  }
                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);
                }
              }
              goto LAB_00139c80;
            }
          }
          else {
LAB_00139c80:
            piVar6 = local_58;
            if (0 < local_54) {
              iVar2 = *local_58;
LAB_00139c92:
              local_b4 = 0;
              piVar6 = local_58;
              do {
                if (iVar2 == 0) {
LAB_00139cf4:
                  if (local_54 <= local_b4 + 1) break;
                }
                else {
                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))
                  {
                    if (DAT_001bb3e0 == 0) {
                      (*DAT_001bb410)(iVar4);
                    }
                    else {
                      if (DAT_001bcdc4 != 0) {
                        (*DAT_001bb43c)(DAT_001bcdc4);
                      }
                      iVar5 = (*DAT_001bb418)(iVar4);
                      DAT_001bce04 = DAT_001bce04 + -1;
                      DAT_001bcde0 = DAT_001bcde0 - iVar5;
                      (*DAT_001bb410)(iVar4);
                      if (DAT_001bcdc4 != 0) {
                        (*DAT_001bb444)(DAT_001bcdc4);
                      }
                    }
                  }
                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)
                     ) {
                    if (DAT_001bb3e0 == 0) {
                      (*DAT_001bb410)(iVar4);
                    }
                    else {
                      if (DAT_001bcdc4 != 0) {
                        (*DAT_001bb43c)(DAT_001bcdc4);
                      }
                      iVar5 = (*DAT_001bb418)(iVar4);
                      DAT_001bce04 = DAT_001bce04 + -1;
                      DAT_001bcde0 = DAT_001bcde0 - iVar5;
                      (*DAT_001bb410)(iVar4);
                      if (DAT_001bcdc4 != 0) {
                        (*DAT_001bb444)(DAT_001bcdc4);
                      }
                    }
                  }
                  iVar4 = *(int *)(iVar2 + 0x34);
                  if (iVar4 != 0) {
                    iVar5 = *(int *)(iVar4 + 0x14);
                    if (*(int *)(iVar5 + 0xc) != 0) {
                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));
                    }
                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));
                    if (*(int *)(iVar5 + 0x1e0) == 0) {
                      if (DAT_001bb3e0 == 0) {
                        (*DAT_001bb410)(iVar4);
                      }
                      else {
                        if (DAT_001bcdc4 != 0) {
                          (*DAT_001bb43c)(DAT_001bcdc4);
                        }
                        iVar3 = (*DAT_001bb418)(iVar4);
                        DAT_001bce04 = DAT_001bce04 + -1;
                        DAT_001bcde0 = DAT_001bcde0 - iVar3;
                        (*DAT_001bb410)(iVar4);
                        if (DAT_001bcdc4 != 0) {
                          (*DAT_001bb444)(DAT_001bcdc4);
                        }
                      }
                    }
                    else {
                      FUN_0003a540();
                    }
                    if (*(int *)(iVar5 + 0xc) != 0) {
                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));
                    }
                  }
                  if (DAT_001bb3e0 != 0) {
                    if (DAT_001bcdc4 != 0) {
                      (*DAT_001bb43c)(DAT_001bcdc4);
                    }
                    iVar4 = (*DAT_001bb418)(iVar2);
                    DAT_001bce04 = DAT_001bce04 + -1;
                    DAT_001bcde0 = DAT_001bcde0 - iVar4;
                    (*DAT_001bb410)(iVar2);
                    piVar6 = local_58;
                    if (DAT_001bcdc4 != 0) {
                      (*DAT_001bb444)(DAT_001bcdc4);
                      piVar6 = local_58;
                    }
                    goto LAB_00139cf4;
                  }
                  (*DAT_001bb410)(iVar2);
                  piVar6 = local_58;
                  if (local_54 <= local_b4 + 1) break;
                }
                local_b4 = local_b4 + 1;
                iVar2 = piVar6[local_b4];
              } while( true );
            }
          }
          if (piVar6 != (int *)0x0) {
            if (DAT_001bb3e0 == 0) {
              (*DAT_001bb410)(piVar6);
            }
            else {
              if (DAT_001bcdc4 != 0) {
                (*DAT_001bb43c)(DAT_001bcdc4);
              }
              iVar2 = (*DAT_001bb418)(piVar6);
              DAT_001bce04 = DAT_001bce04 + -1;
              DAT_001bcde0 = DAT_001bcde0 - iVar2;
              (*DAT_001bb410)(piVar6);
              if (DAT_001bcdc4 != 0) {
                (*DAT_001bb444)(DAT_001bcdc4);
              }
            }
          }
          iVar2 = local_48;
          if (local_48 != 0) {
            if (DAT_001bb3e0 == 0) {
              (*DAT_001bb410)(local_48);
            }
            else {
              if (DAT_001bcdc4 != 0) {
                (*DAT_001bb43c)(DAT_001bcdc4);
              }
              iVar4 = (*DAT_001bb418)(iVar2);
              DAT_001bce04 = DAT_001bce04 + -1;
              DAT_001bcde0 = DAT_001bcde0 - iVar4;
              (*DAT_001bb410)(iVar2);
              if (DAT_001bcdc4 != 0) {
                (*DAT_001bb444)(DAT_001bcdc4);
              }
            }
          }
          if (local_b8 != 0x65) goto LAB_00139ee4;
          local_b0 = local_b0 + 1;
          bVar1 = true;
          if (*(int *)(param_1 + 0xfc) <= local_b0) break;
        } while( true );
      }
      goto LAB_00139524;
    }
  } while( true );
LAB_00139ee4:
  local_b0 = local_b0 + 1;
  if (local_b8 != 0) goto LAB_00139526;
  goto LAB_001395a8;
}


PUSH EBP
PUSH EDI
PUSH ESI
CALL 0x00152e6c
ADD ESI,0x819d0
PUSH EBX
SUB ESP,0xbc
MOV dword ptr [ESP + 0x4c],EDX
MOV EDX,0x1b
MOV dword ptr [ESP + 0x20],EAX
MOV ECX,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0xac],ECX
XOR ECX,ECX
LEA ECX,[ESP + 0x50]
MOV dword ptr [ESP + 0x50],0x0
CALL 0x00101610
MOV EBX,EAX
TEST EAX,EAX
JZ 0x001394e8
SUB ESP,0xc
MOV EDI,dword ptr [ESP + 0x2c]
PUSH dword ptr [EDI + 0xf8]
CALL 0x000c0610
MOV EAX,EDI
MOV dword ptr [EDI + 0xf8],0x0
CALL 0x0004f080
ADD ESP,0x10
MOV dword ptr [ESP + 0x3c],EBX
MOV EAX,EBX
MOV ECX,dword ptr [ESP + 0xac]
XOR ECX,dword ptr GS:[0x14]
JNZ 0x0013a83e
ADD ESP,0xbc
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESP + 0x50]
MOV EDX,dword ptr [EDI + 0x114]
MOV ECX,EDX
SAR ECX,0x1f
CALL 0x00079e80
MOV EDX,dword ptr [EDI + 0xfc]
MOV EAX,dword ptr [ESP + 0x50]
MOV ECX,EDX
SAR ECX,0x1f
CALL 0x00079e00
LEA EAX,[ESP + 0x54]
MOV dword ptr [ESP + 0x3c],0x0
MOV dword ptr [ESP + 0x34],EAX
XOR EDI,EDI
SUB ESP,0xc
PUSH dword ptr [ESP + 0x5c]
CALL 0x000e7e00
ADD ESP,0x10
CMP EAX,0x64
JNZ 0x0013a790
MOV EBX,dword ptr [ESP + 0x50]
TEST EBX,EBX
JZ 0x0013a20e
MOV EAX,dword ptr [EBX]
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JZ 0x00139560
SUB ESP,0xc
PUSH EAX
CALL dword ptr [ESI + 0x614]
ADD ESP,0x10
MOV EAX,dword ptr [EBX + 0x74]
TEST EAX,EAX
JZ 0x0013a200
CMP word ptr [EBX + 0x88],0x0
JZ 0x0013a200
MOVZX EDX,word ptr [EAX + 0x8]
TEST DL,0x4
JZ 0x0013a408
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x30],EAX
MOV EAX,EBX
CALL 0x0004c6c0
MOV dword ptr [ESP + 0x1c],0x0
TEST EDI,EDI
JNZ 0x0013a800
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [ESP + 0x20]
MOV ECX,dword ptr [ESP + 0x1c]
CMP dword ptr [EAX + 0xfc],ECX
JLE 0x00139524
LEA EAX,[ESP + 0x74]
MOV dword ptr [ESP + 0x24],EAX
MOV EDI,dword ptr [ESP + 0x24]
XOR EAX,EAX
MOV ECX,0xe
SUB ESP,0x8
MOV dword ptr [ESP + 0x5c],0x0
STOSD.REP ES:EDI
MOV dword ptr [ESP + 0x60],0x0
MOV dword ptr [ESP + 0x64],0x0
PUSH dword ptr [ESP + 0x2c]
PUSH 0x0
PUSH 0x1
PUSH 0x0
PUSH 0x0
PUSH -0x2
MOV ECX,dword ptr [ESP + 0x3c]
MOV EDX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x40]
CALL 0x0012aa30
MOV dword ptr [ESP + 0x34],EAX
ADD ESP,0x20
TEST EAX,EAX
JNZ 0x0013a030
MOV EAX,dword ptr [ESP + 0x78]
MOV dword ptr [ESP + 0x14],EAX
TEST EAX,EAX
JZ 0x0013a138
SUB ESP,0xc
LEA EAX,[ESP + 0x64]
PUSH EAX
MOV ECX,dword ptr [ESP + 0x2c]
MOV EDX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [ESP + 0x30]
CALL 0x00108b40
MOV dword ptr [ESP + 0x24],EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0013a030
CMP dword ptr [ESP + 0x78],0x1
JZ 0x0013a1c0
LEA EAX,[ESP + 0x64]
MOV EDI,dword ptr [ESP + 0x58]
MOV EBP,dword ptr [ESP + 0x5c]
SUB ESP,0xc
MOV dword ptr [ESP + 0x70],0x0
XOR ECX,ECX
MOV dword ptr [ESP + 0x74],0x0
MOV dword ptr [ESP + 0x78],0x0
MOV dword ptr [ESP + 0x7c],0x3
MOV dword ptr [ESP + 0x8c],EAX
PUSH 0x0
MOV EDX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [ESP + 0x30]
CALL 0x0012cf60
MOV dword ptr [ESP + 0x24],EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0013a030
MOV dword ptr [ESP + 0xc],EBP
MOV EBX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x8],EDI
MOV EBP,dword ptr [ESP + 0x24]
JMP 0x001396fd
SUB ESP,0x4
MOV EAX,EBX
PUSH dword ptr [ESP + 0xac]
PUSH dword ptr [ESP + 0xac]
PUSH dword ptr [ESP + 0xac]
MOV ECX,dword ptr [ESP + 0xac]
MOV EDX,dword ptr [ESP + 0x44]
CALL 0x00138ea0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0013a220
MOV EDX,EBP
MOV EAX,EBX
CALL 0x0012ba30
CMP EAX,0x64
JZ 0x001396c8
MOV EDI,dword ptr [ESP + 0x8]
MOV EBP,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x14],EAX
TEST EAX,EAX
JNZ 0x0013a030
SUB ESP,0x4
PUSH dword ptr [ESP + 0x7c]
PUSH dword ptr [ESP + 0x7c]
PUSH -0x2
MOV ECX,dword ptr [ESP + 0x2c]
MOV EDX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [ESP + 0x30]
CALL 0x0010ce90
MOV dword ptr [ESP + 0x24],EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0013a030
MOV EDX,dword ptr [ESP + 0x54]
TEST EDX,EDX
JZ 0x00139c80
SUB ESP,0x4
PUSH 0x0
PUSH EBP
PUSH EDI
MOV EAX,dword ptr [ESP + 0x30]
CALL 0x0010d540
MOV dword ptr [ESP + 0x24],EAX
ADD ESP,0x10
TEST EAX,EAX
MOV EAX,dword ptr [ESP + 0x54]
MOV dword ptr [ESP + 0x8],EAX
JNZ 0x00139790
CMP EDI,dword ptr [ESP + 0x58]
MOV ECX,EBP
SBB ECX,dword ptr [ESP + 0x5c]
JL 0x0013a80d
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JZ 0x00139c80
MOV EAX,dword ptr [ESP + 0x8]
LEA EBX,[0x5b8]
MOV EDI,dword ptr [EAX + 0x2c]
TEST EDI,EDI
JZ 0x0013980c
MOV EBP,dword ptr [ESI + 0x5b8]
TEST EBP,EBP
JZ 0x0013a180
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x001397d2
SUB ESP,0xc
PUSH EAX
CALL dword ptr [ESI + 0x614]
ADD ESP,0x10
SUB ESP,0xc
PUSH EDI
CALL dword ptr [ESI + 0x5f0]
SUB dword ptr [ESI + 0x1fdc],0x1
SUB dword ptr [ESI + 0x1fb8],EAX
MOV dword ptr [ESP],EDI
CALL dword ptr [ESI + 0x5e8]
MOV EAX,dword ptr [ESI + 0x1f9c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0013980c
SUB ESP,0xc
PUSH EAX
CALL dword ptr [ESI + 0x61c]
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x8]
MOV EDI,dword ptr [EAX + 0x20]
TEST EDI,EDI
JZ 0x0013986b
MOV ECX,dword ptr [EBX + ESI*0x1]
TEST ECX,ECX
JZ 0x0013a170
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x00139837
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
ADD ESP,0x10
SUB ESP,0xc
PUSH EDI
CALL dword ptr [EBX + ESI*0x1 + 0x38]
SUB dword ptr [ESI + 0x1fdc],0x1
SUB dword ptr [ESI + 0x1fb8],EAX
MOV dword ptr [ESP],EDI
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [ESI + 0x1f9c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0013986b
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x00139c1e
MOV EAX,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0x38],EAX
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x00139a9e
MOV EDI,dword ptr [EAX + 0x8]
MOV EAX,dword ptr [EDI]
TEST EAX,EAX
JZ 0x0013998a
MOV EBP,dword ptr [EAX + 0x8]
MOV EAX,dword ptr [EBP]
TEST EAX,EAX
JZ 0x0013a238
MOV EAX,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0x40],EAX
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x0013a780
MOV ECX,dword ptr [EAX + 0x8]
MOV EAX,dword ptr [ECX]
TEST EAX,EAX
JZ 0x0013a43c
MOV EDX,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0x28],ECX
MOV EAX,dword ptr [EDX]
MOV dword ptr [ESP + 0x2c],EDX
CALL 0x0005a320
MOV EDX,dword ptr [ESP + 0x2c]
MOV dword ptr [ESP + 0x18],EDI
MOV dword ptr [ESP + 0x2c],EBX
MOV EDI,EDX
JMP 0x0013990f
SUB ESP,0xc
PUSH EDX
CALL 0x00044000
POP EAX
PUSH dword ptr [EDI + 0x1c]
CALL 0x00044000
MOV dword ptr [ESP],EDI
CALL 0x00044000
ADD ESP,0x10
TEST EBX,EBX
JZ 0x0013a430
MOV EDI,EBX
MOV EDX,dword ptr [EDI + 0x24]
LEA ECX,[EDI + 0x28]
MOV EBX,dword ptr [EDI + 0x4]
CMP EDX,ECX
JNZ 0x001398e8
SUB ESP,0xc
JMP 0x001398f2
LEA EAX,[0x1f9c]
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x00139947
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
ADD ESP,0x10
LEA EBP,[0x1fb8]
SUB ESP,0xc
PUSH EDI
CALL dword ptr [EBX + ESI*0x1 + 0x38]
SUB dword ptr [EBP + ESI*0x1 + 0x24],0x1
SUB dword ptr [EBP + ESI*0x1],EAX
MOV dword ptr [ESP],EDI
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [ESP + 0x38]
ADD ESP,0x10
MOV EAX,dword ptr [EAX + ESI*0x1]
TEST EAX,EAX
JZ 0x0013997e
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
ADD ESP,0x10
MOV EDI,dword ptr [ESP + 0x18]
TEST EDI,EDI
JZ 0x00139a9e
MOV EAX,dword ptr [EDI + 0x4]
MOV EBP,dword ptr [EDI + 0x24]
LEA EDX,[EDI + 0x28]
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [EBX + ESI*0x1]
CMP EBP,EDX
JZ 0x00139a00
TEST EBP,EBP
JZ 0x00139a00
TEST EAX,EAX
JZ 0x0013a120
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x001399bf
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
ADD ESP,0x10
SUB ESP,0xc
PUSH EBP
CALL dword ptr [EBX + ESI*0x1 + 0x38]
SUB dword ptr [ESI + 0x1fdc],0x1
SUB dword ptr [ESI + 0x1fb8],EAX
MOV dword ptr [ESP],EBP
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [ESI + 0x1f9c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0013a1f0
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
MOV EAX,dword ptr [EBX + ESI*0x1]
ADD ESP,0x10
LEA ESI,[ESI]
MOV EDX,dword ptr [EDI + 0x1c]
TEST EDX,EDX
JZ 0x00139a7f
TEST EAX,EAX
JZ 0x0013a040
LEA EAX,[0x1f9c]
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x00139a36
MOV dword ptr [ESP + 0x2c],EDX
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
MOV EDX,dword ptr [ESP + 0x3c]
ADD ESP,0x10
SUB ESP,0xc
LEA EBP,[0x1fb8]
PUSH EDX
MOV dword ptr [ESP + 0x3c],EDX
CALL dword ptr [EBX + ESI*0x1 + 0x38]
MOV EDX,dword ptr [ESP + 0x3c]
SUB dword ptr [ESI + 0x1fb8],EAX
SUB dword ptr [ESI + 0x1fdc],0x1
MOV dword ptr [ESP],EDX
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [ESI + 0x1f9c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0013a1a0
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
MOV EAX,dword ptr [EBX + ESI*0x1]
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00139928
SUB ESP,0xc
PUSH EDI
CALL dword ptr [EBX + ESI*0x1 + 0x30]
ADD ESP,0x10
MOV EDI,dword ptr [ESP + 0x18]
TEST EDI,EDI
JNZ 0x0013998a
MOV EDI,dword ptr [ESP + 0x38]
JMP 0x00139b0a
LEA EAX,[0x1f9c]
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x00139ac7
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
ADD ESP,0x10
LEA EBP,[0x1fb8]
SUB ESP,0xc
PUSH EDI
CALL dword ptr [EBX + ESI*0x1 + 0x38]
SUB dword ptr [EBP + ESI*0x1 + 0x24],0x1
SUB dword ptr [EBP + ESI*0x1],EAX
MOV dword ptr [ESP],EDI
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [ESP + 0x28]
ADD ESP,0x10
MOV EAX,dword ptr [EAX + ESI*0x1]
TEST EAX,EAX
JZ 0x00139afe
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
ADD ESP,0x10
MOV EDI,dword ptr [ESP + 0x28]
TEST EDI,EDI
JZ 0x00139c1e
MOV EAX,dword ptr [EDI + 0x4]
MOV EBP,dword ptr [EDI + 0x24]
LEA EDX,[EDI + 0x28]
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [EBX + ESI*0x1]
CMP EBP,EDX
JZ 0x00139b80
TEST EBP,EBP
JZ 0x00139b80
TEST EAX,EAX
JZ 0x0013a0e8
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x00139b3f
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
ADD ESP,0x10
SUB ESP,0xc
PUSH EBP
CALL dword ptr [EBX + ESI*0x1 + 0x38]
SUB dword ptr [ESI + 0x1fdc],0x1
SUB dword ptr [ESI + 0x1fb8],EAX
MOV dword ptr [ESP],EBP
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [ESI + 0x1f9c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0013a198
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
MOV EAX,dword ptr [EBX + ESI*0x1]
ADD ESP,0x10
LEA ESI,[ESI]
MOV EDX,dword ptr [EDI + 0x1c]
TEST EDX,EDX
JZ 0x00139bff
TEST EAX,EAX
JZ 0x0013a0d0
LEA EAX,[0x1f9c]
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x00139bb6
MOV dword ptr [ESP + 0x2c],EDX
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
MOV EDX,dword ptr [ESP + 0x3c]
ADD ESP,0x10
SUB ESP,0xc
LEA EBP,[0x1fb8]
PUSH EDX
MOV dword ptr [ESP + 0x3c],EDX
CALL dword ptr [EBX + ESI*0x1 + 0x38]
MOV EDX,dword ptr [ESP + 0x3c]
SUB dword ptr [ESI + 0x1fb8],EAX
SUB dword ptr [ESI + 0x1fdc],0x1
MOV dword ptr [ESP],EDX
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [ESI + 0x1f9c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0013a100
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
MOV EAX,dword ptr [EBX + ESI*0x1]
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00139aa8
SUB ESP,0xc
PUSH EDI
CALL dword ptr [EBX + ESI*0x1 + 0x30]
ADD ESP,0x10
MOV EDI,dword ptr [ESP + 0x28]
TEST EDI,EDI
JNZ 0x00139b0a
MOV EDX,dword ptr [EBX + ESI*0x1]
TEST EDX,EDX
JZ 0x0013a158
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x00139c3e
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
ADD ESP,0x10
SUB ESP,0xc
MOV EDI,dword ptr [ESP + 0x14]
PUSH EDI
CALL dword ptr [EBX + ESI*0x1 + 0x38]
SUB dword ptr [ESI + 0x1fdc],0x1
SUB dword ptr [ESI + 0x1fb8],EAX
MOV dword ptr [ESP],EDI
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [ESI + 0x1f9c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00139c80
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
ADD ESP,0x10
LEA ESI,[ESI]
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x78]
MOV EBX,dword ptr [ESP + 0x74]
TEST EAX,EAX
JLE 0x00139e07
MOV EDI,dword ptr [EBX]
MOV dword ptr [ESP + 0x18],0x0
JMP 0x00139d0a
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x00139cb5
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
ADD ESP,0x10
SUB ESP,0xc
PUSH EDI
CALL dword ptr [EBX + ESI*0x1 + 0x38]
SUB dword ptr [ESI + 0x1fdc],0x1
SUB dword ptr [ESI + 0x1fb8],EAX
MOV dword ptr [ESP],EDI
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [ESI + 0x1f9c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00139f90
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
MOV EBX,dword ptr [ESP + 0x84]
ADD ESP,0x10
ADD dword ptr [ESP + 0x18],0x1
MOV EAX,dword ptr [ESP + 0x18]
CMP EAX,dword ptr [ESP + 0x78]
JGE 0x00139e07
MOV EDI,dword ptr [EBX + EAX*0x4]
TEST EDI,EDI
JZ 0x00139cf4
MOV EAX,dword ptr [EDI + 0x38]
TEST EAX,EAX
JZ 0x00139fa0
LEA EBX,[0x5b8]
CMP byte ptr [EDI + 0x5],0x0
JZ 0x00139f00
MOV EBP,dword ptr [EDI + 0x34]
TEST EBP,EBP
JZ 0x00139dd7
MOV EAX,dword ptr [EBP + 0x14]
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JZ 0x00139d4d
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
ADD ESP,0x10
SUB ESP,0xc
PUSH dword ptr [EBP + 0x10]
CALL 0x000c0450
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [EAX + 0x1e0]
TEST EDX,EDX
JNZ 0x00139f80
MOV EAX,dword ptr [EBX + ESI*0x1]
TEST EAX,EAX
JZ 0x00139f70
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x00139d8d
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
ADD ESP,0x10
SUB ESP,0xc
PUSH EBP
CALL dword ptr [EBX + ESI*0x1 + 0x38]
SUB dword ptr [ESI + 0x1fdc],0x1
SUB dword ptr [ESI + 0x1fb8],EAX
MOV dword ptr [ESP],EBP
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [ESI + 0x1f9c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00139dc1
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JZ 0x00139dd7
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
ADD ESP,0x10
MOV ECX,dword ptr [EBX + ESI*0x1]
TEST ECX,ECX
JNZ 0x00139ca0
SUB ESP,0xc
PUSH EDI
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EBX,dword ptr [ESP + 0x84]
ADD ESP,0x10
ADD dword ptr [ESP + 0x18],0x1
MOV EAX,dword ptr [ESP + 0x18]
CMP EAX,dword ptr [ESP + 0x78]
JL 0x00139d07
TEST EBX,EBX
JZ 0x00139e6a
MOV EBP,dword ptr [ESI + 0x5b8]
TEST EBP,EBP
JZ 0x0013a0a0
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x00139e30
SUB ESP,0xc
PUSH EAX
CALL dword ptr [ESI + 0x614]
ADD ESP,0x10
SUB ESP,0xc
PUSH EBX
CALL dword ptr [ESI + 0x5f0]
SUB dword ptr [ESI + 0x1fdc],0x1
SUB dword ptr [ESI + 0x1fb8],EAX
MOV dword ptr [ESP],EBX
CALL dword ptr [ESI + 0x5e8]
MOV EAX,dword ptr [ESI + 0x1f9c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00139e6a
SUB ESP,0xc
PUSH EAX
CALL dword ptr [ESI + 0x61c]
ADD ESP,0x10
MOV EBX,dword ptr [ESP + 0x84]
TEST EBX,EBX
JZ 0x00139ed4
MOV EDI,dword ptr [ESI + 0x5b8]
TEST EDI,EDI
JZ 0x0013a058
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x00139e9a
SUB ESP,0xc
PUSH EAX
CALL dword ptr [ESI + 0x614]
ADD ESP,0x10
SUB ESP,0xc
PUSH EBX
CALL dword ptr [ESI + 0x5f0]
SUB dword ptr [ESI + 0x1fdc],0x1
SUB dword ptr [ESI + 0x1fb8],EAX
MOV dword ptr [ESP],EBX
CALL dword ptr [ESI + 0x5e8]
MOV EAX,dword ptr [ESI + 0x1f9c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00139ed4
SUB ESP,0xc
PUSH EAX
CALL dword ptr [ESI + 0x61c]
ADD ESP,0x10
ADD dword ptr [ESP + 0x1c],0x1
CMP dword ptr [ESP + 0x14],0x65
JZ 0x0013a075
MOV EBX,dword ptr [ESP + 0x14]
TEST EBX,EBX
JZ 0x001395a8
MOV EDI,dword ptr [ESP + 0x14]
JMP 0x00139526
MOV EBP,dword ptr [EDI + 0x28]
TEST EBP,EBP
JZ 0x00139d29
MOV EAX,dword ptr [EBX + ESI*0x1]
TEST EAX,EAX
JZ 0x0013a020
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x00139f2b
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
ADD ESP,0x10
SUB ESP,0xc
PUSH EBP
CALL dword ptr [EBX + ESI*0x1 + 0x38]
SUB dword ptr [ESI + 0x1fdc],0x1
SUB dword ptr [ESI + 0x1fb8],EAX
MOV dword ptr [ESP],EBP
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [ESI + 0x1f9c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00139d29
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
ADD ESP,0x10
JMP 0x00139d29
SUB ESP,0xc
PUSH EBP
CALL dword ptr [EBX + ESI*0x1 + 0x30]
ADD ESP,0x10
JMP 0x00139dc1
MOV EDX,EBP
CALL 0x0003a540
JMP 0x00139dc1
MOV EBX,dword ptr [ESP + 0x74]
JMP 0x00139cf4
MOV EBP,dword ptr [EDI + 0x40]
LEA EBX,[0x5b8]
TEST EBP,EBP
JZ 0x00139d1f
MOV EAX,dword ptr [ESI + 0x5b8]
TEST EAX,EAX
JZ 0x0013a0b8
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x00139fd6
SUB ESP,0xc
PUSH EAX
CALL dword ptr [ESI + 0x614]
ADD ESP,0x10
SUB ESP,0xc
PUSH EBP
CALL dword ptr [ESI + 0x5f0]
SUB dword ptr [ESI + 0x1fdc],0x1
SUB dword ptr [ESI + 0x1fb8],EAX
MOV dword ptr [ESP],EBP
CALL dword ptr [ESI + 0x5e8]
MOV EAX,dword ptr [ESI + 0x1f9c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00139d1f
SUB ESP,0xc
PUSH EAX
CALL dword ptr [ESI + 0x61c]
ADD ESP,0x10
JMP 0x00139d1f
SUB ESP,0xc
PUSH EBP
CALL dword ptr [EBX + ESI*0x1 + 0x30]
ADD ESP,0x10
JMP 0x00139d29
MOV EAX,dword ptr [ESP + 0x54]
MOV dword ptr [ESP + 0x8],EAX
JMP 0x00139790
SUB ESP,0xc
PUSH EDX
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [EBX + ESI*0x1]
ADD ESP,0x10
JMP 0x00139a7f
SUB ESP,0xc
PUSH EBX
CALL dword ptr [ESI + 0x5e8]
ADD ESP,0x10
ADD dword ptr [ESP + 0x1c],0x1
CMP dword ptr [ESP + 0x14],0x65
JNZ 0x00139ee4
MOV EAX,dword ptr [ESP + 0x20]
MOV ECX,dword ptr [ESP + 0x1c]
MOV dword ptr [ESP + 0x3c],0x1
CMP dword ptr [EAX + 0xfc],ECX
JG 0x001395c4
JMP 0x00139524
SUB ESP,0xc
PUSH EBX
CALL dword ptr [ESI + 0x5e8]
ADD ESP,0x10
JMP 0x00139e6a
SUB ESP,0xc
PUSH EBP
CALL dword ptr [ESI + 0x5e8]
ADD ESP,0x10
JMP 0x00139d1f
SUB ESP,0xc
PUSH EDX
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [EBX + ESI*0x1]
ADD ESP,0x10
JMP 0x00139bff
SUB ESP,0xc
PUSH EBP
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [EBX + ESI*0x1]
ADD ESP,0x10
JMP 0x00139b80
MOV EAX,dword ptr [EBX + ESI*0x1]
TEST EAX,EAX
JNZ 0x00139acd
SUB ESP,0xc
PUSH EDI
CALL dword ptr [EBX + ESI*0x1 + 0x30]
ADD ESP,0x10
JMP 0x00139c12
SUB ESP,0xc
PUSH EBP
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [EBX + ESI*0x1]
ADD ESP,0x10
JMP 0x00139a00
MOV EAX,dword ptr [ESP + 0x54]
MOV EBX,dword ptr [ESP + 0x74]
MOV dword ptr [ESP + 0x8],EAX
TEST EAX,EAX
JNZ 0x0013979c
JMP 0x00139e07
SUB ESP,0xc
PUSH dword ptr [ESP + 0x14]
CALL dword ptr [EBX + ESI*0x1 + 0x30]
ADD ESP,0x10
JMP 0x00139c80
SUB ESP,0xc
PUSH EDI
CALL dword ptr [EBX + ESI*0x1 + 0x30]
ADD ESP,0x10
JMP 0x0013986b
SUB ESP,0xc
PUSH EDI
CALL dword ptr [ESI + 0x5e8]
ADD ESP,0x10
JMP 0x0013980c
MOV EAX,dword ptr [EBX + ESI*0x1]
JMP 0x00139b80
MOV EAX,dword ptr [EBX + ESI*0x1]
TEST EAX,EAX
JNZ 0x0013994d
SUB ESP,0xc
PUSH EDI
CALL dword ptr [EBX + ESI*0x1 + 0x30]
ADD ESP,0x10
JMP 0x00139a92
MOV EBX,dword ptr [ESP + 0x74]
MOV EDI,dword ptr [EBX]
MOV EAX,dword ptr [EDI + 0x38]
TEST EAX,EAX
JNZ 0x0013965d
MOV EAX,dword ptr [ESP + 0x54]
MOV dword ptr [ESP + 0x14],0x65
MOV dword ptr [ESP + 0x8],EAX
TEST EAX,EAX
JNZ 0x0013979c
JMP 0x00139c92
MOV EAX,dword ptr [EBX + ESI*0x1]
JMP 0x00139a00
MOV EAX,dword ptr [EBX]
MOV dword ptr [EAX + 0x3c],0x19
CALL 0x0004c5a0
MOV dword ptr [ESP + 0x30],0x0
JMP 0x0013958c
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,dword ptr [ESP + 0x54]
MOV dword ptr [ESP + 0x8],EAX
JMP 0x00139790
MOV dword ptr [ESP + 0x40],EDI
JMP 0x0013a2a1
LEA EAX,[0x1f9c]
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x0013a25f
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
ADD ESP,0x10
LEA EDI,[0x1fb8]
SUB ESP,0xc
PUSH EBP
CALL dword ptr [EBX + ESI*0x1 + 0x38]
SUB dword ptr [EDI + ESI*0x1 + 0x24],0x1
SUB dword ptr [EDI + ESI*0x1],EAX
MOV dword ptr [ESP],EBP
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [ESP + 0x38]
ADD ESP,0x10
MOV EAX,dword ptr [EAX + ESI*0x1]
TEST EAX,EAX
JZ 0x0013a295
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
ADD ESP,0x10
MOV EBP,dword ptr [ESP + 0x18]
TEST EBP,EBP
JZ 0x0013a3b2
MOV EAX,dword ptr [EBP + 0x4]
MOV EDI,dword ptr [EBP + 0x24]
LEA EDX,[EBP + 0x28]
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [EBX + ESI*0x1]
CMP EDI,EDX
JZ 0x0013a318
TEST EDI,EDI
JZ 0x0013a318
TEST EAX,EAX
JZ 0x0013a3d0
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x0013a2d6
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
ADD ESP,0x10
SUB ESP,0xc
PUSH EDI
CALL dword ptr [EBX + ESI*0x1 + 0x38]
SUB dword ptr [ESI + 0x1fdc],0x1
SUB dword ptr [ESI + 0x1fb8],EAX
MOV dword ptr [ESP],EDI
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [ESI + 0x1f9c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0013a400
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
MOV EAX,dword ptr [EBX + ESI*0x1]
ADD ESP,0x10
LEA ESI,[ESI]
MOV EDX,dword ptr [EBP + 0x1c]
TEST EDX,EDX
JZ 0x0013a393
TEST EAX,EAX
JZ 0x0013a3c0
LEA EAX,[0x1f9c]
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x0013a34e
MOV dword ptr [ESP + 0x2c],EDX
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
MOV EDX,dword ptr [ESP + 0x3c]
ADD ESP,0x10
SUB ESP,0xc
LEA EDI,[0x1fb8]
PUSH EDX
MOV dword ptr [ESP + 0x3c],EDX
CALL dword ptr [EBX + ESI*0x1 + 0x38]
MOV EDX,dword ptr [ESP + 0x3c]
SUB dword ptr [ESI + 0x1fb8],EAX
SUB dword ptr [ESI + 0x1fdc],0x1
MOV dword ptr [ESP],EDX
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [ESI + 0x1f9c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0013a3e8
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
MOV EAX,dword ptr [EBX + ESI*0x1]
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0013a240
SUB ESP,0xc
PUSH EBP
CALL dword ptr [EBX + ESI*0x1 + 0x30]
ADD ESP,0x10
MOV EBP,dword ptr [ESP + 0x18]
TEST EBP,EBP
JNZ 0x0013a2a1
MOV EDI,dword ptr [ESP + 0x40]
JMP 0x0013998a
SUB ESP,0xc
PUSH EDX
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [EBX + ESI*0x1]
ADD ESP,0x10
JMP 0x0013a393
SUB ESP,0xc
PUSH EDI
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [EBX + ESI*0x1]
ADD ESP,0x10
JMP 0x0013a318
MOV ECX,dword ptr [EBX + ESI*0x1]
TEST ECX,ECX
JNZ 0x0013a265
SUB ESP,0xc
PUSH EBP
CALL dword ptr [EBX + ESI*0x1 + 0x30]
ADD ESP,0x10
JMP 0x0013a3a6
MOV EAX,dword ptr [EBX + ESI*0x1]
JMP 0x0013a318
TEST DL,0x8
JZ 0x0013a843
SUB ESP,0x8
PUSH dword ptr [EAX + 0x4]
PUSH dword ptr [EAX]
CALL 0x0003c8b0
ADD ESP,0x10
MOV dword ptr [ESP + 0x30],EAX
JMP 0x0013958c
MOV EDI,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [ESP + 0x28]
MOV EBX,dword ptr [ESP + 0x2c]
LEA EAX,[0x1fb8]
MOV dword ptr [ESP + 0x44],EDI
MOV dword ptr [ESP + 0x48],EBP
MOV EDI,EAX
MOV EBP,ECX
JMP 0x0013a4ab
LEA EAX,[0x1f9c]
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x0013a46f
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
ADD ESP,0x10
SUB ESP,0xc
PUSH EBP
CALL dword ptr [EBX + ESI*0x1 + 0x38]
SUB dword ptr [EDI + ESI*0x1 + 0x24],0x1
SUB dword ptr [EDI + ESI*0x1],EAX
MOV dword ptr [ESP],EBP
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [ESP + 0x38]
ADD ESP,0x10
MOV EAX,dword ptr [EAX + ESI*0x1]
TEST EAX,EAX
JZ 0x0013a49f
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
ADD ESP,0x10
MOV EBP,dword ptr [ESP + 0x18]
TEST EBP,EBP
JZ 0x0013a55e
MOV EAX,dword ptr [EBP + 0x4]
LEA EDX,[EBP + 0x28]
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [EBP + 0x24]
CMP EAX,EDX
JZ 0x0013a4c8
SUB ESP,0xc
PUSH EAX
CALL 0x00044000
ADD ESP,0x10
MOV EDX,dword ptr [EBP + 0x1c]
MOV EAX,dword ptr [EBX + ESI*0x1]
TEST EDX,EDX
JZ 0x0013a53f
TEST EAX,EAX
JZ 0x0013a6f0
LEA EAX,[0x1f9c]
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x0013a501
MOV dword ptr [ESP + 0x2c],EDX
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
MOV EDX,dword ptr [ESP + 0x3c]
ADD ESP,0x10
SUB ESP,0xc
PUSH EDX
MOV dword ptr [ESP + 0x3c],EDX
CALL dword ptr [EBX + ESI*0x1 + 0x38]
MOV EDX,dword ptr [ESP + 0x3c]
SUB dword ptr [EDI + ESI*0x1],EAX
SUB dword ptr [EDI + ESI*0x1 + 0x24],0x1
MOV dword ptr [ESP],EDX
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [ESI + 0x1f9c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0013a758
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
MOV EAX,dword ptr [EBX + ESI*0x1]
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0013a450
SUB ESP,0xc
PUSH EBP
CALL dword ptr [EBX + ESI*0x1 + 0x30]
ADD ESP,0x10
MOV EBP,dword ptr [ESP + 0x18]
TEST EBP,EBP
JNZ 0x0013a4ab
MOV EDI,dword ptr [ESP + 0x40]
JMP 0x0013a5ca
LEA EAX,[0x1f9c]
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x0013a587
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
ADD ESP,0x10
LEA EBP,[0x1fb8]
SUB ESP,0xc
PUSH EDI
CALL dword ptr [EBX + ESI*0x1 + 0x38]
SUB dword ptr [EBP + ESI*0x1 + 0x24],0x1
SUB dword ptr [EBP + ESI*0x1],EAX
MOV dword ptr [ESP],EDI
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [ESP + 0x38]
ADD ESP,0x10
MOV EAX,dword ptr [EAX + ESI*0x1]
TEST EAX,EAX
JZ 0x0013a5be
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
ADD ESP,0x10
MOV EDI,dword ptr [ESP + 0x18]
TEST EDI,EDI
JZ 0x0013a6de
MOV EAX,dword ptr [EDI + 0x4]
MOV EBP,dword ptr [EDI + 0x24]
LEA EDX,[EDI + 0x28]
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [EBX + ESI*0x1]
CMP EBP,EDX
JZ 0x0013a640
TEST EBP,EBP
JZ 0x0013a640
TEST EAX,EAX
JZ 0x0013a720
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x0013a5ff
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
ADD ESP,0x10
SUB ESP,0xc
PUSH EBP
CALL dword ptr [EBX + ESI*0x1 + 0x38]
SUB dword ptr [ESI + 0x1fdc],0x1
SUB dword ptr [ESI + 0x1fb8],EAX
MOV dword ptr [ESP],EBP
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [ESI + 0x1f9c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0013a778
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
MOV EAX,dword ptr [EBX + ESI*0x1]
ADD ESP,0x10
LEA ESI,[ESI]
MOV EDX,dword ptr [EDI + 0x1c]
TEST EDX,EDX
JZ 0x0013a6bf
TEST EAX,EAX
JZ 0x0013a708
LEA EAX,[0x1f9c]
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [ESI + 0x1f9c]
TEST EAX,EAX
JZ 0x0013a676
MOV dword ptr [ESP + 0x2c],EDX
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x5c]
MOV EDX,dword ptr [ESP + 0x3c]
ADD ESP,0x10
SUB ESP,0xc
LEA EBP,[0x1fb8]
PUSH EDX
MOV dword ptr [ESP + 0x3c],EDX
CALL dword ptr [EBX + ESI*0x1 + 0x38]
MOV EDX,dword ptr [ESP + 0x3c]
SUB dword ptr [ESI + 0x1fb8],EAX
SUB dword ptr [ESI + 0x1fdc],0x1
MOV dword ptr [ESP],EDX
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [ESI + 0x1f9c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0013a738
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EBX + ESI*0x1 + 0x64]
MOV EAX,dword ptr [EBX + ESI*0x1]
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0013a568
SUB ESP,0xc
PUSH EDI
CALL dword ptr [EBX + ESI*0x1 + 0x30]
ADD ESP,0x10
MOV EDI,dword ptr [ESP + 0x18]
TEST EDI,EDI
JNZ 0x0013a5ca
MOV EAX,dword ptr [ESP + 0x44]
MOV EBP,dword ptr [ESP + 0x48]
MOV dword ptr [ESP + 0x40],EAX
JMP 0x0013a2a1
SUB ESP,0xc
PUSH EDX
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [EBX + ESI*0x1]
ADD ESP,0x10
JMP 0x0013a53f
SUB ESP,0xc
PUSH EDX
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [EBX + ESI*0x1]
ADD ESP,0x10
JMP 0x0013a6bf
SUB ESP,0xc
PUSH EBP
CALL dword ptr [EBX + ESI*0x1 + 0x30]
MOV EAX,dword ptr [EBX + ESI*0x1]
ADD ESP,0x10
JMP 0x0013a640
MOV EDX,dword ptr [EBX + ESI*0x1]
TEST EDX,EDX
JNZ 0x0013a58d
SUB ESP,0xc
PUSH EDI
CALL dword ptr [EBX + ESI*0x1 + 0x30]
ADD ESP,0x10
JMP 0x0013a6d2
MOV EAX,dword ptr [EBX + ESI*0x1]
TEST EAX,EAX
JNZ 0x0013a46f
SUB ESP,0xc
PUSH EBP
CALL dword ptr [EBX + ESI*0x1 + 0x30]
ADD ESP,0x10
JMP 0x0013a552
MOV EAX,dword ptr [EBX + ESI*0x1]
JMP 0x0013a640
MOV dword ptr [ESP + 0x44],EDI
MOV dword ptr [ESP + 0x48],EBP
JMP 0x0013a55e
SUB ESP,0xc
PUSH dword ptr [ESP + 0x5c]
CALL 0x000bfe40
ADD ESP,0x10
MOV EBX,EAX
TEST EDI,EDI
JNZ 0x0013a837
SUB ESP,0xc
MOV EDI,dword ptr [ESP + 0x2c]
PUSH dword ptr [EDI + 0xf8]
CALL 0x000c0610
MOV EAX,EDI
MOV dword ptr [EDI + 0xf8],0x0
CALL 0x0004f080
ADD ESP,0x10
TEST EBX,EBX
JNZ 0x001394bf
TEST byte ptr [ESP + 0x4c],0x1
JZ 0x001394bf
MOV ECX,dword ptr [ESP + 0x3c]
MOV EAX,0x65
TEST ECX,ECX
CMOVZ EAX,ECX
MOV dword ptr [ESP + 0x3c],EAX
JMP 0x001394c5
MOV dword ptr [ESP + 0x14],EDI
MOV EDI,dword ptr [ESP + 0x14]
JMP 0x00139526
SUB ESP,0x8
PUSH dword ptr [EAX + 0x34]
MOV EDX,EDI
MOV ECX,EBP
PUSH dword ptr [EAX + 0x30]
MOV EAX,dword ptr [ESP + 0x30]
CALL 0x00108f70
MOV dword ptr [ESP + 0x24],EAX
MOV EAX,dword ptr [ESP + 0x64]
MOV dword ptr [ESP + 0x18],EAX
ADD ESP,0x10
JMP 0x00139790
MOV EBX,EDI
JMP 0x00139499
CALL 0x00153870
AND DL,0x12
MOV dword ptr [ESP + 0x30],0x0
JZ 0x0013958c
CALL 0x0003c930
MOV dword ptr [ESP + 0x30],EAX
JMP 0x0013958c
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* WARNING: Removing unreachable block (ram,0x0013954a) */\n/* WARNING: Removing unreachable block (ram,0x00139553) */\n/* WARNING: Removing unreachable block (ram,0x00139560) */\n/* WARNING: Removing unreachable block (ram,0x0013956b) */\n/* WARNING: Removing unreachable block (ram,0x0013a200) */\n/* WARNING: Removing unreachable block (ram,0x00139579) */\n/* WARNING: Removing unreachable block (ram,0x0013a408) */\n/* WARNING: Removing unreachable block (ram,0x0013a843) */\n/* WARNING: Removing unreachable block (ram,0x0013a854) */\n/* WARNING: Removing unreachable block (ram,0x0013a411) */\n/* WARNING: Removing unreachable block (ram,0x00139586) */\n/* WARNING: Removing unreachable block (ram,0x00139758) */\n/* WARNING: Removing unreachable block (ram,0x0013977b) */\n/* WARNING: Removing unreachable block (ram,0x0013a80d) */\n/* WARNING: Removing unreachable block (ram,0x0013978b) */\n/* WARNING: Removing unreachable block (ram,0x0013979c) */\n/* WARNING: Removing unreachable block (ram,0x001397ad) */\n/* WARNING: Removing unreachable block (ram,0x0013a180) */\n/* WARNING: Removing unreachable block (ram,0x001397bb) */\n/* WARNING: Removing unreachable block (ram,0x001397c5) */\n/* WARNING: Removing unreachable block (ram,0x001397d2) */\n/* WARNING: Removing unreachable block (ram,0x001397ff) */\n/* WARNING: Removing unreachable block (ram,0x0013980c) */\n/* WARNING: Removing unreachable block (ram,0x00139817) */\n/* WARNING: Removing unreachable block (ram,0x0013a170) */\n/* WARNING: Removing unreachable block (ram,0x00139822) */\n/* WARNING: Removing unreachable block (ram,0x0013982c) */\n/* WARNING: Removing unreachable block (ram,0x00139837) */\n/* WARNING: Removing unreachable block (ram,0x00139860) */\n/* WARNING: Removing unreachable block (ram,0x0013986b) */\n/* WARNING: Removing unreachable block (ram,0x00139879) */\n/* WARNING: Removing unreachable block (ram,0x0013988a) */\n/* WARNING: Removing unreachable block (ram,0x00139897) */\n/* WARNING: Removing unreachable block (ram,0x0013a238) */\n/* WARNING: Removing unreachable block (ram,0x001398a5) */\n/* WARNING: Removing unreachable block (ram,0x0013a780) */\n/* WARNING: Removing unreachable block (ram,0x001398b6) */\n/* WARNING: Removing unreachable block (ram,0x001398c3) */\n/* WARNING: Removing unreachable block (ram,0x0013990f) */\n/* WARNING: Removing unreachable block (ram,0x001398e8) */\n/* WARNING: Removing unreachable block (ram,0x0013991c) */\n/* WARNING: Removing unreachable block (ram,0x001398f2) */\n/* WARNING: Removing unreachable block (ram,0x0013a430) */\n/* WARNING: Removing unreachable block (ram,0x0013990d) */\n/* WARNING: Removing unreachable block (ram,0x0013a43c) */\n/* WARNING: Removing unreachable block (ram,0x0013a4ab) */\n/* WARNING: Removing unreachable block (ram,0x0013a4bc) */\n/* WARNING: Removing unreachable block (ram,0x0013a4c8) */\n/* WARNING: Removing unreachable block (ram,0x0013a4d2) */\n/* WARNING: Removing unreachable block (ram,0x0013a6f0) */\n/* WARNING: Removing unreachable block (ram,0x0013a4da) */\n/* WARNING: Removing unreachable block (ram,0x0013a4ee) */\n/* WARNING: Removing unreachable block (ram,0x0013a501) */\n/* WARNING: Removing unreachable block (ram,0x0013a531) */\n/* WARNING: Removing unreachable block (ram,0x0013a53f) */\n/* WARNING: Removing unreachable block (ram,0x0013a547) */\n/* WARNING: Removing unreachable block (ram,0x0013a450) */\n/* WARNING: Removing unreachable block (ram,0x0013a464) */\n/* WARNING: Removing unreachable block (ram,0x0013a758) */\n/* WARNING: Removing unreachable block (ram,0x0013a46f) */\n/* WARNING: Removing unreachable block (ram,0x0013a494) */\n/* WARNING: Removing unreachable block (ram,0x0013a49f) */\n/* WARNING: Removing unreachable block (ram,0x0013a763) */\n/* WARNING: Removing unreachable block (ram,0x0013a552) */\n/* WARNING: Removing unreachable block (ram,0x0013a55e) */\n/* WARNING: Removing unreachable block (ram,0x0013a5ca) */\n/* WARNING: Removing unreachable block (ram,0x0013a5de) */\n/* WARNING: Removing unreachable block (ram,0x0013a5e2) */\n/* WARNING: Removing unreachable block (ram,0x0013a720) */\n/* WARNING: Removing unreachable block (ram,0x0013a5ea) */\n/* WARNING: Removing unreachable block (ram,0x0013a5f4) */\n/* WARNING: Removing unreachable block (ram,0x0013a5ff) */\n/* WARNING: Removing unreachable block (ram,0x0013a778) */\n/* WARNING: Removing unreachable block (ram,0x0013a62c) */\n/* WARNING: Removing unreachable block (ram,0x0013a640) */\n/* WARNING: Removing unreachable block (ram,0x0013a647) */\n/* WARNING: Removing unreachable block (ram,0x0013a708) */\n/* WARNING: Removing unreachable block (ram,0x0013a64f) */\n/* WARNING: Removing unreachable block (ram,0x0013a663) */\n/* WARNING: Removing unreachable block (ram,0x0013a676) */\n/* WARNING: Removing unreachable block (ram,0x0013a6b1) */\n/* WARNING: Removing unreachable block (ram,0x0013a6bf) */\n/* WARNING: Removing unreachable block (ram,0x0013a6c7) */\n/* WARNING: Removing unreachable block (ram,0x0013a568) */\n/* WARNING: Removing unreachable block (ram,0x0013a57c) */\n/* WARNING: Removing unreachable block (ram,0x0013a587) */\n/* WARNING: Removing unreachable block (ram,0x0013a738) */\n/* WARNING: Removing unreachable block (ram,0x0013a58d) */\n/* WARNING: Removing unreachable block (ram,0x0013a5b3) */\n/* WARNING: Removing unreachable block (ram,0x0013a5be) */\n/* WARNING: Removing unreachable block (ram,0x0013a743) */\n/* WARNING: Removing unreachable block (ram,0x0013a6d2) */\n/* WARNING: Removing unreachable block (ram,0x0013a6de) */\n/* WARNING: Removing unreachable block (ram,0x0013a2a1) */\n/* WARNING: Removing unreachable block (ram,0x0013a2b5) */\n/* WARNING: Removing unreachable block (ram,0x0013a2b9) */\n/* WARNING: Removing unreachable block (ram,0x0013a3d0) */\n/* WARNING: Removing unreachable block (ram,0x0013a2c1) */\n/* WARNING: Removing unreachable block (ram,0x0013a2cb) */\n/* WARNING: Removing unreachable block (ram,0x0013a2d6) */\n/* WARNING: Removing unreachable block (ram,0x0013a400) */\n/* WARNING: Removing unreachable block (ram,0x0013a303) */\n/* WARNING: Removing unreachable block (ram,0x0013a318) */\n/* WARNING: Removing unreachable block (ram,0x0013a31f) */\n/* WARNING: Removing unreachable block (ram,0x0013a3c0) */\n/* WARNING: Removing unreachable block (ram,0x0013a327) */\n/* WARNING: Removing unreachable block (ram,0x0013a33b) */\n/* WARNING: Removing unreachable block (ram,0x0013a34e) */\n/* WARNING: Removing unreachable block (ram,0x0013a385) */\n/* WARNING: Removing unreachable block (ram,0x0013a393) */\n/* WARNING: Removing unreachable block (ram,0x0013a39b) */\n/* WARNING: Removing unreachable block (ram,0x0013a240) */\n/* WARNING: Removing unreachable block (ram,0x0013a254) */\n/* WARNING: Removing unreachable block (ram,0x0013a25f) */\n/* WARNING: Removing unreachable block (ram,0x0013a3e8) */\n/* WARNING: Removing unreachable block (ram,0x0013a265) */\n/* WARNING: Removing unreachable block (ram,0x0013a28a) */\n/* WARNING: Removing unreachable block (ram,0x0013a295) */\n/* WARNING: Removing unreachable block (ram,0x0013a3f3) */\n/* WARNING: Removing unreachable block (ram,0x0013a3a6) */\n/* WARNING: Removing unreachable block (ram,0x0013a3b2) */\n/* WARNING: Removing unreachable block (ram,0x0013998a) */\n/* WARNING: Removing unreachable block (ram,0x0013999e) */\n/* WARNING: Removing unreachable block (ram,0x001399a2) */\n/* WARNING: Removing unreachable block (ram,0x0013a120) */\n/* WARNING: Removing unreachable block (ram,0x001399aa) */\n/* WARNING: Removing unreachable block (ram,0x001399b4) */\n/* WARNING: Removing unreachable block (ram,0x001399bf) */\n/* WARNING: Removing unreachable block (ram,0x0013a1f0) */\n/* WARNING: Removing unreachable block (ram,0x001399ec) */\n/* WARNING: Removing unreachable block (ram,0x00139a00) */\n/* WARNING: Removing unreachable block (ram,0x00139a07) */\n/* WARNING: Removing unreachable block (ram,0x0013a040) */\n/* WARNING: Removing unreachable block (ram,0x00139a0f) */\n/* WARNING: Removing unreachable block (ram,0x00139a23) */\n/* WARNING: Removing unreachable block (ram,0x00139a36) */\n/* WARNING: Removing unreachable block (ram,0x00139a71) */\n/* WARNING: Removing unreachable block (ram,0x00139a7f) */\n/* WARNING: Removing unreachable block (ram,0x00139a87) */\n/* WARNING: Removing unreachable block (ram,0x00139928) */\n/* WARNING: Removing unreachable block (ram,0x0013993c) */\n/* WARNING: Removing unreachable block (ram,0x00139947) */\n/* WARNING: Removing unreachable block (ram,0x0013a1a0) */\n/* WARNING: Removing unreachable block (ram,0x0013994d) */\n/* WARNING: Removing unreachable block (ram,0x00139973) */\n/* WARNING: Removing unreachable block (ram,0x0013997e) */\n/* WARNING: Removing unreachable block (ram,0x0013a1ab) */\n/* WARNING: Removing unreachable block (ram,0x00139a92) */\n/* WARNING: Removing unreachable block (ram,0x00139a9e) */\n/* WARNING: Removing unreachable block (ram,0x00139b0a) */\n/* WARNING: Removing unreachable block (ram,0x00139b1e) */\n/* WARNING: Removing unreachable block (ram,0x00139b22) */\n/* WARNING: Removing unreachable block (ram,0x0013a0e8) */\n/* WARNING: Removing unreachable block (ram,0x00139b2a) */\n/* WARNING: Removing unreachable block (ram,0x00139b34) */\n/* WARNING: Removing unreachable block (ram,0x00139b3f) */\n/* WARNING: Removing unreachable block (ram,0x0013a198) */\n/* WARNING: Removing unreachable block (ram,0x00139b6c) */\n/* WARNING: Removing unreachable block (ram,0x00139b80) */\n/* WARNING: Removing unreachable block (ram,0x00139b87) */\n/* WARNING: Removing unreachable block (ram,0x0013a0d0) */\n/* WARNING: Removing unreachable block (ram,0x00139b8f) */\n/* WARNING: Removing unreachable block (ram,0x00139ba3) */\n/* WARNING: Removing unreachable block (ram,0x00139bb6) */\n/* WARNING: Removing unreachable block (ram,0x00139bf1) */\n/* WARNING: Removing unreachable block (ram,0x00139bff) */\n/* WARNING: Removing unreachable block (ram,0x00139c07) */\n/* WARNING: Removing unreachable block (ram,0x00139aa8) */\n/* WARNING: Removing unreachable block (ram,0x00139abc) */\n/* WARNING: Removing unreachable block (ram,0x00139ac7) */\n/* WARNING: Removing unreachable block (ram,0x0013a100) */\n/* WARNING: Removing unreachable block (ram,0x00139acd) */\n/* WARNING: Removing unreachable block (ram,0x00139af3) */\n/* WARNING: Removing unreachable block (ram,0x00139afe) */\n/* WARNING: Removing unreachable block (ram,0x0013a10b) */\n/* WARNING: Removing unreachable block (ram,0x00139c12) */\n/* WARNING: Removing unreachable block (ram,0x00139c1e) */\n/* WARNING: Removing unreachable block (ram,0x0013a158) */\n/* WARNING: Removing unreachable block (ram,0x00139c29) */\n/* WARNING: Removing unreachable block (ram,0x00139c33) */\n/* WARNING: Removing unreachable block (ram,0x00139c3e) */\n/* WARNING: Removing unreachable block (ram,0x00139c6b) */\n/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nint __regparm3 FUN_00139450(int param_1,uint param_2)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int *piVar6;\n  int **ppiVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  int local_b8;\n  int local_b4;\n  int local_b0;\n  undefined4 local_74;\n  undefined4 local_70;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  int *local_58;\n  int local_54;\n  undefined4 *local_4c;\n  int local_48;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  bVar8 = 0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_b8 = FUN_00101610();\n  if (local_b8 != 0) {\nLAB_00139499:\n    iVar2 = local_b8;\n    FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n    *(undefined4 *)(param_1 + 0xf8) = 0;\n    FUN_0004f080();\nLAB_001394c5:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00153870();\n    }\n    return iVar2;\n  }\n  FUN_00079e80();\n  FUN_00079e00();\n  bVar1 = false;\nLAB_00139524:\n  local_b8 = 0;\nLAB_00139526:\n  do {\n    iVar2 = FUN_000e7e00(0);\n    if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    FUN_0004c6c0();\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  } while( true );\nLAB_00139ee4:\n  local_b0 = local_b0 + 1;\n  if (local_b8 != 0) goto LAB_00139526;\n  goto LAB_001395a8;\n}\n\n" comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment (function_definition "int __regparm3 FUN_00139450(int param_1,uint param_2)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int *piVar6;\n  int **ppiVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  int local_b8;\n  int local_b4;\n  int local_b0;\n  undefined4 local_74;\n  undefined4 local_70;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  int *local_58;\n  int local_54;\n  undefined4 *local_4c;\n  int local_48;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  bVar8 = 0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_b8 = FUN_00101610();\n  if (local_b8 != 0) {\nLAB_00139499:\n    iVar2 = local_b8;\n    FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n    *(undefined4 *)(param_1 + 0xf8) = 0;\n    FUN_0004f080();\nLAB_001394c5:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00153870();\n    }\n    return iVar2;\n  }\n  FUN_00079e80();\n  FUN_00079e00();\n  bVar1 = false;\nLAB_00139524:\n  local_b8 = 0;\nLAB_00139526:\n  do {\n    iVar2 = FUN_000e7e00(0);\n    if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    FUN_0004c6c0();\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  } while( true );\nLAB_00139ee4:\n  local_b0 = local_b0 + 1;\n  if (local_b8 != 0) goto LAB_00139526;\n  goto LAB_001395a8;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00139450(int param_1,uint param_2)" identifier (parameter_list "(int param_1,uint param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int *piVar6;\n  int **ppiVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  int local_b8;\n  int local_b4;\n  int local_b0;\n  undefined4 local_74;\n  undefined4 local_70;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  int *local_58;\n  int local_54;\n  undefined4 *local_4c;\n  int local_48;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  bVar8 = 0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_b8 = FUN_00101610();\n  if (local_b8 != 0) {\nLAB_00139499:\n    iVar2 = local_b8;\n    FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n    *(undefined4 *)(param_1 + 0xf8) = 0;\n    FUN_0004f080();\nLAB_001394c5:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00153870();\n    }\n    return iVar2;\n  }\n  FUN_00079e80();\n  FUN_00079e00();\n  bVar1 = false;\nLAB_00139524:\n  local_b8 = 0;\nLAB_00139526:\n  do {\n    iVar2 = FUN_000e7e00(0);\n    if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    FUN_0004c6c0();\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  } while( true );\nLAB_00139ee4:\n  local_b0 = local_b0 + 1;\n  if (local_b8 != 0) goto LAB_00139526;\n  goto LAB_001395a8;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int **ppiVar7;" primitive_type (pointer_declarator "**ppiVar7" * (pointer_declarator "*ppiVar7" * identifier)) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "int local_b8;" primitive_type identifier ;) (declaration "int local_b4;" primitive_type identifier ;) (declaration "int local_b0;" primitive_type identifier ;) (declaration "undefined4 local_74;" type_identifier identifier ;) (declaration "undefined4 local_70;" type_identifier identifier ;) (declaration "undefined4 local_68;" type_identifier identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (declaration "int *local_58;" primitive_type (pointer_declarator "*local_58" * identifier) ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "undefined4 *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_b8 = FUN_00101610();" (assignment_expression "local_b8 = FUN_00101610()" identifier = (call_expression "FUN_00101610()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_b8 != 0) {\nLAB_00139499:\n    iVar2 = local_b8;\n    FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n    *(undefined4 *)(param_1 + 0xf8) = 0;\n    FUN_0004f080();\nLAB_001394c5:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00153870();\n    }\n    return iVar2;\n  }" if (parenthesized_expression "(local_b8 != 0)" ( (binary_expression "local_b8 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00139499:\n    iVar2 = local_b8;\n    FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n    *(undefined4 *)(param_1 + 0xf8) = 0;\n    FUN_0004f080();\nLAB_001394c5:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00153870();\n    }\n    return iVar2;\n  }" { (labeled_statement "LAB_00139499:\n    iVar2 = local_b8;" statement_identifier : (expression_statement "iVar2 = local_b8;" (assignment_expression "iVar2 = local_b8" identifier = identifier) ;)) (expression_statement "FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));" (call_expression "FUN_000c0610(*(undefined4 *)(param_1 + 0xf8))" identifier (argument_list "(*(undefined4 *)(param_1 + 0xf8))" ( (pointer_expression "*(undefined4 *)(param_1 + 0xf8)" * (cast_expression "(undefined4 *)(param_1 + 0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0xf8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xf8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xf8)" * (cast_expression "(undefined4 *)(param_1 + 0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0004f080();" (call_expression "FUN_0004f080()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_001394c5:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00153870();\n    }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00153870();\n    }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_00153870();\n    }" { comment (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar2;" return identifier ;) })) (expression_statement "FUN_00079e80();" (call_expression "FUN_00079e80()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00079e00();" (call_expression "FUN_00079e00()" identifier (argument_list "()" ( ))) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (labeled_statement "LAB_00139524:\n  local_b8 = 0;" statement_identifier : (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_00139526:\n  do {\n    iVar2 = FUN_000e7e00(0);\n    if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    FUN_0004c6c0();\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  } while( true );" statement_identifier : (do_statement "do {\n    iVar2 = FUN_000e7e00(0);\n    if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    FUN_0004c6c0();\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  } while( true );" do (compound_statement "{\n    iVar2 = FUN_000e7e00(0);\n    if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    FUN_0004c6c0();\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  }" { (expression_statement "iVar2 = FUN_000e7e00(0);" (assignment_expression "iVar2 = FUN_000e7e00(0)" identifier = (call_expression "FUN_000e7e00(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }" if (parenthesized_expression "(iVar2 != 100)" ( (binary_expression "iVar2 != 100" identifier != number_literal) )) (compound_statement "{\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }" { (expression_statement "iVar2 = FUN_000bfe40(0);" (assignment_expression "iVar2 = FUN_000bfe40(0)" identifier = (call_expression "FUN_000bfe40(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (local_b8 != 0) goto LAB_00139499;" if (parenthesized_expression "(local_b8 != 0)" ( (binary_expression "local_b8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00139499;" goto statement_identifier ;)) (expression_statement "FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));" (call_expression "FUN_000c0610(*(undefined4 *)(param_1 + 0xf8))" identifier (argument_list "(*(undefined4 *)(param_1 + 0xf8))" ( (pointer_expression "*(undefined4 *)(param_1 + 0xf8)" * (cast_expression "(undefined4 *)(param_1 + 0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0xf8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xf8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xf8)" * (cast_expression "(undefined4 *)(param_1 + 0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0004f080();" (call_expression "FUN_0004f080()" identifier (argument_list "()" ( ))) ;) (if_statement "if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }" if (parenthesized_expression "(((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1))" ( (binary_expression "((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)" (parenthesized_expression "((iVar2 == 0) && ((param_2 & 1) != 0))" ( (binary_expression "(iVar2 == 0) && ((param_2 & 1) != 0)" (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) && (parenthesized_expression "((param_2 & 1) != 0)" ( (binary_expression "(param_2 & 1) != 0" (parenthesized_expression "(param_2 & 1)" ( (binary_expression "param_2 & 1" identifier & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "(iVar2 = 0x65, !bVar1)" ( (comma_expression "iVar2 = 0x65, !bVar1" (assignment_expression "iVar2 = 0x65" identifier = number_literal) , (unary_expression "!bVar1" ! identifier)) ))) )) (compound_statement "{\n        iVar2 = 0;\n      }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) })) (goto_statement "goto LAB_001394c5;" goto statement_identifier ;) })) (expression_statement "FUN_0004c6c0();" (call_expression "FUN_0004c6c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_b0 = 0;" (assignment_expression "local_b0 = 0" identifier = number_literal) ;) (if_statement "if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }" if (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }" { (labeled_statement "LAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }" statement_identifier : (if_statement "if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }" if (parenthesized_expression "(local_b0 < *(int *)(param_1 + 0xfc))" ( (binary_expression "local_b0 < *(int *)(param_1 + 0xfc)" identifier < (pointer_expression "*(int *)(param_1 + 0xfc)" * (cast_expression "(int *)(param_1 + 0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xfc)" ( (binary_expression "param_1 + 0xfc" identifier + number_literal) ))))) )) (compound_statement "{\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }" { (do_statement "do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );" do (compound_statement "{\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        }" { (expression_statement "ppiVar7 = &local_58;" (assignment_expression "ppiVar7 = &local_58" identifier = (pointer_expression "&local_58" & identifier)) ;) (for_statement "for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }" for ( (assignment_expression "iVar2 = 0xe" identifier = number_literal) ; (binary_expression "iVar2 != 0" identifier != number_literal) ; (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ) (compound_statement "{\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }" { (expression_statement "*ppiVar7 = (int *)0x0;" (assignment_expression "*ppiVar7 = (int *)0x0" (pointer_expression "*ppiVar7" * identifier) = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;" (assignment_expression "ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "ppiVar7 + (uint)bVar8 * -2 + 1" (binary_expression "ppiVar7 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" identifier = number_literal) ;) (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" identifier = number_literal) ;) (expression_statement "local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);" (assignment_expression "local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58)" identifier = (call_expression "FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58)" identifier (argument_list "(0xfffffffe,0,0,1,0,&local_58)" ( number_literal , number_literal , number_literal , number_literal , number_literal , (pointer_expression "&local_58" & identifier) )))) ;) (if_statement "if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }" if (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) (compound_statement "{\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }" { (expression_statement "local_b8 = local_54;" (assignment_expression "local_b8 = local_54" identifier = identifier) ;) (expression_statement "piVar6 = local_58;" (assignment_expression "piVar6 = local_58" identifier = identifier) ;) (if_statement "if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }" if (parenthesized_expression "(local_54 != 0)" ( (binary_expression "local_54 != 0" identifier != number_literal) )) (compound_statement "{\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }" { (expression_statement "local_b8 = FUN_00108b40(&local_74);" (assignment_expression "local_b8 = FUN_00108b40(&local_74)" identifier = (call_expression "FUN_00108b40(&local_74)" identifier (argument_list "(&local_74)" ( (pointer_expression "&local_74" & identifier) )))) ;) (if_statement "if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }" if (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) (compound_statement "{\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }" { (if_statement "if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }" if (parenthesized_expression "((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0))" ( (binary_expression "(local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)" (parenthesized_expression "(local_54 == 1)" ( (binary_expression "local_54 == 1" identifier == number_literal) )) && (parenthesized_expression "(iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)" ( (comma_expression "iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0" (assignment_expression "iVar2 = *local_58" identifier = (pointer_expression "*local_58" * identifier)) , (binary_expression "*(int *)(iVar2 + 0x38) == 0" (pointer_expression "*(int *)(iVar2 + 0x38)" * (cast_expression "(int *)(iVar2 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x38)" ( (binary_expression "iVar2 + 0x38" identifier + number_literal) )))) == number_literal)) ))) )) (compound_statement "{\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }" { (expression_statement "local_b8 = 0x65;" (assignment_expression "local_b8 = 0x65" identifier = number_literal) ;) (goto_statement "goto LAB_00139c92;" goto statement_identifier ;) })) (expression_statement "local_4c = &local_68;" (assignment_expression "local_4c = &local_68" identifier = (pointer_expression "&local_68" & identifier)) ;) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (expression_statement "local_5c = 3;" (assignment_expression "local_5c = 3" identifier = number_literal) ;) (expression_statement "local_b8 = FUN_0012cf60(0);" (assignment_expression "local_b8 = FUN_0012cf60(0)" identifier = (call_expression "FUN_0012cf60(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (while_statement "while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }" while (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) (compound_statement "{\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }" { (expression_statement "local_b8 = FUN_0012ba30();" (assignment_expression "local_b8 = FUN_0012ba30()" identifier = (call_expression "FUN_0012ba30()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }" if (parenthesized_expression "(local_b8 != 100)" ( (binary_expression "local_b8 != 100" identifier != number_literal) )) (compound_statement "{\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }" { (if_statement "if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }" if (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) (compound_statement "{\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }" { (expression_statement "local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);" (assignment_expression "local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54)" identifier = (call_expression "FUN_0010ce90(0xfffffffe,local_58,local_54)" identifier (argument_list "(0xfffffffe,local_58,local_54)" ( number_literal , identifier , identifier )))) ;) })) (break_statement "break;" break ;) })) (expression_statement "local_b8 = FUN_00138ea0(local_2c,local_28,local_24);" (assignment_expression "local_b8 = FUN_00138ea0(local_2c,local_28,local_24)" identifier = (call_expression "FUN_00138ea0(local_2c,local_28,local_24)" identifier (argument_list "(local_2c,local_28,local_24)" ( identifier , identifier , identifier )))) ;) })) })) (goto_statement "goto LAB_00139c80;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }" else (compound_statement "{\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }" { (labeled_statement "LAB_00139c80:\n            piVar6 = local_58;" statement_identifier : (expression_statement "piVar6 = local_58;" (assignment_expression "piVar6 = local_58" identifier = identifier) ;)) (if_statement "if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }" if (parenthesized_expression "(0 < local_54)" ( (binary_expression "0 < local_54" number_literal < identifier) )) (compound_statement "{\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }" { (expression_statement "iVar2 = *local_58;" (assignment_expression "iVar2 = *local_58" identifier = (pointer_expression "*local_58" * identifier)) ;) (labeled_statement "LAB_00139c92:\n              local_b4 = 0;" statement_identifier : (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;)) (expression_statement "piVar6 = local_58;" (assignment_expression "piVar6 = local_58" identifier = identifier) ;) (do_statement "do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );" do (compound_statement "{\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              }" { (if_statement "if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }" { (labeled_statement "LAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;" statement_identifier : (if_statement "if (local_54 <= local_b4 + 1) break;" if (parenthesized_expression "(local_54 <= local_b4 + 1)" ( (binary_expression "local_54 <= local_b4 + 1" identifier <= (binary_expression "local_b4 + 1" identifier + number_literal)) )) (break_statement "break;" break ;))) }) (else_clause "else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }" else (compound_statement "{\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }" { (if_statement "if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }" if (parenthesized_expression "((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))" ( (binary_expression "(*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0)" (parenthesized_expression "(*(int *)(iVar2 + 0x38) == 0)" ( (binary_expression "*(int *)(iVar2 + 0x38) == 0" (pointer_expression "*(int *)(iVar2 + 0x38)" * (cast_expression "(int *)(iVar2 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x38)" ( (binary_expression "iVar2 + 0x38" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0)" ( (comma_expression "iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0" (assignment_expression "iVar4 = *(int *)(iVar2 + 0x40)" identifier = (pointer_expression "*(int *)(iVar2 + 0x40)" * (cast_expression "(int *)(iVar2 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x40)" ( (binary_expression "iVar2 + 0x40" identifier + number_literal) ))))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }" { (if_statement "if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }" if (parenthesized_expression "(DAT_001bb3e0 == 0)" ( (binary_expression "DAT_001bb3e0 == 0" identifier == number_literal) )) (compound_statement "{\n                      (*DAT_001bb410)(iVar4);\n                    }" { (expression_statement "(*DAT_001bb410)(iVar4);" (call_expression "(*DAT_001bb410)(iVar4)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(iVar4)" ( identifier ))) ;) }) (else_clause "else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }" else (compound_statement "{\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }" { (if_statement "if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }" { (expression_statement "(*DAT_001bb43c)(DAT_001bcdc4);" (call_expression "(*DAT_001bb43c)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb43c)" ( (pointer_expression "*DAT_001bb43c" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) (expression_statement "iVar5 = (*DAT_001bb418)(iVar4);" (assignment_expression "iVar5 = (*DAT_001bb418)(iVar4)" identifier = (call_expression "(*DAT_001bb418)(iVar4)" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(iVar4)" ( identifier )))) ;) (expression_statement "DAT_001bce04 = DAT_001bce04 + -1;" (assignment_expression "DAT_001bce04 = DAT_001bce04 + -1" identifier = (binary_expression "DAT_001bce04 + -1" identifier + number_literal)) ;) (expression_statement "DAT_001bcde0 = DAT_001bcde0 - iVar5;" (assignment_expression "DAT_001bcde0 = DAT_001bcde0 - iVar5" identifier = (binary_expression "DAT_001bcde0 - iVar5" identifier - identifier)) ;) (expression_statement "(*DAT_001bb410)(iVar4);" (call_expression "(*DAT_001bb410)(iVar4)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(iVar4)" ( identifier ))) ;) (if_statement "if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }" { (expression_statement "(*DAT_001bb444)(DAT_001bcdc4);" (call_expression "(*DAT_001bb444)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb444)" ( (pointer_expression "*DAT_001bb444" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) }))) })) (if_statement "if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }" if (parenthesized_expression "((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     )" ( (binary_expression "(*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)" (parenthesized_expression "(*(char *)(iVar2 + 5) == '\0')" ( (binary_expression "*(char *)(iVar2 + 5) == '\0'" (pointer_expression "*(char *)(iVar2 + 5)" * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)" ( (comma_expression "iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0" (assignment_expression "iVar4 = *(int *)(iVar2 + 0x28)" identifier = (pointer_expression "*(int *)(iVar2 + 0x28)" * (cast_expression "(int *)(iVar2 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) ))))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }" { (if_statement "if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }" if (parenthesized_expression "(DAT_001bb3e0 == 0)" ( (binary_expression "DAT_001bb3e0 == 0" identifier == number_literal) )) (compound_statement "{\n                      (*DAT_001bb410)(iVar4);\n                    }" { (expression_statement "(*DAT_001bb410)(iVar4);" (call_expression "(*DAT_001bb410)(iVar4)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(iVar4)" ( identifier ))) ;) }) (else_clause "else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }" else (compound_statement "{\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }" { (if_statement "if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }" { (expression_statement "(*DAT_001bb43c)(DAT_001bcdc4);" (call_expression "(*DAT_001bb43c)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb43c)" ( (pointer_expression "*DAT_001bb43c" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) (expression_statement "iVar5 = (*DAT_001bb418)(iVar4);" (assignment_expression "iVar5 = (*DAT_001bb418)(iVar4)" identifier = (call_expression "(*DAT_001bb418)(iVar4)" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(iVar4)" ( identifier )))) ;) (expression_statement "DAT_001bce04 = DAT_001bce04 + -1;" (assignment_expression "DAT_001bce04 = DAT_001bce04 + -1" identifier = (binary_expression "DAT_001bce04 + -1" identifier + number_literal)) ;) (expression_statement "DAT_001bcde0 = DAT_001bcde0 - iVar5;" (assignment_expression "DAT_001bcde0 = DAT_001bcde0 - iVar5" identifier = (binary_expression "DAT_001bcde0 - iVar5" identifier - identifier)) ;) (expression_statement "(*DAT_001bb410)(iVar4);" (call_expression "(*DAT_001bb410)(iVar4)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(iVar4)" ( identifier ))) ;) (if_statement "if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }" { (expression_statement "(*DAT_001bb444)(DAT_001bcdc4);" (call_expression "(*DAT_001bb444)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb444)" ( (pointer_expression "*DAT_001bb444" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) }))) })) (expression_statement "iVar4 = *(int *)(iVar2 + 0x34);" (assignment_expression "iVar4 = *(int *)(iVar2 + 0x34)" identifier = (pointer_expression "*(int *)(iVar2 + 0x34)" * (cast_expression "(int *)(iVar2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x34)" ( (binary_expression "iVar2 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }" { (expression_statement "iVar5 = *(int *)(iVar4 + 0x14);" (assignment_expression "iVar5 = *(int *)(iVar4 + 0x14)" identifier = (pointer_expression "*(int *)(iVar4 + 0x14)" * (cast_expression "(int *)(iVar4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }" if (parenthesized_expression "(*(int *)(iVar5 + 0xc) != 0)" ( (binary_expression "*(int *)(iVar5 + 0xc) != 0" (pointer_expression "*(int *)(iVar5 + 0xc)" * (cast_expression "(int *)(iVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }" { (expression_statement "(*DAT_001bb43c)(*(int *)(iVar5 + 0xc));" (call_expression "(*DAT_001bb43c)(*(int *)(iVar5 + 0xc))" (parenthesized_expression "(*DAT_001bb43c)" ( (pointer_expression "*DAT_001bb43c" * identifier) )) (argument_list "(*(int *)(iVar5 + 0xc))" ( (pointer_expression "*(int *)(iVar5 + 0xc)" * (cast_expression "(int *)(iVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) ))) ;) })) (expression_statement "FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));" (call_expression "FUN_000c0450(*(undefined4 *)(iVar4 + 0x10))" identifier (argument_list "(*(undefined4 *)(iVar4 + 0x10))" ( (pointer_expression "*(undefined4 *)(iVar4 + 0x10)" * (cast_expression "(undefined4 *)(iVar4 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) )))) ))) ;) (if_statement "if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }" if (parenthesized_expression "(*(int *)(iVar5 + 0x1e0) == 0)" ( (binary_expression "*(int *)(iVar5 + 0x1e0) == 0" (pointer_expression "*(int *)(iVar5 + 0x1e0)" * (cast_expression "(int *)(iVar5 + 0x1e0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x1e0)" ( (binary_expression "iVar5 + 0x1e0" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }" { (if_statement "if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }" if (parenthesized_expression "(DAT_001bb3e0 == 0)" ( (binary_expression "DAT_001bb3e0 == 0" identifier == number_literal) )) (compound_statement "{\n                        (*DAT_001bb410)(iVar4);\n                      }" { (expression_statement "(*DAT_001bb410)(iVar4);" (call_expression "(*DAT_001bb410)(iVar4)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(iVar4)" ( identifier ))) ;) }) (else_clause "else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }" else (compound_statement "{\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }" { (if_statement "if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }" { (expression_statement "(*DAT_001bb43c)(DAT_001bcdc4);" (call_expression "(*DAT_001bb43c)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb43c)" ( (pointer_expression "*DAT_001bb43c" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) (expression_statement "iVar3 = (*DAT_001bb418)(iVar4);" (assignment_expression "iVar3 = (*DAT_001bb418)(iVar4)" identifier = (call_expression "(*DAT_001bb418)(iVar4)" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(iVar4)" ( identifier )))) ;) (expression_statement "DAT_001bce04 = DAT_001bce04 + -1;" (assignment_expression "DAT_001bce04 = DAT_001bce04 + -1" identifier = (binary_expression "DAT_001bce04 + -1" identifier + number_literal)) ;) (expression_statement "DAT_001bcde0 = DAT_001bcde0 - iVar3;" (assignment_expression "DAT_001bcde0 = DAT_001bcde0 - iVar3" identifier = (binary_expression "DAT_001bcde0 - iVar3" identifier - identifier)) ;) (expression_statement "(*DAT_001bb410)(iVar4);" (call_expression "(*DAT_001bb410)(iVar4)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(iVar4)" ( identifier ))) ;) (if_statement "if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }" { (expression_statement "(*DAT_001bb444)(DAT_001bcdc4);" (call_expression "(*DAT_001bb444)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb444)" ( (pointer_expression "*DAT_001bb444" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) }))) }) (else_clause "else {\n                      FUN_0003a540();\n                    }" else (compound_statement "{\n                      FUN_0003a540();\n                    }" { (expression_statement "FUN_0003a540();" (call_expression "FUN_0003a540()" identifier (argument_list "()" ( ))) ;) }))) (if_statement "if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }" if (parenthesized_expression "(*(int *)(iVar5 + 0xc) != 0)" ( (binary_expression "*(int *)(iVar5 + 0xc) != 0" (pointer_expression "*(int *)(iVar5 + 0xc)" * (cast_expression "(int *)(iVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }" { (expression_statement "(*DAT_001bb444)(*(int *)(iVar5 + 0xc));" (call_expression "(*DAT_001bb444)(*(int *)(iVar5 + 0xc))" (parenthesized_expression "(*DAT_001bb444)" ( (pointer_expression "*DAT_001bb444" * identifier) )) (argument_list "(*(int *)(iVar5 + 0xc))" ( (pointer_expression "*(int *)(iVar5 + 0xc)" * (cast_expression "(int *)(iVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) ))) ;) })) })) (if_statement "if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }" if (parenthesized_expression "(DAT_001bb3e0 != 0)" ( (binary_expression "DAT_001bb3e0 != 0" identifier != number_literal) )) (compound_statement "{\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }" { (if_statement "if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }" { (expression_statement "(*DAT_001bb43c)(DAT_001bcdc4);" (call_expression "(*DAT_001bb43c)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb43c)" ( (pointer_expression "*DAT_001bb43c" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) (expression_statement "iVar4 = (*DAT_001bb418)(iVar2);" (assignment_expression "iVar4 = (*DAT_001bb418)(iVar2)" identifier = (call_expression "(*DAT_001bb418)(iVar2)" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(iVar2)" ( identifier )))) ;) (expression_statement "DAT_001bce04 = DAT_001bce04 + -1;" (assignment_expression "DAT_001bce04 = DAT_001bce04 + -1" identifier = (binary_expression "DAT_001bce04 + -1" identifier + number_literal)) ;) (expression_statement "DAT_001bcde0 = DAT_001bcde0 - iVar4;" (assignment_expression "DAT_001bcde0 = DAT_001bcde0 - iVar4" identifier = (binary_expression "DAT_001bcde0 - iVar4" identifier - identifier)) ;) (expression_statement "(*DAT_001bb410)(iVar2);" (call_expression "(*DAT_001bb410)(iVar2)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "piVar6 = local_58;" (assignment_expression "piVar6 = local_58" identifier = identifier) ;) (if_statement "if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }" { (expression_statement "(*DAT_001bb444)(DAT_001bcdc4);" (call_expression "(*DAT_001bb444)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb444)" ( (pointer_expression "*DAT_001bb444" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) (expression_statement "piVar6 = local_58;" (assignment_expression "piVar6 = local_58" identifier = identifier) ;) })) (goto_statement "goto LAB_00139cf4;" goto statement_identifier ;) })) (expression_statement "(*DAT_001bb410)(iVar2);" (call_expression "(*DAT_001bb410)(iVar2)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "piVar6 = local_58;" (assignment_expression "piVar6 = local_58" identifier = identifier) ;) (if_statement "if (local_54 <= local_b4 + 1) break;" if (parenthesized_expression "(local_54 <= local_b4 + 1)" ( (binary_expression "local_54 <= local_b4 + 1" identifier <= (binary_expression "local_b4 + 1" identifier + number_literal)) )) (break_statement "break;" break ;)) }))) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "iVar2 = piVar6[local_b4];" (assignment_expression "iVar2 = piVar6[local_b4]" identifier = (subscript_expression "piVar6[local_b4]" identifier [ identifier ])) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) }))) (if_statement "if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }" if (parenthesized_expression "(piVar6 != (int *)0x0)" ( (binary_expression "piVar6 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }" { (if_statement "if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }" if (parenthesized_expression "(DAT_001bb3e0 == 0)" ( (binary_expression "DAT_001bb3e0 == 0" identifier == number_literal) )) (compound_statement "{\n              (*DAT_001bb410)(piVar6);\n            }" { (expression_statement "(*DAT_001bb410)(piVar6);" (call_expression "(*DAT_001bb410)(piVar6)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(piVar6)" ( identifier ))) ;) }) (else_clause "else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }" else (compound_statement "{\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }" { (if_statement "if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }" { (expression_statement "(*DAT_001bb43c)(DAT_001bcdc4);" (call_expression "(*DAT_001bb43c)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb43c)" ( (pointer_expression "*DAT_001bb43c" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) (expression_statement "iVar2 = (*DAT_001bb418)(piVar6);" (assignment_expression "iVar2 = (*DAT_001bb418)(piVar6)" identifier = (call_expression "(*DAT_001bb418)(piVar6)" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(piVar6)" ( identifier )))) ;) (expression_statement "DAT_001bce04 = DAT_001bce04 + -1;" (assignment_expression "DAT_001bce04 = DAT_001bce04 + -1" identifier = (binary_expression "DAT_001bce04 + -1" identifier + number_literal)) ;) (expression_statement "DAT_001bcde0 = DAT_001bcde0 - iVar2;" (assignment_expression "DAT_001bcde0 = DAT_001bcde0 - iVar2" identifier = (binary_expression "DAT_001bcde0 - iVar2" identifier - identifier)) ;) (expression_statement "(*DAT_001bb410)(piVar6);" (call_expression "(*DAT_001bb410)(piVar6)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(piVar6)" ( identifier ))) ;) (if_statement "if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }" { (expression_statement "(*DAT_001bb444)(DAT_001bcdc4);" (call_expression "(*DAT_001bb444)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb444)" ( (pointer_expression "*DAT_001bb444" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) }))) })) (expression_statement "iVar2 = local_48;" (assignment_expression "iVar2 = local_48" identifier = identifier) ;) (if_statement "if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) )) (compound_statement "{\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }" { (if_statement "if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }" if (parenthesized_expression "(DAT_001bb3e0 == 0)" ( (binary_expression "DAT_001bb3e0 == 0" identifier == number_literal) )) (compound_statement "{\n              (*DAT_001bb410)(local_48);\n            }" { (expression_statement "(*DAT_001bb410)(local_48);" (call_expression "(*DAT_001bb410)(local_48)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(local_48)" ( identifier ))) ;) }) (else_clause "else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }" else (compound_statement "{\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }" { (if_statement "if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }" { (expression_statement "(*DAT_001bb43c)(DAT_001bcdc4);" (call_expression "(*DAT_001bb43c)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb43c)" ( (pointer_expression "*DAT_001bb43c" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) (expression_statement "iVar4 = (*DAT_001bb418)(iVar2);" (assignment_expression "iVar4 = (*DAT_001bb418)(iVar2)" identifier = (call_expression "(*DAT_001bb418)(iVar2)" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(iVar2)" ( identifier )))) ;) (expression_statement "DAT_001bce04 = DAT_001bce04 + -1;" (assignment_expression "DAT_001bce04 = DAT_001bce04 + -1" identifier = (binary_expression "DAT_001bce04 + -1" identifier + number_literal)) ;) (expression_statement "DAT_001bcde0 = DAT_001bcde0 - iVar4;" (assignment_expression "DAT_001bcde0 = DAT_001bcde0 - iVar4" identifier = (binary_expression "DAT_001bcde0 - iVar4" identifier - identifier)) ;) (expression_statement "(*DAT_001bb410)(iVar2);" (call_expression "(*DAT_001bb410)(iVar2)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(iVar2)" ( identifier ))) ;) (if_statement "if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }" { (expression_statement "(*DAT_001bb444)(DAT_001bcdc4);" (call_expression "(*DAT_001bb444)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb444)" ( (pointer_expression "*DAT_001bb444" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) }))) })) (if_statement "if (local_b8 != 0x65) goto LAB_00139ee4;" if (parenthesized_expression "(local_b8 != 0x65)" ( (binary_expression "local_b8 != 0x65" identifier != number_literal) )) (goto_statement "goto LAB_00139ee4;" goto statement_identifier ;)) (expression_statement "local_b0 = local_b0 + 1;" (assignment_expression "local_b0 = local_b0 + 1" identifier = (binary_expression "local_b0 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (if_statement "if (*(int *)(param_1 + 0xfc) <= local_b0) break;" if (parenthesized_expression "(*(int *)(param_1 + 0xfc) <= local_b0)" ( (binary_expression "*(int *)(param_1 + 0xfc) <= local_b0" (pointer_expression "*(int *)(param_1 + 0xfc)" * (cast_expression "(int *)(param_1 + 0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xfc)" ( (binary_expression "param_1 + 0xfc" identifier + number_literal) )))) <= identifier) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (goto_statement "goto LAB_00139524;" goto statement_identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) (labeled_statement "LAB_00139ee4:\n  local_b0 = local_b0 + 1;" statement_identifier : (expression_statement "local_b0 = local_b0 + 1;" (assignment_expression "local_b0 = local_b0 + 1" identifier = (binary_expression "local_b0 + 1" identifier + number_literal)) ;)) (if_statement "if (local_b8 != 0) goto LAB_00139526;" if (parenthesized_expression "(local_b8 != 0)" ( (binary_expression "local_b8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00139526;" goto statement_identifier ;)) (goto_statement "goto LAB_001395a8;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* WARNING: Type propagation algorithm not settling */\n\nint __regparm3 fts3DoOptimize(Fts3Table *p,int bReturnDone)\n\n{\n  ushort uVar1;\n  int iVar2;\n  Mem *pMem;\n  char *pcVar3;\n  SegmentNode *pSVar4;\n  sqlite3_blob *p_00;\n  bool bVar5;\n  sqlite3_stmt *pStmt;\n  uint uVar6;\n  int iVar7;\n  int extraout_EDX;\n  int extraout_EDX_00;\n  Fts3SegReader **ppFVar8;\n  SegmentNode *pSVar9;\n  SegmentNode *pSVar10;\n  Fts3MultiSegReader *pFVar11;\n  SegmentNode *pSVar12;\n  SegmentNode *pSVar13;\n  SegmentNode *pSVar14;\n  Fts3SegReader *pFVar15;\n  SegmentNode *pSVar16;\n  int in_GS_OFFSET;\n  byte bVar17;\n  i64 iVar18;\n  Fts3Table *pFVar19;\n  char *in_stack_ffffff2c;\n  char *zTerm;\n  Fts3Table *in_stack_ffffff34;\n  Fts3MultiSegReader *in_stack_ffffff38;\n  SegmentWriter *pSVar20;\n  sqlite3 *psVar21;\n  int local_b8;\n  int local_b4;\n  int local_b0;\n  int local_9c;\n  sqlite3_stmt *pAllLangid;\n  SegmentWriter *pWriter;\n  i64 iMaxLevel;\n  Fts3SegFilter filter;\n  Fts3MultiSegReader csr;\n  \n  bVar17 = 0;\n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  pAllLangid = (sqlite3_stmt *)0x0;\n  local_b8 = fts3SqlStmt(p,0x1b,&pAllLangid,(sqlite3_value **)in_stack_ffffff34);\n  if (local_b8 != 0) {\nLAB_00139499:\n    iVar7 = local_b8;\n    pFVar19 = (Fts3Table *)p->pSegments;\n    sqlite3_blob_close((sqlite3_blob *)pFVar19);\n    p->pSegments = (sqlite3_blob *)0x0;\n    sqlite3Fts3PendingTermsClear(pFVar19);\nLAB_001394c5:\n    if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }\n    return iVar7;\n  }\n  sqlite3_bind_int64(pAllLangid,p->iPrevLangid,CONCAT44(in_stack_ffffff38,in_stack_ffffff34));\n  sqlite3_bind_int64(pAllLangid,p->nIndex,CONCAT44(in_stack_ffffff38,in_stack_ffffff34));\n  bVar5 = false;\nLAB_00139524:\n  local_b8 = 0;\nLAB_00139526:\n  do {\n    iVar7 = sqlite3_step(pAllLangid);\n    pStmt = pAllLangid;\n    if (iVar7 != 100) {\n      iVar7 = sqlite3_reset(pAllLangid);\n      if (local_b8 != 0) goto LAB_00139499;\n      pFVar19 = (Fts3Table *)p->pSegments;\n      sqlite3_blob_close((sqlite3_blob *)pFVar19);\n      p->pSegments = (sqlite3_blob *)0x0;\n      sqlite3Fts3PendingTermsClear(pFVar19);\n      if (((iVar7 == 0) && ((bReturnDone & 1U) != 0)) && (iVar7 = 0x65, !bVar5)) {\n        iVar7 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    if (pAllLangid == (sqlite3_stmt *)0x0) {\nLAB_0013a20e:\n      local_9c = 0;\n    }\n    else {\n      iVar7 = extraout_EDX;\n      if (*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc) != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexEnter)(*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc));\n        iVar7 = extraout_EDX_00;\n      }\n      pMem = *(Mem **)(pStmt + 0x74);\n      if ((pMem == (Mem *)0x0) || (*(short *)(pStmt + 0x88) == 0)) {\n        psVar21 = *(sqlite3 **)pStmt;\n        psVar21->errCode = 0x19;\n        sqlite3ErrorFinish(psVar21,iVar7);\n        goto LAB_0013a20e;\n      }\n      uVar1 = pMem->flags;\n      if ((uVar1 & 4) == 0) {\n        if ((uVar1 & 8) == 0) {\n          local_9c = 0;\n          if ((uVar1 & 0x12) != 0) {\n            iVar18 = memIntValue(pMem);\n            local_9c = (int)iVar18;\n          }\n        }\n        else {\n          iVar18 = doubleToInt64((pMem->u).r);\n          local_9c = (int)iVar18;\n        }\n      }\n      else {\n        local_9c = (pMem->u).nZero;\n      }\n    }\n    zTerm = (char *)0x139593;\n    columnMallocFailure(pStmt);\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < p->nIndex) {\n        do {\n          pWriter = (SegmentWriter *)0x0;\n          pFVar11 = &csr;\n          for (iVar7 = 0xe; iVar7 != 0; iVar7 = iVar7 + -1) {\n            pFVar11->apSegment = (Fts3SegReader **)0x0;\n            pFVar11 = (Fts3MultiSegReader *)((int)pFVar11 + (uint)bVar17 * -8 + 4);\n          }\n          iMaxLevel._0_4_ = (SegmentWriter *)0x0;\n          iMaxLevel._4_4_ = 0;\n          pFVar11 = &csr;\n          local_b8 = fts3SegReaderCursor(p,local_9c,local_b0,-2,(char *)0x0,0,1,0,&csr);\n          if (local_b8 == 0) {\n            local_b8 = csr.nSegment;\n            if (csr.nSegment != 0) {\n              local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel);\n              uVar6 = iMaxLevel._4_4_;\n              pSVar20 = (SegmentWriter *)iMaxLevel;\n              if (local_b8 == 0) {\n                if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }\n                csr.pFilter = &filter;\n                filter.zTerm = (char *)0x0;\n                filter.nTerm = 0;\n                filter.iCol = 0;\n                filter.flags = 3;\n                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;\n                while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }\n              }\n              goto LAB_00139790;\n            }\n            ppFVar8 = csr.apSegment;\n            if (pWriter != (SegmentWriter *)0x0) goto LAB_0013979c;\n          }\n          else {\nLAB_00139790:\n            if (pWriter != (SegmentWriter *)0x0) {\nLAB_0013979c:\n              pcVar3 = pWriter->aData;\n              pSVar20 = pWriter;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              pcVar3 = pSVar20->zMalloc;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }\n              if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }\n            }\nLAB_00139c80:\n            ppFVar8 = csr.apSegment;\n            if (0 < csr.nSegment) {\n              pFVar15 = *csr.apSegment;\nLAB_00139c92:\n              local_b4 = 0;\n              ppFVar8 = csr.apSegment;\n              do {\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              } while( true );\n            }\n          }\n          if (ppFVar8 != (Fts3SegReader **)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(ppFVar8);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(ppFVar8);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          pcVar3 = csr.aBuffer;\n          if (csr.aBuffer != (char *)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(csr.aBuffer);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(pcVar3);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar5 = true;\n          if (p->nIndex <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  } while( true );\nLAB_00139ee4:\n  local_b0 = local_b0 + 1;\n  if (local_b8 != 0) goto LAB_00139526;\n  goto LAB_001395a8;\n}\n\n" comment comment (function_definition "int __regparm3 fts3DoOptimize(Fts3Table *p,int bReturnDone)\n\n{\n  ushort uVar1;\n  int iVar2;\n  Mem *pMem;\n  char *pcVar3;\n  SegmentNode *pSVar4;\n  sqlite3_blob *p_00;\n  bool bVar5;\n  sqlite3_stmt *pStmt;\n  uint uVar6;\n  int iVar7;\n  int extraout_EDX;\n  int extraout_EDX_00;\n  Fts3SegReader **ppFVar8;\n  SegmentNode *pSVar9;\n  SegmentNode *pSVar10;\n  Fts3MultiSegReader *pFVar11;\n  SegmentNode *pSVar12;\n  SegmentNode *pSVar13;\n  SegmentNode *pSVar14;\n  Fts3SegReader *pFVar15;\n  SegmentNode *pSVar16;\n  int in_GS_OFFSET;\n  byte bVar17;\n  i64 iVar18;\n  Fts3Table *pFVar19;\n  char *in_stack_ffffff2c;\n  char *zTerm;\n  Fts3Table *in_stack_ffffff34;\n  Fts3MultiSegReader *in_stack_ffffff38;\n  SegmentWriter *pSVar20;\n  sqlite3 *psVar21;\n  int local_b8;\n  int local_b4;\n  int local_b0;\n  int local_9c;\n  sqlite3_stmt *pAllLangid;\n  SegmentWriter *pWriter;\n  i64 iMaxLevel;\n  Fts3SegFilter filter;\n  Fts3MultiSegReader csr;\n  \n  bVar17 = 0;\n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  pAllLangid = (sqlite3_stmt *)0x0;\n  local_b8 = fts3SqlStmt(p,0x1b,&pAllLangid,(sqlite3_value **)in_stack_ffffff34);\n  if (local_b8 != 0) {\nLAB_00139499:\n    iVar7 = local_b8;\n    pFVar19 = (Fts3Table *)p->pSegments;\n    sqlite3_blob_close((sqlite3_blob *)pFVar19);\n    p->pSegments = (sqlite3_blob *)0x0;\n    sqlite3Fts3PendingTermsClear(pFVar19);\nLAB_001394c5:\n    if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }\n    return iVar7;\n  }\n  sqlite3_bind_int64(pAllLangid,p->iPrevLangid,CONCAT44(in_stack_ffffff38,in_stack_ffffff34));\n  sqlite3_bind_int64(pAllLangid,p->nIndex,CONCAT44(in_stack_ffffff38,in_stack_ffffff34));\n  bVar5 = false;\nLAB_00139524:\n  local_b8 = 0;\nLAB_00139526:\n  do {\n    iVar7 = sqlite3_step(pAllLangid);\n    pStmt = pAllLangid;\n    if (iVar7 != 100) {\n      iVar7 = sqlite3_reset(pAllLangid);\n      if (local_b8 != 0) goto LAB_00139499;\n      pFVar19 = (Fts3Table *)p->pSegments;\n      sqlite3_blob_close((sqlite3_blob *)pFVar19);\n      p->pSegments = (sqlite3_blob *)0x0;\n      sqlite3Fts3PendingTermsClear(pFVar19);\n      if (((iVar7 == 0) && ((bReturnDone & 1U) != 0)) && (iVar7 = 0x65, !bVar5)) {\n        iVar7 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    if (pAllLangid == (sqlite3_stmt *)0x0) {\nLAB_0013a20e:\n      local_9c = 0;\n    }\n    else {\n      iVar7 = extraout_EDX;\n      if (*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc) != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexEnter)(*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc));\n        iVar7 = extraout_EDX_00;\n      }\n      pMem = *(Mem **)(pStmt + 0x74);\n      if ((pMem == (Mem *)0x0) || (*(short *)(pStmt + 0x88) == 0)) {\n        psVar21 = *(sqlite3 **)pStmt;\n        psVar21->errCode = 0x19;\n        sqlite3ErrorFinish(psVar21,iVar7);\n        goto LAB_0013a20e;\n      }\n      uVar1 = pMem->flags;\n      if ((uVar1 & 4) == 0) {\n        if ((uVar1 & 8) == 0) {\n          local_9c = 0;\n          if ((uVar1 & 0x12) != 0) {\n            iVar18 = memIntValue(pMem);\n            local_9c = (int)iVar18;\n          }\n        }\n        else {\n          iVar18 = doubleToInt64((pMem->u).r);\n          local_9c = (int)iVar18;\n        }\n      }\n      else {\n        local_9c = (pMem->u).nZero;\n      }\n    }\n    zTerm = (char *)0x139593;\n    columnMallocFailure(pStmt);\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < p->nIndex) {\n        do {\n          pWriter = (SegmentWriter *)0x0;\n          pFVar11 = &csr;\n          for (iVar7 = 0xe; iVar7 != 0; iVar7 = iVar7 + -1) {\n            pFVar11->apSegment = (Fts3SegReader **)0x0;\n            pFVar11 = (Fts3MultiSegReader *)((int)pFVar11 + (uint)bVar17 * -8 + 4);\n          }\n          iMaxLevel._0_4_ = (SegmentWriter *)0x0;\n          iMaxLevel._4_4_ = 0;\n          pFVar11 = &csr;\n          local_b8 = fts3SegReaderCursor(p,local_9c,local_b0,-2,(char *)0x0,0,1,0,&csr);\n          if (local_b8 == 0) {\n            local_b8 = csr.nSegment;\n            if (csr.nSegment != 0) {\n              local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel);\n              uVar6 = iMaxLevel._4_4_;\n              pSVar20 = (SegmentWriter *)iMaxLevel;\n              if (local_b8 == 0) {\n                if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }\n                csr.pFilter = &filter;\n                filter.zTerm = (char *)0x0;\n                filter.nTerm = 0;\n                filter.iCol = 0;\n                filter.flags = 3;\n                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;\n                while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }\n              }\n              goto LAB_00139790;\n            }\n            ppFVar8 = csr.apSegment;\n            if (pWriter != (SegmentWriter *)0x0) goto LAB_0013979c;\n          }\n          else {\nLAB_00139790:\n            if (pWriter != (SegmentWriter *)0x0) {\nLAB_0013979c:\n              pcVar3 = pWriter->aData;\n              pSVar20 = pWriter;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              pcVar3 = pSVar20->zMalloc;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }\n              if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }\n            }\nLAB_00139c80:\n            ppFVar8 = csr.apSegment;\n            if (0 < csr.nSegment) {\n              pFVar15 = *csr.apSegment;\nLAB_00139c92:\n              local_b4 = 0;\n              ppFVar8 = csr.apSegment;\n              do {\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              } while( true );\n            }\n          }\n          if (ppFVar8 != (Fts3SegReader **)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(ppFVar8);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(ppFVar8);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          pcVar3 = csr.aBuffer;\n          if (csr.aBuffer != (char *)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(csr.aBuffer);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(pcVar3);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar5 = true;\n          if (p->nIndex <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  } while( true );\nLAB_00139ee4:\n  local_b0 = local_b0 + 1;\n  if (local_b8 != 0) goto LAB_00139526;\n  goto LAB_001395a8;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "fts3DoOptimize(Fts3Table *p,int bReturnDone)" identifier (parameter_list "(Fts3Table *p,int bReturnDone)" ( (parameter_declaration "Fts3Table *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "int bReturnDone" primitive_type identifier) ))) (compound_statement "{\n  ushort uVar1;\n  int iVar2;\n  Mem *pMem;\n  char *pcVar3;\n  SegmentNode *pSVar4;\n  sqlite3_blob *p_00;\n  bool bVar5;\n  sqlite3_stmt *pStmt;\n  uint uVar6;\n  int iVar7;\n  int extraout_EDX;\n  int extraout_EDX_00;\n  Fts3SegReader **ppFVar8;\n  SegmentNode *pSVar9;\n  SegmentNode *pSVar10;\n  Fts3MultiSegReader *pFVar11;\n  SegmentNode *pSVar12;\n  SegmentNode *pSVar13;\n  SegmentNode *pSVar14;\n  Fts3SegReader *pFVar15;\n  SegmentNode *pSVar16;\n  int in_GS_OFFSET;\n  byte bVar17;\n  i64 iVar18;\n  Fts3Table *pFVar19;\n  char *in_stack_ffffff2c;\n  char *zTerm;\n  Fts3Table *in_stack_ffffff34;\n  Fts3MultiSegReader *in_stack_ffffff38;\n  SegmentWriter *pSVar20;\n  sqlite3 *psVar21;\n  int local_b8;\n  int local_b4;\n  int local_b0;\n  int local_9c;\n  sqlite3_stmt *pAllLangid;\n  SegmentWriter *pWriter;\n  i64 iMaxLevel;\n  Fts3SegFilter filter;\n  Fts3MultiSegReader csr;\n  \n  bVar17 = 0;\n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  pAllLangid = (sqlite3_stmt *)0x0;\n  local_b8 = fts3SqlStmt(p,0x1b,&pAllLangid,(sqlite3_value **)in_stack_ffffff34);\n  if (local_b8 != 0) {\nLAB_00139499:\n    iVar7 = local_b8;\n    pFVar19 = (Fts3Table *)p->pSegments;\n    sqlite3_blob_close((sqlite3_blob *)pFVar19);\n    p->pSegments = (sqlite3_blob *)0x0;\n    sqlite3Fts3PendingTermsClear(pFVar19);\nLAB_001394c5:\n    if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }\n    return iVar7;\n  }\n  sqlite3_bind_int64(pAllLangid,p->iPrevLangid,CONCAT44(in_stack_ffffff38,in_stack_ffffff34));\n  sqlite3_bind_int64(pAllLangid,p->nIndex,CONCAT44(in_stack_ffffff38,in_stack_ffffff34));\n  bVar5 = false;\nLAB_00139524:\n  local_b8 = 0;\nLAB_00139526:\n  do {\n    iVar7 = sqlite3_step(pAllLangid);\n    pStmt = pAllLangid;\n    if (iVar7 != 100) {\n      iVar7 = sqlite3_reset(pAllLangid);\n      if (local_b8 != 0) goto LAB_00139499;\n      pFVar19 = (Fts3Table *)p->pSegments;\n      sqlite3_blob_close((sqlite3_blob *)pFVar19);\n      p->pSegments = (sqlite3_blob *)0x0;\n      sqlite3Fts3PendingTermsClear(pFVar19);\n      if (((iVar7 == 0) && ((bReturnDone & 1U) != 0)) && (iVar7 = 0x65, !bVar5)) {\n        iVar7 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    if (pAllLangid == (sqlite3_stmt *)0x0) {\nLAB_0013a20e:\n      local_9c = 0;\n    }\n    else {\n      iVar7 = extraout_EDX;\n      if (*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc) != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexEnter)(*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc));\n        iVar7 = extraout_EDX_00;\n      }\n      pMem = *(Mem **)(pStmt + 0x74);\n      if ((pMem == (Mem *)0x0) || (*(short *)(pStmt + 0x88) == 0)) {\n        psVar21 = *(sqlite3 **)pStmt;\n        psVar21->errCode = 0x19;\n        sqlite3ErrorFinish(psVar21,iVar7);\n        goto LAB_0013a20e;\n      }\n      uVar1 = pMem->flags;\n      if ((uVar1 & 4) == 0) {\n        if ((uVar1 & 8) == 0) {\n          local_9c = 0;\n          if ((uVar1 & 0x12) != 0) {\n            iVar18 = memIntValue(pMem);\n            local_9c = (int)iVar18;\n          }\n        }\n        else {\n          iVar18 = doubleToInt64((pMem->u).r);\n          local_9c = (int)iVar18;\n        }\n      }\n      else {\n        local_9c = (pMem->u).nZero;\n      }\n    }\n    zTerm = (char *)0x139593;\n    columnMallocFailure(pStmt);\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < p->nIndex) {\n        do {\n          pWriter = (SegmentWriter *)0x0;\n          pFVar11 = &csr;\n          for (iVar7 = 0xe; iVar7 != 0; iVar7 = iVar7 + -1) {\n            pFVar11->apSegment = (Fts3SegReader **)0x0;\n            pFVar11 = (Fts3MultiSegReader *)((int)pFVar11 + (uint)bVar17 * -8 + 4);\n          }\n          iMaxLevel._0_4_ = (SegmentWriter *)0x0;\n          iMaxLevel._4_4_ = 0;\n          pFVar11 = &csr;\n          local_b8 = fts3SegReaderCursor(p,local_9c,local_b0,-2,(char *)0x0,0,1,0,&csr);\n          if (local_b8 == 0) {\n            local_b8 = csr.nSegment;\n            if (csr.nSegment != 0) {\n              local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel);\n              uVar6 = iMaxLevel._4_4_;\n              pSVar20 = (SegmentWriter *)iMaxLevel;\n              if (local_b8 == 0) {\n                if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }\n                csr.pFilter = &filter;\n                filter.zTerm = (char *)0x0;\n                filter.nTerm = 0;\n                filter.iCol = 0;\n                filter.flags = 3;\n                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;\n                while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }\n              }\n              goto LAB_00139790;\n            }\n            ppFVar8 = csr.apSegment;\n            if (pWriter != (SegmentWriter *)0x0) goto LAB_0013979c;\n          }\n          else {\nLAB_00139790:\n            if (pWriter != (SegmentWriter *)0x0) {\nLAB_0013979c:\n              pcVar3 = pWriter->aData;\n              pSVar20 = pWriter;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              pcVar3 = pSVar20->zMalloc;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }\n              if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }\n            }\nLAB_00139c80:\n            ppFVar8 = csr.apSegment;\n            if (0 < csr.nSegment) {\n              pFVar15 = *csr.apSegment;\nLAB_00139c92:\n              local_b4 = 0;\n              ppFVar8 = csr.apSegment;\n              do {\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              } while( true );\n            }\n          }\n          if (ppFVar8 != (Fts3SegReader **)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(ppFVar8);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(ppFVar8);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          pcVar3 = csr.aBuffer;\n          if (csr.aBuffer != (char *)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(csr.aBuffer);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(pcVar3);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar5 = true;\n          if (p->nIndex <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  } while( true );\nLAB_00139ee4:\n  local_b0 = local_b0 + 1;\n  if (local_b8 != 0) goto LAB_00139526;\n  goto LAB_001395a8;\n}" { (declaration "ushort uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "Mem *pMem;" type_identifier (pointer_declarator "*pMem" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "SegmentNode *pSVar4;" type_identifier (pointer_declarator "*pSVar4" * identifier) ;) (declaration "sqlite3_blob *p_00;" type_identifier (pointer_declarator "*p_00" * identifier) ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "sqlite3_stmt *pStmt;" type_identifier (pointer_declarator "*pStmt" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "int extraout_EDX_00;" primitive_type identifier ;) (declaration "Fts3SegReader **ppFVar8;" type_identifier (pointer_declarator "**ppFVar8" * (pointer_declarator "*ppFVar8" * identifier)) ;) (declaration "SegmentNode *pSVar9;" type_identifier (pointer_declarator "*pSVar9" * identifier) ;) (declaration "SegmentNode *pSVar10;" type_identifier (pointer_declarator "*pSVar10" * identifier) ;) (declaration "Fts3MultiSegReader *pFVar11;" type_identifier (pointer_declarator "*pFVar11" * identifier) ;) (declaration "SegmentNode *pSVar12;" type_identifier (pointer_declarator "*pSVar12" * identifier) ;) (declaration "SegmentNode *pSVar13;" type_identifier (pointer_declarator "*pSVar13" * identifier) ;) (declaration "SegmentNode *pSVar14;" type_identifier (pointer_declarator "*pSVar14" * identifier) ;) (declaration "Fts3SegReader *pFVar15;" type_identifier (pointer_declarator "*pFVar15" * identifier) ;) (declaration "SegmentNode *pSVar16;" type_identifier (pointer_declarator "*pSVar16" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar17;" type_identifier identifier ;) (declaration "i64 iVar18;" type_identifier identifier ;) (declaration "Fts3Table *pFVar19;" type_identifier (pointer_declarator "*pFVar19" * identifier) ;) (declaration "char *in_stack_ffffff2c;" primitive_type (pointer_declarator "*in_stack_ffffff2c" * identifier) ;) (declaration "char *zTerm;" primitive_type (pointer_declarator "*zTerm" * identifier) ;) (declaration "Fts3Table *in_stack_ffffff34;" type_identifier (pointer_declarator "*in_stack_ffffff34" * identifier) ;) (declaration "Fts3MultiSegReader *in_stack_ffffff38;" type_identifier (pointer_declarator "*in_stack_ffffff38" * identifier) ;) (declaration "SegmentWriter *pSVar20;" type_identifier (pointer_declarator "*pSVar20" * identifier) ;) (declaration "sqlite3 *psVar21;" type_identifier (pointer_declarator "*psVar21" * identifier) ;) (declaration "int local_b8;" primitive_type identifier ;) (declaration "int local_b4;" primitive_type identifier ;) (declaration "int local_b0;" primitive_type identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "sqlite3_stmt *pAllLangid;" type_identifier (pointer_declarator "*pAllLangid" * identifier) ;) (declaration "SegmentWriter *pWriter;" type_identifier (pointer_declarator "*pWriter" * identifier) ;) (declaration "i64 iMaxLevel;" type_identifier identifier ;) (declaration "Fts3SegFilter filter;" type_identifier identifier ;) (declaration "Fts3MultiSegReader csr;" type_identifier identifier ;) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pAllLangid = (sqlite3_stmt *)0x0;" (assignment_expression "pAllLangid = (sqlite3_stmt *)0x0" identifier = (cast_expression "(sqlite3_stmt *)0x0" ( (type_descriptor "sqlite3_stmt *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_b8 = fts3SqlStmt(p,0x1b,&pAllLangid,(sqlite3_value **)in_stack_ffffff34);" (assignment_expression "local_b8 = fts3SqlStmt(p,0x1b,&pAllLangid,(sqlite3_value **)in_stack_ffffff34)" identifier = (call_expression "fts3SqlStmt(p,0x1b,&pAllLangid,(sqlite3_value **)in_stack_ffffff34)" identifier (argument_list "(p,0x1b,&pAllLangid,(sqlite3_value **)in_stack_ffffff34)" ( identifier , number_literal , (pointer_expression "&pAllLangid" & identifier) , (cast_expression "(sqlite3_value **)in_stack_ffffff34" ( (type_descriptor "sqlite3_value **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) )))) ;) (if_statement "if (local_b8 != 0) {\nLAB_00139499:\n    iVar7 = local_b8;\n    pFVar19 = (Fts3Table *)p->pSegments;\n    sqlite3_blob_close((sqlite3_blob *)pFVar19);\n    p->pSegments = (sqlite3_blob *)0x0;\n    sqlite3Fts3PendingTermsClear(pFVar19);\nLAB_001394c5:\n    if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }\n    return iVar7;\n  }" if (parenthesized_expression "(local_b8 != 0)" ( (binary_expression "local_b8 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00139499:\n    iVar7 = local_b8;\n    pFVar19 = (Fts3Table *)p->pSegments;\n    sqlite3_blob_close((sqlite3_blob *)pFVar19);\n    p->pSegments = (sqlite3_blob *)0x0;\n    sqlite3Fts3PendingTermsClear(pFVar19);\nLAB_001394c5:\n    if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }\n    return iVar7;\n  }" { (labeled_statement "LAB_00139499:\n    iVar7 = local_b8;" statement_identifier : (expression_statement "iVar7 = local_b8;" (assignment_expression "iVar7 = local_b8" identifier = identifier) ;)) (expression_statement "pFVar19 = (Fts3Table *)p->pSegments;" (assignment_expression "pFVar19 = (Fts3Table *)p->pSegments" identifier = (cast_expression "(Fts3Table *)p->pSegments" ( (type_descriptor "Fts3Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p->pSegments" identifier -> field_identifier))) ;) (expression_statement "sqlite3_blob_close((sqlite3_blob *)pFVar19);" (call_expression "sqlite3_blob_close((sqlite3_blob *)pFVar19)" identifier (argument_list "((sqlite3_blob *)pFVar19)" ( (cast_expression "(sqlite3_blob *)pFVar19" ( (type_descriptor "sqlite3_blob *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "p->pSegments = (sqlite3_blob *)0x0;" (assignment_expression "p->pSegments = (sqlite3_blob *)0x0" (field_expression "p->pSegments" identifier -> field_identifier) = (cast_expression "(sqlite3_blob *)0x0" ( (type_descriptor "sqlite3_blob *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3Fts3PendingTermsClear(pFVar19);" (call_expression "sqlite3Fts3PendingTermsClear(pFVar19)" identifier (argument_list "(pFVar19)" ( identifier ))) ;) (labeled_statement "LAB_001394c5:\n    if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }" statement_identifier : (if_statement "if (iVar2 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }" if (parenthesized_expression "(iVar2 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar2 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar7;" return identifier ;) })) (expression_statement "sqlite3_bind_int64(pAllLangid,p->iPrevLangid,CONCAT44(in_stack_ffffff38,in_stack_ffffff34));" (call_expression "sqlite3_bind_int64(pAllLangid,p->iPrevLangid,CONCAT44(in_stack_ffffff38,in_stack_ffffff34))" identifier (argument_list "(pAllLangid,p->iPrevLangid,CONCAT44(in_stack_ffffff38,in_stack_ffffff34))" ( identifier , (field_expression "p->iPrevLangid" identifier -> field_identifier) , (call_expression "CONCAT44(in_stack_ffffff38,in_stack_ffffff34)" identifier (argument_list "(in_stack_ffffff38,in_stack_ffffff34)" ( identifier , identifier ))) ))) ;) (expression_statement "sqlite3_bind_int64(pAllLangid,p->nIndex,CONCAT44(in_stack_ffffff38,in_stack_ffffff34));" (call_expression "sqlite3_bind_int64(pAllLangid,p->nIndex,CONCAT44(in_stack_ffffff38,in_stack_ffffff34))" identifier (argument_list "(pAllLangid,p->nIndex,CONCAT44(in_stack_ffffff38,in_stack_ffffff34))" ( identifier , (field_expression "p->nIndex" identifier -> field_identifier) , (call_expression "CONCAT44(in_stack_ffffff38,in_stack_ffffff34)" identifier (argument_list "(in_stack_ffffff38,in_stack_ffffff34)" ( identifier , identifier ))) ))) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (labeled_statement "LAB_00139524:\n  local_b8 = 0;" statement_identifier : (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_00139526:\n  do {\n    iVar7 = sqlite3_step(pAllLangid);\n    pStmt = pAllLangid;\n    if (iVar7 != 100) {\n      iVar7 = sqlite3_reset(pAllLangid);\n      if (local_b8 != 0) goto LAB_00139499;\n      pFVar19 = (Fts3Table *)p->pSegments;\n      sqlite3_blob_close((sqlite3_blob *)pFVar19);\n      p->pSegments = (sqlite3_blob *)0x0;\n      sqlite3Fts3PendingTermsClear(pFVar19);\n      if (((iVar7 == 0) && ((bReturnDone & 1U) != 0)) && (iVar7 = 0x65, !bVar5)) {\n        iVar7 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    if (pAllLangid == (sqlite3_stmt *)0x0) {\nLAB_0013a20e:\n      local_9c = 0;\n    }\n    else {\n      iVar7 = extraout_EDX;\n      if (*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc) != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexEnter)(*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc));\n        iVar7 = extraout_EDX_00;\n      }\n      pMem = *(Mem **)(pStmt + 0x74);\n      if ((pMem == (Mem *)0x0) || (*(short *)(pStmt + 0x88) == 0)) {\n        psVar21 = *(sqlite3 **)pStmt;\n        psVar21->errCode = 0x19;\n        sqlite3ErrorFinish(psVar21,iVar7);\n        goto LAB_0013a20e;\n      }\n      uVar1 = pMem->flags;\n      if ((uVar1 & 4) == 0) {\n        if ((uVar1 & 8) == 0) {\n          local_9c = 0;\n          if ((uVar1 & 0x12) != 0) {\n            iVar18 = memIntValue(pMem);\n            local_9c = (int)iVar18;\n          }\n        }\n        else {\n          iVar18 = doubleToInt64((pMem->u).r);\n          local_9c = (int)iVar18;\n        }\n      }\n      else {\n        local_9c = (pMem->u).nZero;\n      }\n    }\n    zTerm = (char *)0x139593;\n    columnMallocFailure(pStmt);\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < p->nIndex) {\n        do {\n          pWriter = (SegmentWriter *)0x0;\n          pFVar11 = &csr;\n          for (iVar7 = 0xe; iVar7 != 0; iVar7 = iVar7 + -1) {\n            pFVar11->apSegment = (Fts3SegReader **)0x0;\n            pFVar11 = (Fts3MultiSegReader *)((int)pFVar11 + (uint)bVar17 * -8 + 4);\n          }\n          iMaxLevel._0_4_ = (SegmentWriter *)0x0;\n          iMaxLevel._4_4_ = 0;\n          pFVar11 = &csr;\n          local_b8 = fts3SegReaderCursor(p,local_9c,local_b0,-2,(char *)0x0,0,1,0,&csr);\n          if (local_b8 == 0) {\n            local_b8 = csr.nSegment;\n            if (csr.nSegment != 0) {\n              local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel);\n              uVar6 = iMaxLevel._4_4_;\n              pSVar20 = (SegmentWriter *)iMaxLevel;\n              if (local_b8 == 0) {\n                if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }\n                csr.pFilter = &filter;\n                filter.zTerm = (char *)0x0;\n                filter.nTerm = 0;\n                filter.iCol = 0;\n                filter.flags = 3;\n                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;\n                while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }\n              }\n              goto LAB_00139790;\n            }\n            ppFVar8 = csr.apSegment;\n            if (pWriter != (SegmentWriter *)0x0) goto LAB_0013979c;\n          }\n          else {\nLAB_00139790:\n            if (pWriter != (SegmentWriter *)0x0) {\nLAB_0013979c:\n              pcVar3 = pWriter->aData;\n              pSVar20 = pWriter;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              pcVar3 = pSVar20->zMalloc;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }\n              if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }\n            }\nLAB_00139c80:\n            ppFVar8 = csr.apSegment;\n            if (0 < csr.nSegment) {\n              pFVar15 = *csr.apSegment;\nLAB_00139c92:\n              local_b4 = 0;\n              ppFVar8 = csr.apSegment;\n              do {\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              } while( true );\n            }\n          }\n          if (ppFVar8 != (Fts3SegReader **)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(ppFVar8);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(ppFVar8);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          pcVar3 = csr.aBuffer;\n          if (csr.aBuffer != (char *)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(csr.aBuffer);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(pcVar3);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar5 = true;\n          if (p->nIndex <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  } while( true );" statement_identifier : (do_statement "do {\n    iVar7 = sqlite3_step(pAllLangid);\n    pStmt = pAllLangid;\n    if (iVar7 != 100) {\n      iVar7 = sqlite3_reset(pAllLangid);\n      if (local_b8 != 0) goto LAB_00139499;\n      pFVar19 = (Fts3Table *)p->pSegments;\n      sqlite3_blob_close((sqlite3_blob *)pFVar19);\n      p->pSegments = (sqlite3_blob *)0x0;\n      sqlite3Fts3PendingTermsClear(pFVar19);\n      if (((iVar7 == 0) && ((bReturnDone & 1U) != 0)) && (iVar7 = 0x65, !bVar5)) {\n        iVar7 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    if (pAllLangid == (sqlite3_stmt *)0x0) {\nLAB_0013a20e:\n      local_9c = 0;\n    }\n    else {\n      iVar7 = extraout_EDX;\n      if (*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc) != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexEnter)(*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc));\n        iVar7 = extraout_EDX_00;\n      }\n      pMem = *(Mem **)(pStmt + 0x74);\n      if ((pMem == (Mem *)0x0) || (*(short *)(pStmt + 0x88) == 0)) {\n        psVar21 = *(sqlite3 **)pStmt;\n        psVar21->errCode = 0x19;\n        sqlite3ErrorFinish(psVar21,iVar7);\n        goto LAB_0013a20e;\n      }\n      uVar1 = pMem->flags;\n      if ((uVar1 & 4) == 0) {\n        if ((uVar1 & 8) == 0) {\n          local_9c = 0;\n          if ((uVar1 & 0x12) != 0) {\n            iVar18 = memIntValue(pMem);\n            local_9c = (int)iVar18;\n          }\n        }\n        else {\n          iVar18 = doubleToInt64((pMem->u).r);\n          local_9c = (int)iVar18;\n        }\n      }\n      else {\n        local_9c = (pMem->u).nZero;\n      }\n    }\n    zTerm = (char *)0x139593;\n    columnMallocFailure(pStmt);\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < p->nIndex) {\n        do {\n          pWriter = (SegmentWriter *)0x0;\n          pFVar11 = &csr;\n          for (iVar7 = 0xe; iVar7 != 0; iVar7 = iVar7 + -1) {\n            pFVar11->apSegment = (Fts3SegReader **)0x0;\n            pFVar11 = (Fts3MultiSegReader *)((int)pFVar11 + (uint)bVar17 * -8 + 4);\n          }\n          iMaxLevel._0_4_ = (SegmentWriter *)0x0;\n          iMaxLevel._4_4_ = 0;\n          pFVar11 = &csr;\n          local_b8 = fts3SegReaderCursor(p,local_9c,local_b0,-2,(char *)0x0,0,1,0,&csr);\n          if (local_b8 == 0) {\n            local_b8 = csr.nSegment;\n            if (csr.nSegment != 0) {\n              local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel);\n              uVar6 = iMaxLevel._4_4_;\n              pSVar20 = (SegmentWriter *)iMaxLevel;\n              if (local_b8 == 0) {\n                if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }\n                csr.pFilter = &filter;\n                filter.zTerm = (char *)0x0;\n                filter.nTerm = 0;\n                filter.iCol = 0;\n                filter.flags = 3;\n                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;\n                while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }\n              }\n              goto LAB_00139790;\n            }\n            ppFVar8 = csr.apSegment;\n            if (pWriter != (SegmentWriter *)0x0) goto LAB_0013979c;\n          }\n          else {\nLAB_00139790:\n            if (pWriter != (SegmentWriter *)0x0) {\nLAB_0013979c:\n              pcVar3 = pWriter->aData;\n              pSVar20 = pWriter;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              pcVar3 = pSVar20->zMalloc;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }\n              if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }\n            }\nLAB_00139c80:\n            ppFVar8 = csr.apSegment;\n            if (0 < csr.nSegment) {\n              pFVar15 = *csr.apSegment;\nLAB_00139c92:\n              local_b4 = 0;\n              ppFVar8 = csr.apSegment;\n              do {\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              } while( true );\n            }\n          }\n          if (ppFVar8 != (Fts3SegReader **)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(ppFVar8);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(ppFVar8);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          pcVar3 = csr.aBuffer;\n          if (csr.aBuffer != (char *)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(csr.aBuffer);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(pcVar3);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar5 = true;\n          if (p->nIndex <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  } while( true );" do (compound_statement "{\n    iVar7 = sqlite3_step(pAllLangid);\n    pStmt = pAllLangid;\n    if (iVar7 != 100) {\n      iVar7 = sqlite3_reset(pAllLangid);\n      if (local_b8 != 0) goto LAB_00139499;\n      pFVar19 = (Fts3Table *)p->pSegments;\n      sqlite3_blob_close((sqlite3_blob *)pFVar19);\n      p->pSegments = (sqlite3_blob *)0x0;\n      sqlite3Fts3PendingTermsClear(pFVar19);\n      if (((iVar7 == 0) && ((bReturnDone & 1U) != 0)) && (iVar7 = 0x65, !bVar5)) {\n        iVar7 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    if (pAllLangid == (sqlite3_stmt *)0x0) {\nLAB_0013a20e:\n      local_9c = 0;\n    }\n    else {\n      iVar7 = extraout_EDX;\n      if (*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc) != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexEnter)(*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc));\n        iVar7 = extraout_EDX_00;\n      }\n      pMem = *(Mem **)(pStmt + 0x74);\n      if ((pMem == (Mem *)0x0) || (*(short *)(pStmt + 0x88) == 0)) {\n        psVar21 = *(sqlite3 **)pStmt;\n        psVar21->errCode = 0x19;\n        sqlite3ErrorFinish(psVar21,iVar7);\n        goto LAB_0013a20e;\n      }\n      uVar1 = pMem->flags;\n      if ((uVar1 & 4) == 0) {\n        if ((uVar1 & 8) == 0) {\n          local_9c = 0;\n          if ((uVar1 & 0x12) != 0) {\n            iVar18 = memIntValue(pMem);\n            local_9c = (int)iVar18;\n          }\n        }\n        else {\n          iVar18 = doubleToInt64((pMem->u).r);\n          local_9c = (int)iVar18;\n        }\n      }\n      else {\n        local_9c = (pMem->u).nZero;\n      }\n    }\n    zTerm = (char *)0x139593;\n    columnMallocFailure(pStmt);\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < p->nIndex) {\n        do {\n          pWriter = (SegmentWriter *)0x0;\n          pFVar11 = &csr;\n          for (iVar7 = 0xe; iVar7 != 0; iVar7 = iVar7 + -1) {\n            pFVar11->apSegment = (Fts3SegReader **)0x0;\n            pFVar11 = (Fts3MultiSegReader *)((int)pFVar11 + (uint)bVar17 * -8 + 4);\n          }\n          iMaxLevel._0_4_ = (SegmentWriter *)0x0;\n          iMaxLevel._4_4_ = 0;\n          pFVar11 = &csr;\n          local_b8 = fts3SegReaderCursor(p,local_9c,local_b0,-2,(char *)0x0,0,1,0,&csr);\n          if (local_b8 == 0) {\n            local_b8 = csr.nSegment;\n            if (csr.nSegment != 0) {\n              local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel);\n              uVar6 = iMaxLevel._4_4_;\n              pSVar20 = (SegmentWriter *)iMaxLevel;\n              if (local_b8 == 0) {\n                if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }\n                csr.pFilter = &filter;\n                filter.zTerm = (char *)0x0;\n                filter.nTerm = 0;\n                filter.iCol = 0;\n                filter.flags = 3;\n                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;\n                while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }\n              }\n              goto LAB_00139790;\n            }\n            ppFVar8 = csr.apSegment;\n            if (pWriter != (SegmentWriter *)0x0) goto LAB_0013979c;\n          }\n          else {\nLAB_00139790:\n            if (pWriter != (SegmentWriter *)0x0) {\nLAB_0013979c:\n              pcVar3 = pWriter->aData;\n              pSVar20 = pWriter;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              pcVar3 = pSVar20->zMalloc;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }\n              if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }\n            }\nLAB_00139c80:\n            ppFVar8 = csr.apSegment;\n            if (0 < csr.nSegment) {\n              pFVar15 = *csr.apSegment;\nLAB_00139c92:\n              local_b4 = 0;\n              ppFVar8 = csr.apSegment;\n              do {\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              } while( true );\n            }\n          }\n          if (ppFVar8 != (Fts3SegReader **)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(ppFVar8);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(ppFVar8);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          pcVar3 = csr.aBuffer;\n          if (csr.aBuffer != (char *)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(csr.aBuffer);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(pcVar3);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar5 = true;\n          if (p->nIndex <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  }" { (expression_statement "iVar7 = sqlite3_step(pAllLangid);" (assignment_expression "iVar7 = sqlite3_step(pAllLangid)" identifier = (call_expression "sqlite3_step(pAllLangid)" identifier (argument_list "(pAllLangid)" ( identifier )))) ;) (expression_statement "pStmt = pAllLangid;" (assignment_expression "pStmt = pAllLangid" identifier = identifier) ;) (if_statement "if (iVar7 != 100) {\n      iVar7 = sqlite3_reset(pAllLangid);\n      if (local_b8 != 0) goto LAB_00139499;\n      pFVar19 = (Fts3Table *)p->pSegments;\n      sqlite3_blob_close((sqlite3_blob *)pFVar19);\n      p->pSegments = (sqlite3_blob *)0x0;\n      sqlite3Fts3PendingTermsClear(pFVar19);\n      if (((iVar7 == 0) && ((bReturnDone & 1U) != 0)) && (iVar7 = 0x65, !bVar5)) {\n        iVar7 = 0;\n      }\n      goto LAB_001394c5;\n    }" if (parenthesized_expression "(iVar7 != 100)" ( (binary_expression "iVar7 != 100" identifier != number_literal) )) (compound_statement "{\n      iVar7 = sqlite3_reset(pAllLangid);\n      if (local_b8 != 0) goto LAB_00139499;\n      pFVar19 = (Fts3Table *)p->pSegments;\n      sqlite3_blob_close((sqlite3_blob *)pFVar19);\n      p->pSegments = (sqlite3_blob *)0x0;\n      sqlite3Fts3PendingTermsClear(pFVar19);\n      if (((iVar7 == 0) && ((bReturnDone & 1U) != 0)) && (iVar7 = 0x65, !bVar5)) {\n        iVar7 = 0;\n      }\n      goto LAB_001394c5;\n    }" { (expression_statement "iVar7 = sqlite3_reset(pAllLangid);" (assignment_expression "iVar7 = sqlite3_reset(pAllLangid)" identifier = (call_expression "sqlite3_reset(pAllLangid)" identifier (argument_list "(pAllLangid)" ( identifier )))) ;) (if_statement "if (local_b8 != 0) goto LAB_00139499;" if (parenthesized_expression "(local_b8 != 0)" ( (binary_expression "local_b8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00139499;" goto statement_identifier ;)) (expression_statement "pFVar19 = (Fts3Table *)p->pSegments;" (assignment_expression "pFVar19 = (Fts3Table *)p->pSegments" identifier = (cast_expression "(Fts3Table *)p->pSegments" ( (type_descriptor "Fts3Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p->pSegments" identifier -> field_identifier))) ;) (expression_statement "sqlite3_blob_close((sqlite3_blob *)pFVar19);" (call_expression "sqlite3_blob_close((sqlite3_blob *)pFVar19)" identifier (argument_list "((sqlite3_blob *)pFVar19)" ( (cast_expression "(sqlite3_blob *)pFVar19" ( (type_descriptor "sqlite3_blob *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "p->pSegments = (sqlite3_blob *)0x0;" (assignment_expression "p->pSegments = (sqlite3_blob *)0x0" (field_expression "p->pSegments" identifier -> field_identifier) = (cast_expression "(sqlite3_blob *)0x0" ( (type_descriptor "sqlite3_blob *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3Fts3PendingTermsClear(pFVar19);" (call_expression "sqlite3Fts3PendingTermsClear(pFVar19)" identifier (argument_list "(pFVar19)" ( identifier ))) ;) (if_statement "if (((iVar7 == 0) && ((bReturnDone & 1U) != 0)) && (iVar7 = 0x65, !bVar5)) {\n        iVar7 = 0;\n      }" if (parenthesized_expression "(((iVar7 == 0) && ((bReturnDone & 1U) != 0)) && (iVar7 = 0x65, !bVar5))" ( (binary_expression "((iVar7 == 0) && ((bReturnDone & 1U) != 0)) && (iVar7 = 0x65, !bVar5)" (parenthesized_expression "((iVar7 == 0) && ((bReturnDone & 1U) != 0))" ( (binary_expression "(iVar7 == 0) && ((bReturnDone & 1U) != 0)" (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) && (parenthesized_expression "((bReturnDone & 1U) != 0)" ( (binary_expression "(bReturnDone & 1U) != 0" (parenthesized_expression "(bReturnDone & 1U)" ( (binary_expression "bReturnDone & 1U" identifier & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "(iVar7 = 0x65, !bVar5)" ( (comma_expression "iVar7 = 0x65, !bVar5" (assignment_expression "iVar7 = 0x65" identifier = number_literal) , (unary_expression "!bVar5" ! identifier)) ))) )) (compound_statement "{\n        iVar7 = 0;\n      }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) })) (goto_statement "goto LAB_001394c5;" goto statement_identifier ;) })) (if_statement "if (pAllLangid == (sqlite3_stmt *)0x0) {\nLAB_0013a20e:\n      local_9c = 0;\n    }\n    else {\n      iVar7 = extraout_EDX;\n      if (*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc) != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexEnter)(*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc));\n        iVar7 = extraout_EDX_00;\n      }\n      pMem = *(Mem **)(pStmt + 0x74);\n      if ((pMem == (Mem *)0x0) || (*(short *)(pStmt + 0x88) == 0)) {\n        psVar21 = *(sqlite3 **)pStmt;\n        psVar21->errCode = 0x19;\n        sqlite3ErrorFinish(psVar21,iVar7);\n        goto LAB_0013a20e;\n      }\n      uVar1 = pMem->flags;\n      if ((uVar1 & 4) == 0) {\n        if ((uVar1 & 8) == 0) {\n          local_9c = 0;\n          if ((uVar1 & 0x12) != 0) {\n            iVar18 = memIntValue(pMem);\n            local_9c = (int)iVar18;\n          }\n        }\n        else {\n          iVar18 = doubleToInt64((pMem->u).r);\n          local_9c = (int)iVar18;\n        }\n      }\n      else {\n        local_9c = (pMem->u).nZero;\n      }\n    }" if (parenthesized_expression "(pAllLangid == (sqlite3_stmt *)0x0)" ( (binary_expression "pAllLangid == (sqlite3_stmt *)0x0" identifier == (cast_expression "(sqlite3_stmt *)0x0" ( (type_descriptor "sqlite3_stmt *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0013a20e:\n      local_9c = 0;\n    }" { (labeled_statement "LAB_0013a20e:\n      local_9c = 0;" statement_identifier : (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;)) }) (else_clause "else {\n      iVar7 = extraout_EDX;\n      if (*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc) != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexEnter)(*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc));\n        iVar7 = extraout_EDX_00;\n      }\n      pMem = *(Mem **)(pStmt + 0x74);\n      if ((pMem == (Mem *)0x0) || (*(short *)(pStmt + 0x88) == 0)) {\n        psVar21 = *(sqlite3 **)pStmt;\n        psVar21->errCode = 0x19;\n        sqlite3ErrorFinish(psVar21,iVar7);\n        goto LAB_0013a20e;\n      }\n      uVar1 = pMem->flags;\n      if ((uVar1 & 4) == 0) {\n        if ((uVar1 & 8) == 0) {\n          local_9c = 0;\n          if ((uVar1 & 0x12) != 0) {\n            iVar18 = memIntValue(pMem);\n            local_9c = (int)iVar18;\n          }\n        }\n        else {\n          iVar18 = doubleToInt64((pMem->u).r);\n          local_9c = (int)iVar18;\n        }\n      }\n      else {\n        local_9c = (pMem->u).nZero;\n      }\n    }" else (compound_statement "{\n      iVar7 = extraout_EDX;\n      if (*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc) != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexEnter)(*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc));\n        iVar7 = extraout_EDX_00;\n      }\n      pMem = *(Mem **)(pStmt + 0x74);\n      if ((pMem == (Mem *)0x0) || (*(short *)(pStmt + 0x88) == 0)) {\n        psVar21 = *(sqlite3 **)pStmt;\n        psVar21->errCode = 0x19;\n        sqlite3ErrorFinish(psVar21,iVar7);\n        goto LAB_0013a20e;\n      }\n      uVar1 = pMem->flags;\n      if ((uVar1 & 4) == 0) {\n        if ((uVar1 & 8) == 0) {\n          local_9c = 0;\n          if ((uVar1 & 0x12) != 0) {\n            iVar18 = memIntValue(pMem);\n            local_9c = (int)iVar18;\n          }\n        }\n        else {\n          iVar18 = doubleToInt64((pMem->u).r);\n          local_9c = (int)iVar18;\n        }\n      }\n      else {\n        local_9c = (pMem->u).nZero;\n      }\n    }" { (expression_statement "iVar7 = extraout_EDX;" (assignment_expression "iVar7 = extraout_EDX" identifier = identifier) ;) (if_statement "if (*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc) != (sqlite3_mutex *)0x0) {\n        (*sqlite3Config.mutex.xMutexEnter)(*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc));\n        iVar7 = extraout_EDX_00;\n      }" if (parenthesized_expression "(*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc) != (sqlite3_mutex *)0x0)" ( (binary_expression "*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc) != (sqlite3_mutex *)0x0" (pointer_expression "*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc)" * (cast_expression "(sqlite3_mutex **)(*(int *)pAllLangid + 0xc)" ( (type_descriptor "sqlite3_mutex **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pAllLangid + 0xc)" ( (binary_expression "*(int *)pAllLangid + 0xc" (pointer_expression "*(int *)pAllLangid" * (cast_expression "(int *)pAllLangid" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (*sqlite3Config.mutex.xMutexEnter)(*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc));\n        iVar7 = extraout_EDX_00;\n      }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc));" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc))" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc))" ( (pointer_expression "*(sqlite3_mutex **)(*(int *)pAllLangid + 0xc)" * (cast_expression "(sqlite3_mutex **)(*(int *)pAllLangid + 0xc)" ( (type_descriptor "sqlite3_mutex **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)pAllLangid + 0xc)" ( (binary_expression "*(int *)pAllLangid + 0xc" (pointer_expression "*(int *)pAllLangid" * (cast_expression "(int *)pAllLangid" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) ))) ;) (expression_statement "iVar7 = extraout_EDX_00;" (assignment_expression "iVar7 = extraout_EDX_00" identifier = identifier) ;) })) (expression_statement "pMem = *(Mem **)(pStmt + 0x74);" (assignment_expression "pMem = *(Mem **)(pStmt + 0x74)" identifier = (pointer_expression "*(Mem **)(pStmt + 0x74)" * (cast_expression "(Mem **)(pStmt + 0x74)" ( (type_descriptor "Mem **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pStmt + 0x74)" ( (binary_expression "pStmt + 0x74" identifier + number_literal) ))))) ;) (if_statement "if ((pMem == (Mem *)0x0) || (*(short *)(pStmt + 0x88) == 0)) {\n        psVar21 = *(sqlite3 **)pStmt;\n        psVar21->errCode = 0x19;\n        sqlite3ErrorFinish(psVar21,iVar7);\n        goto LAB_0013a20e;\n      }" if (parenthesized_expression "((pMem == (Mem *)0x0) || (*(short *)(pStmt + 0x88) == 0))" ( (binary_expression "(pMem == (Mem *)0x0) || (*(short *)(pStmt + 0x88) == 0)" (parenthesized_expression "(pMem == (Mem *)0x0)" ( (binary_expression "pMem == (Mem *)0x0" identifier == (cast_expression "(Mem *)0x0" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*(short *)(pStmt + 0x88) == 0)" ( (binary_expression "*(short *)(pStmt + 0x88) == 0" (pointer_expression "*(short *)(pStmt + 0x88)" * (cast_expression "(short *)(pStmt + 0x88)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pStmt + 0x88)" ( (binary_expression "pStmt + 0x88" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n        psVar21 = *(sqlite3 **)pStmt;\n        psVar21->errCode = 0x19;\n        sqlite3ErrorFinish(psVar21,iVar7);\n        goto LAB_0013a20e;\n      }" { (expression_statement "psVar21 = *(sqlite3 **)pStmt;" (assignment_expression "psVar21 = *(sqlite3 **)pStmt" identifier = (pointer_expression "*(sqlite3 **)pStmt" * (cast_expression "(sqlite3 **)pStmt" ( (type_descriptor "sqlite3 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "psVar21->errCode = 0x19;" (assignment_expression "psVar21->errCode = 0x19" (field_expression "psVar21->errCode" identifier -> field_identifier) = number_literal) ;) (expression_statement "sqlite3ErrorFinish(psVar21,iVar7);" (call_expression "sqlite3ErrorFinish(psVar21,iVar7)" identifier (argument_list "(psVar21,iVar7)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_0013a20e;" goto statement_identifier ;) })) (expression_statement "uVar1 = pMem->flags;" (assignment_expression "uVar1 = pMem->flags" identifier = (field_expression "pMem->flags" identifier -> field_identifier)) ;) (if_statement "if ((uVar1 & 4) == 0) {\n        if ((uVar1 & 8) == 0) {\n          local_9c = 0;\n          if ((uVar1 & 0x12) != 0) {\n            iVar18 = memIntValue(pMem);\n            local_9c = (int)iVar18;\n          }\n        }\n        else {\n          iVar18 = doubleToInt64((pMem->u).r);\n          local_9c = (int)iVar18;\n        }\n      }\n      else {\n        local_9c = (pMem->u).nZero;\n      }" if (parenthesized_expression "((uVar1 & 4) == 0)" ( (binary_expression "(uVar1 & 4) == 0" (parenthesized_expression "(uVar1 & 4)" ( (binary_expression "uVar1 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((uVar1 & 8) == 0) {\n          local_9c = 0;\n          if ((uVar1 & 0x12) != 0) {\n            iVar18 = memIntValue(pMem);\n            local_9c = (int)iVar18;\n          }\n        }\n        else {\n          iVar18 = doubleToInt64((pMem->u).r);\n          local_9c = (int)iVar18;\n        }\n      }" { (if_statement "if ((uVar1 & 8) == 0) {\n          local_9c = 0;\n          if ((uVar1 & 0x12) != 0) {\n            iVar18 = memIntValue(pMem);\n            local_9c = (int)iVar18;\n          }\n        }\n        else {\n          iVar18 = doubleToInt64((pMem->u).r);\n          local_9c = (int)iVar18;\n        }" if (parenthesized_expression "((uVar1 & 8) == 0)" ( (binary_expression "(uVar1 & 8) == 0" (parenthesized_expression "(uVar1 & 8)" ( (binary_expression "uVar1 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          local_9c = 0;\n          if ((uVar1 & 0x12) != 0) {\n            iVar18 = memIntValue(pMem);\n            local_9c = (int)iVar18;\n          }\n        }" { (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) (if_statement "if ((uVar1 & 0x12) != 0) {\n            iVar18 = memIntValue(pMem);\n            local_9c = (int)iVar18;\n          }" if (parenthesized_expression "((uVar1 & 0x12) != 0)" ( (binary_expression "(uVar1 & 0x12) != 0" (parenthesized_expression "(uVar1 & 0x12)" ( (binary_expression "uVar1 & 0x12" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            iVar18 = memIntValue(pMem);\n            local_9c = (int)iVar18;\n          }" { (expression_statement "iVar18 = memIntValue(pMem);" (assignment_expression "iVar18 = memIntValue(pMem)" identifier = (call_expression "memIntValue(pMem)" identifier (argument_list "(pMem)" ( identifier )))) ;) (expression_statement "local_9c = (int)iVar18;" (assignment_expression "local_9c = (int)iVar18" identifier = (cast_expression "(int)iVar18" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) }) (else_clause "else {\n          iVar18 = doubleToInt64((pMem->u).r);\n          local_9c = (int)iVar18;\n        }" else (compound_statement "{\n          iVar18 = doubleToInt64((pMem->u).r);\n          local_9c = (int)iVar18;\n        }" { (expression_statement "iVar18 = doubleToInt64((pMem->u).r);" (assignment_expression "iVar18 = doubleToInt64((pMem->u).r)" identifier = (call_expression "doubleToInt64((pMem->u).r)" identifier (argument_list "((pMem->u).r)" ( (field_expression "(pMem->u).r" (parenthesized_expression "(pMem->u)" ( (field_expression "pMem->u" identifier -> field_identifier) )) . field_identifier) )))) ;) (expression_statement "local_9c = (int)iVar18;" (assignment_expression "local_9c = (int)iVar18" identifier = (cast_expression "(int)iVar18" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }))) }) (else_clause "else {\n        local_9c = (pMem->u).nZero;\n      }" else (compound_statement "{\n        local_9c = (pMem->u).nZero;\n      }" { (expression_statement "local_9c = (pMem->u).nZero;" (assignment_expression "local_9c = (pMem->u).nZero" identifier = (field_expression "(pMem->u).nZero" (parenthesized_expression "(pMem->u)" ( (field_expression "pMem->u" identifier -> field_identifier) )) . field_identifier)) ;) }))) }))) (expression_statement "zTerm = (char *)0x139593;" (assignment_expression "zTerm = (char *)0x139593" identifier = (cast_expression "(char *)0x139593" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "columnMallocFailure(pStmt);" (call_expression "columnMallocFailure(pStmt)" identifier (argument_list "(pStmt)" ( identifier ))) ;) (expression_statement "local_b0 = 0;" (assignment_expression "local_b0 = 0" identifier = number_literal) ;) (if_statement "if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < p->nIndex) {\n        do {\n          pWriter = (SegmentWriter *)0x0;\n          pFVar11 = &csr;\n          for (iVar7 = 0xe; iVar7 != 0; iVar7 = iVar7 + -1) {\n            pFVar11->apSegment = (Fts3SegReader **)0x0;\n            pFVar11 = (Fts3MultiSegReader *)((int)pFVar11 + (uint)bVar17 * -8 + 4);\n          }\n          iMaxLevel._0_4_ = (SegmentWriter *)0x0;\n          iMaxLevel._4_4_ = 0;\n          pFVar11 = &csr;\n          local_b8 = fts3SegReaderCursor(p,local_9c,local_b0,-2,(char *)0x0,0,1,0,&csr);\n          if (local_b8 == 0) {\n            local_b8 = csr.nSegment;\n            if (csr.nSegment != 0) {\n              local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel);\n              uVar6 = iMaxLevel._4_4_;\n              pSVar20 = (SegmentWriter *)iMaxLevel;\n              if (local_b8 == 0) {\n                if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }\n                csr.pFilter = &filter;\n                filter.zTerm = (char *)0x0;\n                filter.nTerm = 0;\n                filter.iCol = 0;\n                filter.flags = 3;\n                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;\n                while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }\n              }\n              goto LAB_00139790;\n            }\n            ppFVar8 = csr.apSegment;\n            if (pWriter != (SegmentWriter *)0x0) goto LAB_0013979c;\n          }\n          else {\nLAB_00139790:\n            if (pWriter != (SegmentWriter *)0x0) {\nLAB_0013979c:\n              pcVar3 = pWriter->aData;\n              pSVar20 = pWriter;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              pcVar3 = pSVar20->zMalloc;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }\n              if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }\n            }\nLAB_00139c80:\n            ppFVar8 = csr.apSegment;\n            if (0 < csr.nSegment) {\n              pFVar15 = *csr.apSegment;\nLAB_00139c92:\n              local_b4 = 0;\n              ppFVar8 = csr.apSegment;\n              do {\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              } while( true );\n            }\n          }\n          if (ppFVar8 != (Fts3SegReader **)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(ppFVar8);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(ppFVar8);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          pcVar3 = csr.aBuffer;\n          if (csr.aBuffer != (char *)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(csr.aBuffer);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(pcVar3);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar5 = true;\n          if (p->nIndex <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }" if (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001395a8:\n      if (local_b0 < p->nIndex) {\n        do {\n          pWriter = (SegmentWriter *)0x0;\n          pFVar11 = &csr;\n          for (iVar7 = 0xe; iVar7 != 0; iVar7 = iVar7 + -1) {\n            pFVar11->apSegment = (Fts3SegReader **)0x0;\n            pFVar11 = (Fts3MultiSegReader *)((int)pFVar11 + (uint)bVar17 * -8 + 4);\n          }\n          iMaxLevel._0_4_ = (SegmentWriter *)0x0;\n          iMaxLevel._4_4_ = 0;\n          pFVar11 = &csr;\n          local_b8 = fts3SegReaderCursor(p,local_9c,local_b0,-2,(char *)0x0,0,1,0,&csr);\n          if (local_b8 == 0) {\n            local_b8 = csr.nSegment;\n            if (csr.nSegment != 0) {\n              local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel);\n              uVar6 = iMaxLevel._4_4_;\n              pSVar20 = (SegmentWriter *)iMaxLevel;\n              if (local_b8 == 0) {\n                if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }\n                csr.pFilter = &filter;\n                filter.zTerm = (char *)0x0;\n                filter.nTerm = 0;\n                filter.iCol = 0;\n                filter.flags = 3;\n                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;\n                while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }\n              }\n              goto LAB_00139790;\n            }\n            ppFVar8 = csr.apSegment;\n            if (pWriter != (SegmentWriter *)0x0) goto LAB_0013979c;\n          }\n          else {\nLAB_00139790:\n            if (pWriter != (SegmentWriter *)0x0) {\nLAB_0013979c:\n              pcVar3 = pWriter->aData;\n              pSVar20 = pWriter;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              pcVar3 = pSVar20->zMalloc;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }\n              if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }\n            }\nLAB_00139c80:\n            ppFVar8 = csr.apSegment;\n            if (0 < csr.nSegment) {\n              pFVar15 = *csr.apSegment;\nLAB_00139c92:\n              local_b4 = 0;\n              ppFVar8 = csr.apSegment;\n              do {\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              } while( true );\n            }\n          }\n          if (ppFVar8 != (Fts3SegReader **)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(ppFVar8);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(ppFVar8);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          pcVar3 = csr.aBuffer;\n          if (csr.aBuffer != (char *)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(csr.aBuffer);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(pcVar3);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar5 = true;\n          if (p->nIndex <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }" { (labeled_statement "LAB_001395a8:\n      if (local_b0 < p->nIndex) {\n        do {\n          pWriter = (SegmentWriter *)0x0;\n          pFVar11 = &csr;\n          for (iVar7 = 0xe; iVar7 != 0; iVar7 = iVar7 + -1) {\n            pFVar11->apSegment = (Fts3SegReader **)0x0;\n            pFVar11 = (Fts3MultiSegReader *)((int)pFVar11 + (uint)bVar17 * -8 + 4);\n          }\n          iMaxLevel._0_4_ = (SegmentWriter *)0x0;\n          iMaxLevel._4_4_ = 0;\n          pFVar11 = &csr;\n          local_b8 = fts3SegReaderCursor(p,local_9c,local_b0,-2,(char *)0x0,0,1,0,&csr);\n          if (local_b8 == 0) {\n            local_b8 = csr.nSegment;\n            if (csr.nSegment != 0) {\n              local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel);\n              uVar6 = iMaxLevel._4_4_;\n              pSVar20 = (SegmentWriter *)iMaxLevel;\n              if (local_b8 == 0) {\n                if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }\n                csr.pFilter = &filter;\n                filter.zTerm = (char *)0x0;\n                filter.nTerm = 0;\n                filter.iCol = 0;\n                filter.flags = 3;\n                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;\n                while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }\n              }\n              goto LAB_00139790;\n            }\n            ppFVar8 = csr.apSegment;\n            if (pWriter != (SegmentWriter *)0x0) goto LAB_0013979c;\n          }\n          else {\nLAB_00139790:\n            if (pWriter != (SegmentWriter *)0x0) {\nLAB_0013979c:\n              pcVar3 = pWriter->aData;\n              pSVar20 = pWriter;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              pcVar3 = pSVar20->zMalloc;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }\n              if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }\n            }\nLAB_00139c80:\n            ppFVar8 = csr.apSegment;\n            if (0 < csr.nSegment) {\n              pFVar15 = *csr.apSegment;\nLAB_00139c92:\n              local_b4 = 0;\n              ppFVar8 = csr.apSegment;\n              do {\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              } while( true );\n            }\n          }\n          if (ppFVar8 != (Fts3SegReader **)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(ppFVar8);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(ppFVar8);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          pcVar3 = csr.aBuffer;\n          if (csr.aBuffer != (char *)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(csr.aBuffer);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(pcVar3);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar5 = true;\n          if (p->nIndex <= local_b0) break;\n        } while( true );\n      }" statement_identifier : (if_statement "if (local_b0 < p->nIndex) {\n        do {\n          pWriter = (SegmentWriter *)0x0;\n          pFVar11 = &csr;\n          for (iVar7 = 0xe; iVar7 != 0; iVar7 = iVar7 + -1) {\n            pFVar11->apSegment = (Fts3SegReader **)0x0;\n            pFVar11 = (Fts3MultiSegReader *)((int)pFVar11 + (uint)bVar17 * -8 + 4);\n          }\n          iMaxLevel._0_4_ = (SegmentWriter *)0x0;\n          iMaxLevel._4_4_ = 0;\n          pFVar11 = &csr;\n          local_b8 = fts3SegReaderCursor(p,local_9c,local_b0,-2,(char *)0x0,0,1,0,&csr);\n          if (local_b8 == 0) {\n            local_b8 = csr.nSegment;\n            if (csr.nSegment != 0) {\n              local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel);\n              uVar6 = iMaxLevel._4_4_;\n              pSVar20 = (SegmentWriter *)iMaxLevel;\n              if (local_b8 == 0) {\n                if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }\n                csr.pFilter = &filter;\n                filter.zTerm = (char *)0x0;\n                filter.nTerm = 0;\n                filter.iCol = 0;\n                filter.flags = 3;\n                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;\n                while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }\n              }\n              goto LAB_00139790;\n            }\n            ppFVar8 = csr.apSegment;\n            if (pWriter != (SegmentWriter *)0x0) goto LAB_0013979c;\n          }\n          else {\nLAB_00139790:\n            if (pWriter != (SegmentWriter *)0x0) {\nLAB_0013979c:\n              pcVar3 = pWriter->aData;\n              pSVar20 = pWriter;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              pcVar3 = pSVar20->zMalloc;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }\n              if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }\n            }\nLAB_00139c80:\n            ppFVar8 = csr.apSegment;\n            if (0 < csr.nSegment) {\n              pFVar15 = *csr.apSegment;\nLAB_00139c92:\n              local_b4 = 0;\n              ppFVar8 = csr.apSegment;\n              do {\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              } while( true );\n            }\n          }\n          if (ppFVar8 != (Fts3SegReader **)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(ppFVar8);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(ppFVar8);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          pcVar3 = csr.aBuffer;\n          if (csr.aBuffer != (char *)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(csr.aBuffer);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(pcVar3);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar5 = true;\n          if (p->nIndex <= local_b0) break;\n        } while( true );\n      }" if (parenthesized_expression "(local_b0 < p->nIndex)" ( (binary_expression "local_b0 < p->nIndex" identifier < (field_expression "p->nIndex" identifier -> field_identifier)) )) (compound_statement "{\n        do {\n          pWriter = (SegmentWriter *)0x0;\n          pFVar11 = &csr;\n          for (iVar7 = 0xe; iVar7 != 0; iVar7 = iVar7 + -1) {\n            pFVar11->apSegment = (Fts3SegReader **)0x0;\n            pFVar11 = (Fts3MultiSegReader *)((int)pFVar11 + (uint)bVar17 * -8 + 4);\n          }\n          iMaxLevel._0_4_ = (SegmentWriter *)0x0;\n          iMaxLevel._4_4_ = 0;\n          pFVar11 = &csr;\n          local_b8 = fts3SegReaderCursor(p,local_9c,local_b0,-2,(char *)0x0,0,1,0,&csr);\n          if (local_b8 == 0) {\n            local_b8 = csr.nSegment;\n            if (csr.nSegment != 0) {\n              local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel);\n              uVar6 = iMaxLevel._4_4_;\n              pSVar20 = (SegmentWriter *)iMaxLevel;\n              if (local_b8 == 0) {\n                if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }\n                csr.pFilter = &filter;\n                filter.zTerm = (char *)0x0;\n                filter.nTerm = 0;\n                filter.iCol = 0;\n                filter.flags = 3;\n                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;\n                while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }\n              }\n              goto LAB_00139790;\n            }\n            ppFVar8 = csr.apSegment;\n            if (pWriter != (SegmentWriter *)0x0) goto LAB_0013979c;\n          }\n          else {\nLAB_00139790:\n            if (pWriter != (SegmentWriter *)0x0) {\nLAB_0013979c:\n              pcVar3 = pWriter->aData;\n              pSVar20 = pWriter;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              pcVar3 = pSVar20->zMalloc;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }\n              if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }\n            }\nLAB_00139c80:\n            ppFVar8 = csr.apSegment;\n            if (0 < csr.nSegment) {\n              pFVar15 = *csr.apSegment;\nLAB_00139c92:\n              local_b4 = 0;\n              ppFVar8 = csr.apSegment;\n              do {\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              } while( true );\n            }\n          }\n          if (ppFVar8 != (Fts3SegReader **)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(ppFVar8);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(ppFVar8);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          pcVar3 = csr.aBuffer;\n          if (csr.aBuffer != (char *)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(csr.aBuffer);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(pcVar3);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar5 = true;\n          if (p->nIndex <= local_b0) break;\n        } while( true );\n      }" { (do_statement "do {\n          pWriter = (SegmentWriter *)0x0;\n          pFVar11 = &csr;\n          for (iVar7 = 0xe; iVar7 != 0; iVar7 = iVar7 + -1) {\n            pFVar11->apSegment = (Fts3SegReader **)0x0;\n            pFVar11 = (Fts3MultiSegReader *)((int)pFVar11 + (uint)bVar17 * -8 + 4);\n          }\n          iMaxLevel._0_4_ = (SegmentWriter *)0x0;\n          iMaxLevel._4_4_ = 0;\n          pFVar11 = &csr;\n          local_b8 = fts3SegReaderCursor(p,local_9c,local_b0,-2,(char *)0x0,0,1,0,&csr);\n          if (local_b8 == 0) {\n            local_b8 = csr.nSegment;\n            if (csr.nSegment != 0) {\n              local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel);\n              uVar6 = iMaxLevel._4_4_;\n              pSVar20 = (SegmentWriter *)iMaxLevel;\n              if (local_b8 == 0) {\n                if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }\n                csr.pFilter = &filter;\n                filter.zTerm = (char *)0x0;\n                filter.nTerm = 0;\n                filter.iCol = 0;\n                filter.flags = 3;\n                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;\n                while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }\n              }\n              goto LAB_00139790;\n            }\n            ppFVar8 = csr.apSegment;\n            if (pWriter != (SegmentWriter *)0x0) goto LAB_0013979c;\n          }\n          else {\nLAB_00139790:\n            if (pWriter != (SegmentWriter *)0x0) {\nLAB_0013979c:\n              pcVar3 = pWriter->aData;\n              pSVar20 = pWriter;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              pcVar3 = pSVar20->zMalloc;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }\n              if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }\n            }\nLAB_00139c80:\n            ppFVar8 = csr.apSegment;\n            if (0 < csr.nSegment) {\n              pFVar15 = *csr.apSegment;\nLAB_00139c92:\n              local_b4 = 0;\n              ppFVar8 = csr.apSegment;\n              do {\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              } while( true );\n            }\n          }\n          if (ppFVar8 != (Fts3SegReader **)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(ppFVar8);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(ppFVar8);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          pcVar3 = csr.aBuffer;\n          if (csr.aBuffer != (char *)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(csr.aBuffer);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(pcVar3);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar5 = true;\n          if (p->nIndex <= local_b0) break;\n        } while( true );" do (compound_statement "{\n          pWriter = (SegmentWriter *)0x0;\n          pFVar11 = &csr;\n          for (iVar7 = 0xe; iVar7 != 0; iVar7 = iVar7 + -1) {\n            pFVar11->apSegment = (Fts3SegReader **)0x0;\n            pFVar11 = (Fts3MultiSegReader *)((int)pFVar11 + (uint)bVar17 * -8 + 4);\n          }\n          iMaxLevel._0_4_ = (SegmentWriter *)0x0;\n          iMaxLevel._4_4_ = 0;\n          pFVar11 = &csr;\n          local_b8 = fts3SegReaderCursor(p,local_9c,local_b0,-2,(char *)0x0,0,1,0,&csr);\n          if (local_b8 == 0) {\n            local_b8 = csr.nSegment;\n            if (csr.nSegment != 0) {\n              local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel);\n              uVar6 = iMaxLevel._4_4_;\n              pSVar20 = (SegmentWriter *)iMaxLevel;\n              if (local_b8 == 0) {\n                if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }\n                csr.pFilter = &filter;\n                filter.zTerm = (char *)0x0;\n                filter.nTerm = 0;\n                filter.iCol = 0;\n                filter.flags = 3;\n                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;\n                while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }\n              }\n              goto LAB_00139790;\n            }\n            ppFVar8 = csr.apSegment;\n            if (pWriter != (SegmentWriter *)0x0) goto LAB_0013979c;\n          }\n          else {\nLAB_00139790:\n            if (pWriter != (SegmentWriter *)0x0) {\nLAB_0013979c:\n              pcVar3 = pWriter->aData;\n              pSVar20 = pWriter;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              pcVar3 = pSVar20->zMalloc;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }\n              if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }\n            }\nLAB_00139c80:\n            ppFVar8 = csr.apSegment;\n            if (0 < csr.nSegment) {\n              pFVar15 = *csr.apSegment;\nLAB_00139c92:\n              local_b4 = 0;\n              ppFVar8 = csr.apSegment;\n              do {\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              } while( true );\n            }\n          }\n          if (ppFVar8 != (Fts3SegReader **)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(ppFVar8);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(ppFVar8);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          pcVar3 = csr.aBuffer;\n          if (csr.aBuffer != (char *)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(csr.aBuffer);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(pcVar3);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar5 = true;\n          if (p->nIndex <= local_b0) break;\n        }" { (expression_statement "pWriter = (SegmentWriter *)0x0;" (assignment_expression "pWriter = (SegmentWriter *)0x0" identifier = (cast_expression "(SegmentWriter *)0x0" ( (type_descriptor "SegmentWriter *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pFVar11 = &csr;" (assignment_expression "pFVar11 = &csr" identifier = (pointer_expression "&csr" & identifier)) ;) (for_statement "for (iVar7 = 0xe; iVar7 != 0; iVar7 = iVar7 + -1) {\n            pFVar11->apSegment = (Fts3SegReader **)0x0;\n            pFVar11 = (Fts3MultiSegReader *)((int)pFVar11 + (uint)bVar17 * -8 + 4);\n          }" for ( (assignment_expression "iVar7 = 0xe" identifier = number_literal) ; (binary_expression "iVar7 != 0" identifier != number_literal) ; (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ) (compound_statement "{\n            pFVar11->apSegment = (Fts3SegReader **)0x0;\n            pFVar11 = (Fts3MultiSegReader *)((int)pFVar11 + (uint)bVar17 * -8 + 4);\n          }" { (expression_statement "pFVar11->apSegment = (Fts3SegReader **)0x0;" (assignment_expression "pFVar11->apSegment = (Fts3SegReader **)0x0" (field_expression "pFVar11->apSegment" identifier -> field_identifier) = (cast_expression "(Fts3SegReader **)0x0" ( (type_descriptor "Fts3SegReader **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "pFVar11 = (Fts3MultiSegReader *)((int)pFVar11 + (uint)bVar17 * -8 + 4);" (assignment_expression "pFVar11 = (Fts3MultiSegReader *)((int)pFVar11 + (uint)bVar17 * -8 + 4)" identifier = (cast_expression "(Fts3MultiSegReader *)((int)pFVar11 + (uint)bVar17 * -8 + 4)" ( (type_descriptor "Fts3MultiSegReader *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pFVar11 + (uint)bVar17 * -8 + 4)" ( (binary_expression "(int)pFVar11 + (uint)bVar17 * -8 + 4" (binary_expression "(int)pFVar11 + (uint)bVar17 * -8" (cast_expression "(int)pFVar11" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar17 * -8" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) })) (expression_statement "iMaxLevel._0_4_ = (SegmentWriter *)0x0;" (assignment_expression "iMaxLevel._0_4_ = (SegmentWriter *)0x0" (field_expression "iMaxLevel._0_4_" identifier . field_identifier) = (cast_expression "(SegmentWriter *)0x0" ( (type_descriptor "SegmentWriter *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iMaxLevel._4_4_ = 0;" (assignment_expression "iMaxLevel._4_4_ = 0" (field_expression "iMaxLevel._4_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "pFVar11 = &csr;" (assignment_expression "pFVar11 = &csr" identifier = (pointer_expression "&csr" & identifier)) ;) (expression_statement "local_b8 = fts3SegReaderCursor(p,local_9c,local_b0,-2,(char *)0x0,0,1,0,&csr);" (assignment_expression "local_b8 = fts3SegReaderCursor(p,local_9c,local_b0,-2,(char *)0x0,0,1,0,&csr)" identifier = (call_expression "fts3SegReaderCursor(p,local_9c,local_b0,-2,(char *)0x0,0,1,0,&csr)" identifier (argument_list "(p,local_9c,local_b0,-2,(char *)0x0,0,1,0,&csr)" ( identifier , identifier , identifier , number_literal , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal , number_literal , number_literal , (pointer_expression "&csr" & identifier) )))) ;) (if_statement "if (local_b8 == 0) {\n            local_b8 = csr.nSegment;\n            if (csr.nSegment != 0) {\n              local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel);\n              uVar6 = iMaxLevel._4_4_;\n              pSVar20 = (SegmentWriter *)iMaxLevel;\n              if (local_b8 == 0) {\n                if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }\n                csr.pFilter = &filter;\n                filter.zTerm = (char *)0x0;\n                filter.nTerm = 0;\n                filter.iCol = 0;\n                filter.flags = 3;\n                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;\n                while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }\n              }\n              goto LAB_00139790;\n            }\n            ppFVar8 = csr.apSegment;\n            if (pWriter != (SegmentWriter *)0x0) goto LAB_0013979c;\n          }\n          else {\nLAB_00139790:\n            if (pWriter != (SegmentWriter *)0x0) {\nLAB_0013979c:\n              pcVar3 = pWriter->aData;\n              pSVar20 = pWriter;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              pcVar3 = pSVar20->zMalloc;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }\n              if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }\n            }\nLAB_00139c80:\n            ppFVar8 = csr.apSegment;\n            if (0 < csr.nSegment) {\n              pFVar15 = *csr.apSegment;\nLAB_00139c92:\n              local_b4 = 0;\n              ppFVar8 = csr.apSegment;\n              do {\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              } while( true );\n            }\n          }" if (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) (compound_statement "{\n            local_b8 = csr.nSegment;\n            if (csr.nSegment != 0) {\n              local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel);\n              uVar6 = iMaxLevel._4_4_;\n              pSVar20 = (SegmentWriter *)iMaxLevel;\n              if (local_b8 == 0) {\n                if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }\n                csr.pFilter = &filter;\n                filter.zTerm = (char *)0x0;\n                filter.nTerm = 0;\n                filter.iCol = 0;\n                filter.flags = 3;\n                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;\n                while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }\n              }\n              goto LAB_00139790;\n            }\n            ppFVar8 = csr.apSegment;\n            if (pWriter != (SegmentWriter *)0x0) goto LAB_0013979c;\n          }" { (expression_statement "local_b8 = csr.nSegment;" (assignment_expression "local_b8 = csr.nSegment" identifier = (field_expression "csr.nSegment" identifier . field_identifier)) ;) (if_statement "if (csr.nSegment != 0) {\n              local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel);\n              uVar6 = iMaxLevel._4_4_;\n              pSVar20 = (SegmentWriter *)iMaxLevel;\n              if (local_b8 == 0) {\n                if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }\n                csr.pFilter = &filter;\n                filter.zTerm = (char *)0x0;\n                filter.nTerm = 0;\n                filter.iCol = 0;\n                filter.flags = 3;\n                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;\n                while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }\n              }\n              goto LAB_00139790;\n            }" if (parenthesized_expression "(csr.nSegment != 0)" ( (binary_expression "csr.nSegment != 0" (field_expression "csr.nSegment" identifier . field_identifier) != number_literal) )) (compound_statement "{\n              local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel);\n              uVar6 = iMaxLevel._4_4_;\n              pSVar20 = (SegmentWriter *)iMaxLevel;\n              if (local_b8 == 0) {\n                if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }\n                csr.pFilter = &filter;\n                filter.zTerm = (char *)0x0;\n                filter.nTerm = 0;\n                filter.iCol = 0;\n                filter.flags = 3;\n                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;\n                while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }\n              }\n              goto LAB_00139790;\n            }" { (expression_statement "local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel);" (assignment_expression "local_b8 = fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel)" identifier = (call_expression "fts3SegmentMaxLevel(p,local_9c,local_b0,&iMaxLevel)" identifier (argument_list "(p,local_9c,local_b0,&iMaxLevel)" ( identifier , identifier , identifier , (pointer_expression "&iMaxLevel" & identifier) )))) ;) (expression_statement "uVar6 = iMaxLevel._4_4_;" (assignment_expression "uVar6 = iMaxLevel._4_4_" identifier = (field_expression "iMaxLevel._4_4_" identifier . field_identifier)) ;) (expression_statement "pSVar20 = (SegmentWriter *)iMaxLevel;" (assignment_expression "pSVar20 = (SegmentWriter *)iMaxLevel" identifier = (cast_expression "(SegmentWriter *)iMaxLevel" ( (type_descriptor "SegmentWriter *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (local_b8 == 0) {\n                if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }\n                csr.pFilter = &filter;\n                filter.zTerm = (char *)0x0;\n                filter.nTerm = 0;\n                filter.iCol = 0;\n                filter.flags = 3;\n                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;\n                while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }\n              }" if (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) (compound_statement "{\n                if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }\n                csr.pFilter = &filter;\n                filter.zTerm = (char *)0x0;\n                filter.nTerm = 0;\n                filter.iCol = 0;\n                filter.flags = 3;\n                local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;\n                while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }\n              }" { (if_statement "if ((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)) {\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }" if (parenthesized_expression "((csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0))" ( (binary_expression "(csr.nSegment == 1) &&\n                   (pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)" (parenthesized_expression "(csr.nSegment == 1)" ( (binary_expression "csr.nSegment == 1" (field_expression "csr.nSegment" identifier . field_identifier) == number_literal) )) && (parenthesized_expression "(pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0)" ( (comma_expression "pFVar15 = *csr.apSegment, pFVar15->ppNextElem == (Fts3HashElem **)0x0" (assignment_expression "pFVar15 = *csr.apSegment" identifier = (pointer_expression "*csr.apSegment" * (field_expression "csr.apSegment" identifier . field_identifier))) , (binary_expression "pFVar15->ppNextElem == (Fts3HashElem **)0x0" (field_expression "pFVar15->ppNextElem" identifier -> field_identifier) == (cast_expression "(Fts3HashElem **)0x0" ( (type_descriptor "Fts3HashElem **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal))) ))) )) (compound_statement "{\n                  local_b8 = 0x65;\n                  if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;\n                  goto LAB_0013979c;\n                }" { (expression_statement "local_b8 = 0x65;" (assignment_expression "local_b8 = 0x65" identifier = number_literal) ;) (if_statement "if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c92;" if (parenthesized_expression "(pWriter == (SegmentWriter *)0x0)" ( (binary_expression "pWriter == (SegmentWriter *)0x0" identifier == (cast_expression "(SegmentWriter *)0x0" ( (type_descriptor "SegmentWriter *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00139c92;" goto statement_identifier ;)) (goto_statement "goto LAB_0013979c;" goto statement_identifier ;) })) (expression_statement "csr.pFilter = &filter;" (assignment_expression "csr.pFilter = &filter" (field_expression "csr.pFilter" identifier . field_identifier) = (pointer_expression "&filter" & identifier)) ;) (expression_statement "filter.zTerm = (char *)0x0;" (assignment_expression "filter.zTerm = (char *)0x0" (field_expression "filter.zTerm" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "filter.nTerm = 0;" (assignment_expression "filter.nTerm = 0" (field_expression "filter.nTerm" identifier . field_identifier) = number_literal) ;) (expression_statement "filter.iCol = 0;" (assignment_expression "filter.iCol = 0" (field_expression "filter.iCol" identifier . field_identifier) = number_literal) ;) (expression_statement "filter.flags = 3;" (assignment_expression "filter.flags = 3" (field_expression "filter.flags" identifier . field_identifier) = number_literal) ;) (expression_statement "local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)\n                ;" (assignment_expression "local_b8 = fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)" identifier = (call_expression "fts3SegReaderStart((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)" identifier (argument_list "((Fts3Table *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)" ( (cast_expression "(Fts3Table *)0x0" ( (type_descriptor "Fts3Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , identifier , (cast_expression "(int)zTerm" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (while_statement "while (local_b8 == 0) {\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }" while (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) (compound_statement "{\n                  zTerm = (char *)0x139706;\n                  local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);\n                  if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }\n                  in_stack_ffffff2c = (char *)csr.nDoclist;\n                  local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);\n                }" { (expression_statement "zTerm = (char *)0x139706;" (assignment_expression "zTerm = (char *)0x139706" identifier = (cast_expression "(char *)0x139706" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38);" (assignment_expression "local_b8 = sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38)" identifier = (call_expression "sqlite3Fts3SegReaderStep(in_stack_ffffff34,in_stack_ffffff38)" identifier (argument_list "(in_stack_ffffff34,in_stack_ffffff38)" ( identifier , identifier )))) ;) (if_statement "if (local_b8 != 100) {\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }" if (parenthesized_expression "(local_b8 != 100)" ( (binary_expression "local_b8 != 100" identifier != number_literal) )) (compound_statement "{\n                    if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }\n                    break;\n                  }" { (if_statement "if ((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)) {\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }" if (parenthesized_expression "((local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0))" ( (binary_expression "(local_b8 == 0) &&\n                       (in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)" (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) && (parenthesized_expression "(in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0)" ( (comma_expression "in_stack_ffffff2c = (char *)csr.nSegment,\n                       local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0" (assignment_expression "in_stack_ffffff2c = (char *)csr.nSegment" identifier = (cast_expression "(char *)csr.nSegment" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "csr.nSegment" identifier . field_identifier))) , (comma_expression "local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  ), local_b8 == 0" (assignment_expression "local_b8 = fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  )" identifier = (call_expression "fts3DeleteSegdir(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  )" identifier (argument_list "(p,local_9c,local_b0,-2,csr.apSegment,csr.nSegment\n                                                  )" ( identifier , identifier , identifier , number_literal , (field_expression "csr.apSegment" identifier . field_identifier) , (field_expression "csr.nSegment" identifier . field_identifier) )))) , (binary_expression "local_b8 == 0" identifier == number_literal))) ))) )) (compound_statement "{\n                      if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;\n                      in_stack_ffffff2c = (char *)0x0;\n                      local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);\n                      if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }\n                    }" { (if_statement "if (pWriter == (SegmentWriter *)0x0) goto LAB_00139c80;" if (parenthesized_expression "(pWriter == (SegmentWriter *)0x0)" ( (binary_expression "pWriter == (SegmentWriter *)0x0" identifier == (cast_expression "(SegmentWriter *)0x0" ( (type_descriptor "SegmentWriter *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00139c80;" goto statement_identifier ;)) (expression_statement "in_stack_ffffff2c = (char *)0x0;" (assignment_expression "in_stack_ffffff2c = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm);" (assignment_expression "local_b8 = fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm)" identifier = (call_expression "fts3SegWriterFlush(p,pSVar20,(ulonglong)uVar6,(int)zTerm)" identifier (argument_list "(p,pSVar20,(ulonglong)uVar6,(int)zTerm)" ( identifier , identifier , (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) , (cast_expression "(int)zTerm" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (if_statement "if ((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)) {\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }" if (parenthesized_expression "((local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0))" ( (binary_expression "(local_b8 == 0) &&\n                         ((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)" (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) && (parenthesized_expression "((SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0)" ( (binary_expression "(SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))) !=\n                          (int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0" (parenthesized_expression "(SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)))" ( (binary_expression "SBORROW4(uVar6,iMaxLevel._4_4_) !=\n                          SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))" (call_expression "SBORROW4(uVar6,iMaxLevel._4_4_)" identifier (argument_list "(uVar6,iMaxLevel._4_4_)" ( identifier , (field_expression "iMaxLevel._4_4_" identifier . field_identifier) ))) != (call_expression "SBORROW4(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))" identifier (argument_list "(uVar6 - iMaxLevel._4_4_,\n                                   (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))" ( (binary_expression "uVar6 - iMaxLevel._4_4_" identifier - (field_expression "iMaxLevel._4_4_" identifier . field_identifier)) , (call_expression "(uint)(pSVar20 < (SegmentWriter *)iMaxLevel)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pSVar20 < (SegmentWriter *)iMaxLevel)" ( (binary_expression "pSVar20 < (SegmentWriter *)iMaxLevel" identifier < (cast_expression "(SegmentWriter *)iMaxLevel" ( (type_descriptor "SegmentWriter *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) )))) )) != (binary_expression "(int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)) < 0" (cast_expression "(int)((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel))" ( (binary_expression "(uVar6 - iMaxLevel._4_4_) -\n                               (uint)(pSVar20 < (SegmentWriter *)iMaxLevel)" (parenthesized_expression "(uVar6 - iMaxLevel._4_4_)" ( (binary_expression "uVar6 - iMaxLevel._4_4_" identifier - (field_expression "iMaxLevel._4_4_" identifier . field_identifier)) )) - (call_expression "(uint)(pSVar20 < (SegmentWriter *)iMaxLevel)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pSVar20 < (SegmentWriter *)iMaxLevel)" ( (binary_expression "pSVar20 < (SegmentWriter *)iMaxLevel" identifier < (cast_expression "(SegmentWriter *)iMaxLevel" ( (type_descriptor "SegmentWriter *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )))) ))) < number_literal)) ))) )) (compound_statement "{\n                        local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));\n                      }" { (expression_statement "local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c));" (assignment_expression "local_b8 = fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c))" identifier = (call_expression "fts3PromoteSegments(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c))" identifier (argument_list "(p,pWriter->nLeafData,\n                                                       CONCAT44(zTerm,in_stack_ffffff2c))" ( identifier , (field_expression "pWriter->nLeafData" identifier -> field_identifier) , (call_expression "CONCAT44(zTerm,in_stack_ffffff2c)" identifier (argument_list "(zTerm,in_stack_ffffff2c)" ( identifier , identifier ))) )))) ;) })) })) (break_statement "break;" break ;) })) (expression_statement "in_stack_ffffff2c = (char *)csr.nDoclist;" (assignment_expression "in_stack_ffffff2c = (char *)csr.nDoclist" identifier = (cast_expression "(char *)csr.nDoclist" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "csr.nDoclist" identifier . field_identifier))) ;) (expression_statement "local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20);" (assignment_expression "local_b8 = fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20)" identifier = (call_expression "fts3SegWriterAdd((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20)" identifier (argument_list "((Fts3Table *)csr.nTerm,(SegmentWriter **)csr.aDoclist,\n                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,\n                                              (char *)in_stack_ffffff38,(int)pSVar20)" ( (cast_expression "(Fts3Table *)csr.nTerm" ( (type_descriptor "Fts3Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "csr.nTerm" identifier . field_identifier)) , (cast_expression "(SegmentWriter **)csr.aDoclist" ( (type_descriptor "SegmentWriter **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "csr.aDoclist" identifier . field_identifier)) , (field_expression "csr.nDoclist" identifier . field_identifier) , identifier , (cast_expression "(int)in_stack_ffffff34" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(char *)in_stack_ffffff38" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int)pSVar20" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) })) })) (goto_statement "goto LAB_00139790;" goto statement_identifier ;) })) (expression_statement "ppFVar8 = csr.apSegment;" (assignment_expression "ppFVar8 = csr.apSegment" identifier = (field_expression "csr.apSegment" identifier . field_identifier)) ;) (if_statement "if (pWriter != (SegmentWriter *)0x0) goto LAB_0013979c;" if (parenthesized_expression "(pWriter != (SegmentWriter *)0x0)" ( (binary_expression "pWriter != (SegmentWriter *)0x0" identifier != (cast_expression "(SegmentWriter *)0x0" ( (type_descriptor "SegmentWriter *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0013979c;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_00139790:\n            if (pWriter != (SegmentWriter *)0x0) {\nLAB_0013979c:\n              pcVar3 = pWriter->aData;\n              pSVar20 = pWriter;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              pcVar3 = pSVar20->zMalloc;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }\n              if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }\n            }\nLAB_00139c80:\n            ppFVar8 = csr.apSegment;\n            if (0 < csr.nSegment) {\n              pFVar15 = *csr.apSegment;\nLAB_00139c92:\n              local_b4 = 0;\n              ppFVar8 = csr.apSegment;\n              do {\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              } while( true );\n            }\n          }" else (compound_statement "{\nLAB_00139790:\n            if (pWriter != (SegmentWriter *)0x0) {\nLAB_0013979c:\n              pcVar3 = pWriter->aData;\n              pSVar20 = pWriter;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              pcVar3 = pSVar20->zMalloc;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }\n              if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }\n            }\nLAB_00139c80:\n            ppFVar8 = csr.apSegment;\n            if (0 < csr.nSegment) {\n              pFVar15 = *csr.apSegment;\nLAB_00139c92:\n              local_b4 = 0;\n              ppFVar8 = csr.apSegment;\n              do {\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              } while( true );\n            }\n          }" { (labeled_statement "LAB_00139790:\n            if (pWriter != (SegmentWriter *)0x0) {\nLAB_0013979c:\n              pcVar3 = pWriter->aData;\n              pSVar20 = pWriter;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              pcVar3 = pSVar20->zMalloc;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }\n              if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }\n            }" statement_identifier : (if_statement "if (pWriter != (SegmentWriter *)0x0) {\nLAB_0013979c:\n              pcVar3 = pWriter->aData;\n              pSVar20 = pWriter;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              pcVar3 = pSVar20->zMalloc;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }\n              if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }\n            }" if (parenthesized_expression "(pWriter != (SegmentWriter *)0x0)" ( (binary_expression "pWriter != (SegmentWriter *)0x0" identifier != (cast_expression "(SegmentWriter *)0x0" ( (type_descriptor "SegmentWriter *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0013979c:\n              pcVar3 = pWriter->aData;\n              pSVar20 = pWriter;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              pcVar3 = pSVar20->zMalloc;\n              if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }\n              if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }\n              if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }\n            }" { (labeled_statement "LAB_0013979c:\n              pcVar3 = pWriter->aData;" statement_identifier : (expression_statement "pcVar3 = pWriter->aData;" (assignment_expression "pcVar3 = pWriter->aData" identifier = (field_expression "pWriter->aData" identifier -> field_identifier)) ;)) (expression_statement "pSVar20 = pWriter;" (assignment_expression "pSVar20 = pWriter" identifier = identifier) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }" { (if_statement "if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }" { (expression_statement "(*sqlite3Config.m.xFree)(pcVar3);" (call_expression "(*sqlite3Config.m.xFree)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) }) (else_clause "else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }" else (compound_statement "{\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }" { (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pcVar3);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pcVar3)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pcVar3);" (call_expression "(*sqlite3Config.m.xFree)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) }))) })) (expression_statement "pcVar3 = pSVar20->zMalloc;" (assignment_expression "pcVar3 = pSVar20->zMalloc" identifier = (field_expression "pSVar20->zMalloc" identifier -> field_identifier)) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }\n              }" { (if_statement "if (sqlite3Config.bMemstat == 0) {\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }\n                else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                }" { (expression_statement "(*sqlite3Config.m.xFree)(pcVar3);" (call_expression "(*sqlite3Config.m.xFree)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) }) (else_clause "else {\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }" else (compound_statement "{\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }\n                  iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                  (*sqlite3Config.m.xFree)(pcVar3);\n                  if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }\n                }" { (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                  }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pcVar3);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pcVar3)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pcVar3);" (call_expression "(*sqlite3Config.m.xFree)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                  }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) }))) })) (if_statement "if (pSVar20->pTree != (SegmentNode *)0x0) {\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }" if (parenthesized_expression "(pSVar20->pTree != (SegmentNode *)0x0)" ( (binary_expression "pSVar20->pTree != (SegmentNode *)0x0" (field_expression "pSVar20->pTree" identifier -> field_identifier) != (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                pSVar14 = pSVar20->pTree->pLeftmost;\n                if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }\nLAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);\n              }" { (expression_statement "pSVar14 = pSVar20->pTree->pLeftmost;" (assignment_expression "pSVar14 = pSVar20->pTree->pLeftmost" identifier = (field_expression "pSVar20->pTree->pLeftmost" (field_expression "pSVar20->pTree" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (pSVar14->pParent != (SegmentNode *)0x0) {\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }" if (parenthesized_expression "(pSVar14->pParent != (SegmentNode *)0x0)" ( (binary_expression "pSVar14->pParent != (SegmentNode *)0x0" (field_expression "pSVar14->pParent" identifier -> field_identifier) != (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  pSVar13 = pSVar14->pParent->pLeftmost;\n                  if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }\nLAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);\n                }" { (expression_statement "pSVar13 = pSVar14->pParent->pLeftmost;" (assignment_expression "pSVar13 = pSVar14->pParent->pLeftmost" identifier = (field_expression "pSVar14->pParent->pLeftmost" (field_expression "pSVar14->pParent" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (pSVar13->pParent != (SegmentNode *)0x0) {\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }" if (parenthesized_expression "(pSVar13->pParent != (SegmentNode *)0x0)" ( (binary_expression "pSVar13->pParent != (SegmentNode *)0x0" (field_expression "pSVar13->pParent" identifier -> field_identifier) != (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    pSVar9 = pSVar13->pParent->pLeftmost;\n                    if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }\nLAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);\n                  }" { (expression_statement "pSVar9 = pSVar13->pParent->pLeftmost;" (assignment_expression "pSVar9 = pSVar13->pParent->pLeftmost" identifier = (field_expression "pSVar13->pParent->pLeftmost" (field_expression "pSVar13->pParent" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (pSVar9->pParent != (SegmentNode *)0x0) {\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }" if (parenthesized_expression "(pSVar9->pParent != (SegmentNode *)0x0)" ( (binary_expression "pSVar9->pParent != (SegmentNode *)0x0" (field_expression "pSVar9->pParent" identifier -> field_identifier) != (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      pSVar16 = pSVar9->pParent->pLeftmost;\n                      if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }\nLAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);\n                    }" { (expression_statement "pSVar16 = pSVar9->pParent->pLeftmost;" (assignment_expression "pSVar16 = pSVar9->pParent->pLeftmost" identifier = (field_expression "pSVar9->pParent->pLeftmost" (field_expression "pSVar9->pParent" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (pSVar16->pParent != (SegmentNode *)0x0) {\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }" if (parenthesized_expression "(pSVar16->pParent != (SegmentNode *)0x0)" ( (binary_expression "pSVar16->pParent != (SegmentNode *)0x0" (field_expression "pSVar16->pParent" identifier -> field_identifier) != (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        pSVar10 = pSVar16->pParent->pLeftmost;\n                        if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }\n                        do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);\n                      }" { (expression_statement "pSVar10 = pSVar16->pParent->pLeftmost;" (assignment_expression "pSVar10 = pSVar16->pParent->pLeftmost" identifier = (field_expression "pSVar16->pParent->pLeftmost" (field_expression "pSVar16->pParent" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (pSVar10->pParent != (SegmentNode *)0x0) {\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }" if (parenthesized_expression "(pSVar10->pParent != (SegmentNode *)0x0)" ( (binary_expression "pSVar10->pParent != (SegmentNode *)0x0" (field_expression "pSVar10->pParent" identifier -> field_identifier) != (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                          pSVar12 = pSVar10->pParent->pLeftmost;\n                          zTerm = (char *)0x1398d5;\n                          fts3NodeFree(pSVar12->pParent);\n                          do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);\n                        }" { (expression_statement "pSVar12 = pSVar10->pParent->pLeftmost;" (assignment_expression "pSVar12 = pSVar10->pParent->pLeftmost" identifier = (field_expression "pSVar10->pParent->pLeftmost" (field_expression "pSVar10->pParent" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "zTerm = (char *)0x1398d5;" (assignment_expression "zTerm = (char *)0x1398d5" identifier = (cast_expression "(char *)0x1398d5" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "fts3NodeFree(pSVar12->pParent);" (call_expression "fts3NodeFree(pSVar12->pParent)" identifier (argument_list "(pSVar12->pParent)" ( (field_expression "pSVar12->pParent" identifier -> field_identifier) ))) ;) (do_statement "do {\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          } while (pSVar4 != (SegmentNode *)0x0);" do (compound_statement "{\n                            pSVar4 = pSVar12->pRight;\n                            if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }\n                            sqlite3_free(pSVar12->zMalloc);\n                            sqlite3_free(pSVar12);\n                            pSVar12 = pSVar4;\n                          }" { (expression_statement "pSVar4 = pSVar12->pRight;" (assignment_expression "pSVar4 = pSVar12->pRight" identifier = (field_expression "pSVar12->pRight" identifier -> field_identifier)) ;) (if_statement "if ((SegmentNode *)pSVar12->aData != pSVar12 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }" if (parenthesized_expression "((SegmentNode *)pSVar12->aData != pSVar12 + 1)" ( (binary_expression "(SegmentNode *)pSVar12->aData != pSVar12 + 1" (cast_expression "(SegmentNode *)pSVar12->aData" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pSVar12->aData" identifier -> field_identifier)) != (binary_expression "pSVar12 + 1" identifier + number_literal)) )) (compound_statement "{\n                              sqlite3_free((SegmentNode *)pSVar12->aData);\n                            }" { (expression_statement "sqlite3_free((SegmentNode *)pSVar12->aData);" (call_expression "sqlite3_free((SegmentNode *)pSVar12->aData)" identifier (argument_list "((SegmentNode *)pSVar12->aData)" ( (cast_expression "(SegmentNode *)pSVar12->aData" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pSVar12->aData" identifier -> field_identifier)) ))) ;) })) (expression_statement "sqlite3_free(pSVar12->zMalloc);" (call_expression "sqlite3_free(pSVar12->zMalloc)" identifier (argument_list "(pSVar12->zMalloc)" ( (field_expression "pSVar12->zMalloc" identifier -> field_identifier) ))) ;) (expression_statement "sqlite3_free(pSVar12);" (call_expression "sqlite3_free(pSVar12)" identifier (argument_list "(pSVar12)" ( identifier ))) ;) (expression_statement "pSVar12 = pSVar4;" (assignment_expression "pSVar12 = pSVar4" identifier = identifier) ;) }) while (parenthesized_expression "(pSVar4 != (SegmentNode *)0x0)" ( (binary_expression "pSVar4 != (SegmentNode *)0x0" identifier != (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (do_statement "do {\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        } while (pSVar12 != (SegmentNode *)0x0);" do (compound_statement "{\n                          while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\nLAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar10 = pSVar12;\n                        }" { (while_statement "while( true ) {\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                            pSVar12 = pSVar10->pRight;\n                            if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }\n                            pcVar3 = pSVar10->zMalloc;\n                            if (pcVar3 == (char *)0x0) break;\n                            if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }\n                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;\n                            (*sqlite3Config.m.xFree)(pSVar10);\nLAB_0013a552:\n                            pSVar10 = pSVar12;\n                            if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;\n                          }" { (expression_statement "pSVar12 = pSVar10->pRight;" (assignment_expression "pSVar12 = pSVar10->pRight" identifier = (field_expression "pSVar10->pRight" identifier -> field_identifier)) ;) (if_statement "if ((SegmentNode *)pSVar10->aData != pSVar10 + 1) {\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }" if (parenthesized_expression "((SegmentNode *)pSVar10->aData != pSVar10 + 1)" ( (binary_expression "(SegmentNode *)pSVar10->aData != pSVar10 + 1" (cast_expression "(SegmentNode *)pSVar10->aData" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pSVar10->aData" identifier -> field_identifier)) != (binary_expression "pSVar10 + 1" identifier + number_literal)) )) (compound_statement "{\n                              sqlite3_free((SegmentNode *)pSVar10->aData);\n                            }" { (expression_statement "sqlite3_free((SegmentNode *)pSVar10->aData);" (call_expression "sqlite3_free((SegmentNode *)pSVar10->aData)" identifier (argument_list "((SegmentNode *)pSVar10->aData)" ( (cast_expression "(SegmentNode *)pSVar10->aData" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pSVar10->aData" identifier -> field_identifier)) ))) ;) })) (expression_statement "pcVar3 = pSVar10->zMalloc;" (assignment_expression "pcVar3 = pSVar10->zMalloc" identifier = (field_expression "pSVar10->zMalloc" identifier -> field_identifier)) ;) (if_statement "if (pcVar3 == (char *)0x0) break;" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (if_statement "if (sqlite3Config.bMemstat == 0) {\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                              (*sqlite3Config.m.xFree)(pcVar3);\n                              break;\n                            }" { (expression_statement "(*sqlite3Config.m.xFree)(pcVar3);" (call_expression "(*sqlite3Config.m.xFree)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) (break_statement "break;" break ;) })) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pcVar3);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pcVar3)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pcVar3);" (call_expression "(*sqlite3Config.m.xFree)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                              break;\n                            }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) (break_statement "break;" break ;) })) (if_statement "if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;" if (parenthesized_expression "(sqlite3Config.bMemstat != 0)" ( (binary_expression "sqlite3Config.bMemstat != 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) != number_literal) )) (goto_statement "goto LAB_0013a46f;" goto statement_identifier ;)) (expression_statement "(*sqlite3Config.m.xFree)(pSVar10);" (call_expression "(*sqlite3Config.m.xFree)(pSVar10)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar10)" ( identifier ))) ;) (labeled_statement "LAB_0013a552:\n                            pSVar10 = pSVar12;" statement_identifier : (expression_statement "pSVar10 = pSVar12;" (assignment_expression "pSVar10 = pSVar12" identifier = identifier) ;)) (if_statement "if (pSVar12 == (SegmentNode *)0x0) goto LAB_0013a5ca;" if (parenthesized_expression "(pSVar12 == (SegmentNode *)0x0)" ( (binary_expression "pSVar12 == (SegmentNode *)0x0" identifier == (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0013a5ca;" goto statement_identifier ;)) })) (if_statement "if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                            (*sqlite3Config.m.xFree)(pSVar10);\n                            goto LAB_0013a552;\n                          }" { (expression_statement "(*sqlite3Config.m.xFree)(pSVar10);" (call_expression "(*sqlite3Config.m.xFree)(pSVar10)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar10)" ( identifier ))) ;) (goto_statement "goto LAB_0013a552;" goto statement_identifier ;) })) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (labeled_statement "LAB_0013a46f:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);" statement_identifier : (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pSVar10);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pSVar10)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pSVar10)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar10)" ( identifier )))) ;)) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pSVar10);" (call_expression "(*sqlite3Config.m.xFree)(pSVar10)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar10)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "pSVar10 = pSVar12;" (assignment_expression "pSVar10 = pSVar12" identifier = identifier) ;) }) while (parenthesized_expression "(pSVar12 != (SegmentNode *)0x0)" ( (binary_expression "pSVar12 != (SegmentNode *)0x0" identifier != (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (labeled_statement "LAB_0013a5ca:\n                      do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);" statement_identifier : (do_statement "do {\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      } while (pSVar10 != (SegmentNode *)0x0);" do (compound_statement "{\n                        pSVar10 = pSVar16->pRight;\n                        pSVar12 = (SegmentNode *)pSVar16->aData;\n                        if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }\n                        pcVar3 = pSVar16->zMalloc;\n                        if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }\nLAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }\n                        (*sqlite3Config.m.xFree)(pSVar16);\nLAB_0013a6d2:\n                        pSVar16 = pSVar10;\n                      }" { (expression_statement "pSVar10 = pSVar16->pRight;" (assignment_expression "pSVar10 = pSVar16->pRight" identifier = (field_expression "pSVar16->pRight" identifier -> field_identifier)) ;) (expression_statement "pSVar12 = (SegmentNode *)pSVar16->aData;" (assignment_expression "pSVar12 = (SegmentNode *)pSVar16->aData" identifier = (cast_expression "(SegmentNode *)pSVar16->aData" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pSVar16->aData" identifier -> field_identifier))) ;) (if_statement "if ((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }" if (parenthesized_expression "((pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0))" ( (binary_expression "(pSVar12 != pSVar16 + 1) && (pSVar12 != (SegmentNode *)0x0)" (parenthesized_expression "(pSVar12 != pSVar16 + 1)" ( (binary_expression "pSVar12 != pSVar16 + 1" identifier != (binary_expression "pSVar16 + 1" identifier + number_literal)) )) && (parenthesized_expression "(pSVar12 != (SegmentNode *)0x0)" ( (binary_expression "pSVar12 != (SegmentNode *)0x0" identifier != (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }\n                        }" { (if_statement "if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }\n                          else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                          }" { (expression_statement "(*sqlite3Config.m.xFree)(pSVar12);" (call_expression "(*sqlite3Config.m.xFree)(pSVar12)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar12)" ( identifier ))) ;) }) (else_clause "else {\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }" else (compound_statement "{\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }\n                            iVar7 = (*sqlite3Config.m.xSize)(pSVar12);\n                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                            (*sqlite3Config.m.xFree)(pSVar12);\n                            if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }\n                          }" { (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                            }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pSVar12);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pSVar12)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pSVar12)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar12)" ( identifier )))) ;) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pSVar12);" (call_expression "(*sqlite3Config.m.xFree)(pSVar12)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar12)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) }))) })) (expression_statement "pcVar3 = pSVar16->zMalloc;" (assignment_expression "pcVar3 = pSVar16->zMalloc" identifier = (field_expression "pSVar16->zMalloc" identifier -> field_identifier)) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }\n                          if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }\nLAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar16);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                          pSVar16 = pSVar10;\n                          if (pSVar10 == (SegmentNode *)0x0) break;\n                          goto LAB_0013a5ca;\n                        }" { (if_statement "if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                            (*sqlite3Config.m.xFree)(pcVar3);\n                            goto LAB_0013a6bf;\n                          }" { (expression_statement "(*sqlite3Config.m.xFree)(pcVar3);" (call_expression "(*sqlite3Config.m.xFree)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) (goto_statement "goto LAB_0013a6bf;" goto statement_identifier ;) })) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pcVar3);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pcVar3)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pcVar3);" (call_expression "(*sqlite3Config.m.xFree)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                            goto LAB_0013a6bf;\n                          }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) (goto_statement "goto LAB_0013a6bf;" goto statement_identifier ;) })) (if_statement "if (sqlite3Config.bMemstat == 0) {\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                            (*sqlite3Config.m.xFree)(pSVar16);\n                            goto LAB_0013a6d2;\n                          }" { (expression_statement "(*sqlite3Config.m.xFree)(pSVar16);" (call_expression "(*sqlite3Config.m.xFree)(pSVar16)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar16)" ( identifier ))) ;) (goto_statement "goto LAB_0013a6d2;" goto statement_identifier ;) })) (labeled_statement "LAB_0013a58d:\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar16);" statement_identifier : (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pSVar16);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pSVar16)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pSVar16)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar16)" ( identifier )))) ;)) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pSVar16);" (call_expression "(*sqlite3Config.m.xFree)(pSVar16)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar16)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "pSVar16 = pSVar10;" (assignment_expression "pSVar16 = pSVar10" identifier = identifier) ;) (if_statement "if (pSVar10 == (SegmentNode *)0x0) break;" if (parenthesized_expression "(pSVar10 == (SegmentNode *)0x0)" ( (binary_expression "pSVar10 == (SegmentNode *)0x0" identifier == (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_0013a5ca;" goto statement_identifier ;) })) (labeled_statement "LAB_0013a6bf:\n                        if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }" statement_identifier : (if_statement "if (sqlite3Config.bMemstat != 0) {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }" if (parenthesized_expression "(sqlite3Config.bMemstat != 0)" ( (binary_expression "sqlite3Config.bMemstat != 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) != number_literal) )) (compound_statement "{\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          goto LAB_0013a58d;\n                        }" { (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (goto_statement "goto LAB_0013a58d;" goto statement_identifier ;) }))) (expression_statement "(*sqlite3Config.m.xFree)(pSVar16);" (call_expression "(*sqlite3Config.m.xFree)(pSVar16)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar16)" ( identifier ))) ;) (labeled_statement "LAB_0013a6d2:\n                        pSVar16 = pSVar10;" statement_identifier : (expression_statement "pSVar16 = pSVar10;" (assignment_expression "pSVar16 = pSVar10" identifier = identifier) ;)) }) while (parenthesized_expression "(pSVar10 != (SegmentNode *)0x0)" ( (binary_expression "pSVar10 != (SegmentNode *)0x0" identifier != (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) })) (labeled_statement "LAB_0013a2a1:\n                    do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);" statement_identifier : (do_statement "do {\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    } while (pSVar16 != (SegmentNode *)0x0);" do (compound_statement "{\n                      pSVar16 = pSVar9->pRight;\n                      pSVar10 = (SegmentNode *)pSVar9->aData;\n                      if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }\n                      pcVar3 = pSVar9->zMalloc;\n                      if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }\nLAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }\n                      (*sqlite3Config.m.xFree)(pSVar9);\nLAB_0013a3a6:\n                      pSVar9 = pSVar16;\n                    }" { (expression_statement "pSVar16 = pSVar9->pRight;" (assignment_expression "pSVar16 = pSVar9->pRight" identifier = (field_expression "pSVar9->pRight" identifier -> field_identifier)) ;) (expression_statement "pSVar10 = (SegmentNode *)pSVar9->aData;" (assignment_expression "pSVar10 = (SegmentNode *)pSVar9->aData" identifier = (cast_expression "(SegmentNode *)pSVar9->aData" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pSVar9->aData" identifier -> field_identifier))) ;) (if_statement "if ((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }" if (parenthesized_expression "((pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0))" ( (binary_expression "(pSVar10 != pSVar9 + 1) && (pSVar10 != (SegmentNode *)0x0)" (parenthesized_expression "(pSVar10 != pSVar9 + 1)" ( (binary_expression "pSVar10 != pSVar9 + 1" identifier != (binary_expression "pSVar9 + 1" identifier + number_literal)) )) && (parenthesized_expression "(pSVar10 != (SegmentNode *)0x0)" ( (binary_expression "pSVar10 != (SegmentNode *)0x0" identifier != (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }\n                      }" { (if_statement "if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }\n                        else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                        }" { (expression_statement "(*sqlite3Config.m.xFree)(pSVar10);" (call_expression "(*sqlite3Config.m.xFree)(pSVar10)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar10)" ( identifier ))) ;) }) (else_clause "else {\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }" else (compound_statement "{\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }\n                          iVar7 = (*sqlite3Config.m.xSize)(pSVar10);\n                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                          (*sqlite3Config.m.xFree)(pSVar10);\n                          if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }\n                        }" { (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                          }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pSVar10);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pSVar10)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pSVar10)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar10)" ( identifier )))) ;) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pSVar10);" (call_expression "(*sqlite3Config.m.xFree)(pSVar10)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar10)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) }))) })) (expression_statement "pcVar3 = pSVar9->zMalloc;" (assignment_expression "pcVar3 = pSVar9->zMalloc" identifier = (field_expression "pSVar9->zMalloc" identifier -> field_identifier)) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }\n                        if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }\nLAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar9);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                        pSVar9 = pSVar16;\n                        if (pSVar16 == (SegmentNode *)0x0) break;\n                        goto LAB_0013a2a1;\n                      }" { (if_statement "if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                          (*sqlite3Config.m.xFree)(pcVar3);\n                          goto LAB_0013a393;\n                        }" { (expression_statement "(*sqlite3Config.m.xFree)(pcVar3);" (call_expression "(*sqlite3Config.m.xFree)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) (goto_statement "goto LAB_0013a393;" goto statement_identifier ;) })) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pcVar3);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pcVar3)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pcVar3);" (call_expression "(*sqlite3Config.m.xFree)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                          goto LAB_0013a393;\n                        }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) (goto_statement "goto LAB_0013a393;" goto statement_identifier ;) })) (if_statement "if (sqlite3Config.bMemstat == 0) {\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                          (*sqlite3Config.m.xFree)(pSVar9);\n                          goto LAB_0013a3a6;\n                        }" { (expression_statement "(*sqlite3Config.m.xFree)(pSVar9);" (call_expression "(*sqlite3Config.m.xFree)(pSVar9)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar9)" ( identifier ))) ;) (goto_statement "goto LAB_0013a3a6;" goto statement_identifier ;) })) (labeled_statement "LAB_0013a265:\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar9);" statement_identifier : (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pSVar9);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pSVar9)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pSVar9)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar9)" ( identifier )))) ;)) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pSVar9);" (call_expression "(*sqlite3Config.m.xFree)(pSVar9)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar9)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "pSVar9 = pSVar16;" (assignment_expression "pSVar9 = pSVar16" identifier = identifier) ;) (if_statement "if (pSVar16 == (SegmentNode *)0x0) break;" if (parenthesized_expression "(pSVar16 == (SegmentNode *)0x0)" ( (binary_expression "pSVar16 == (SegmentNode *)0x0" identifier == (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_0013a2a1;" goto statement_identifier ;) })) (labeled_statement "LAB_0013a393:\n                      if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }" statement_identifier : (if_statement "if (sqlite3Config.bMemstat != 0) {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }" if (parenthesized_expression "(sqlite3Config.bMemstat != 0)" ( (binary_expression "sqlite3Config.bMemstat != 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) != number_literal) )) (compound_statement "{\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        goto LAB_0013a265;\n                      }" { (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (goto_statement "goto LAB_0013a265;" goto statement_identifier ;) }))) (expression_statement "(*sqlite3Config.m.xFree)(pSVar9);" (call_expression "(*sqlite3Config.m.xFree)(pSVar9)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar9)" ( identifier ))) ;) (labeled_statement "LAB_0013a3a6:\n                      pSVar9 = pSVar16;" statement_identifier : (expression_statement "pSVar9 = pSVar16;" (assignment_expression "pSVar9 = pSVar16" identifier = identifier) ;)) }) while (parenthesized_expression "(pSVar16 != (SegmentNode *)0x0)" ( (binary_expression "pSVar16 != (SegmentNode *)0x0" identifier != (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) })) (labeled_statement "LAB_0013998a:\n                  do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);" statement_identifier : (do_statement "do {\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  } while (pSVar9 != (SegmentNode *)0x0);" do (compound_statement "{\n                    pSVar9 = pSVar13->pRight;\n                    pSVar16 = (SegmentNode *)pSVar13->aData;\n                    if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    pcVar3 = pSVar13->zMalloc;\n                    if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }\nLAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }\n                    (*sqlite3Config.m.xFree)(pSVar13);\nLAB_00139a92:\n                    pSVar13 = pSVar9;\n                  }" { (expression_statement "pSVar9 = pSVar13->pRight;" (assignment_expression "pSVar9 = pSVar13->pRight" identifier = (field_expression "pSVar13->pRight" identifier -> field_identifier)) ;) (expression_statement "pSVar16 = (SegmentNode *)pSVar13->aData;" (assignment_expression "pSVar16 = (SegmentNode *)pSVar13->aData" identifier = (cast_expression "(SegmentNode *)pSVar13->aData" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pSVar13->aData" identifier -> field_identifier))) ;) (if_statement "if ((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }" if (parenthesized_expression "((pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0))" ( (binary_expression "(pSVar16 != pSVar13 + 1) && (pSVar16 != (SegmentNode *)0x0)" (parenthesized_expression "(pSVar16 != pSVar13 + 1)" ( (binary_expression "pSVar16 != pSVar13 + 1" identifier != (binary_expression "pSVar13 + 1" identifier + number_literal)) )) && (parenthesized_expression "(pSVar16 != (SegmentNode *)0x0)" ( (binary_expression "pSVar16 != (SegmentNode *)0x0" identifier != (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }" { (if_statement "if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                      }" { (expression_statement "(*sqlite3Config.m.xFree)(pSVar16);" (call_expression "(*sqlite3Config.m.xFree)(pSVar16)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar16)" ( identifier ))) ;) }) (else_clause "else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }" else (compound_statement "{\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(pSVar16);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(pSVar16);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }" { (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pSVar16);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pSVar16)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pSVar16)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar16)" ( identifier )))) ;) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pSVar16);" (call_expression "(*sqlite3Config.m.xFree)(pSVar16)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar16)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) }))) })) (expression_statement "pcVar3 = pSVar13->zMalloc;" (assignment_expression "pcVar3 = pSVar13->zMalloc" identifier = (field_expression "pSVar13->zMalloc" identifier -> field_identifier)) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }\nLAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar13);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                      pSVar13 = pSVar9;\n                      if (pSVar9 == (SegmentNode *)0x0) break;\n                      goto LAB_0013998a;\n                    }" { (if_statement "if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                        (*sqlite3Config.m.xFree)(pcVar3);\n                        goto LAB_00139a7f;\n                      }" { (expression_statement "(*sqlite3Config.m.xFree)(pcVar3);" (call_expression "(*sqlite3Config.m.xFree)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) (goto_statement "goto LAB_00139a7f;" goto statement_identifier ;) })) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pcVar3);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pcVar3)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pcVar3);" (call_expression "(*sqlite3Config.m.xFree)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        goto LAB_00139a7f;\n                      }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) (goto_statement "goto LAB_00139a7f;" goto statement_identifier ;) })) (if_statement "if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                        (*sqlite3Config.m.xFree)(pSVar13);\n                        goto LAB_00139a92;\n                      }" { (expression_statement "(*sqlite3Config.m.xFree)(pSVar13);" (call_expression "(*sqlite3Config.m.xFree)(pSVar13)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar13)" ( identifier ))) ;) (goto_statement "goto LAB_00139a92;" goto statement_identifier ;) })) (labeled_statement "LAB_0013994d:\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar13);" statement_identifier : (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pSVar13);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pSVar13)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pSVar13)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar13)" ( identifier )))) ;)) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pSVar13);" (call_expression "(*sqlite3Config.m.xFree)(pSVar13)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar13)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "pSVar13 = pSVar9;" (assignment_expression "pSVar13 = pSVar9" identifier = identifier) ;) (if_statement "if (pSVar9 == (SegmentNode *)0x0) break;" if (parenthesized_expression "(pSVar9 == (SegmentNode *)0x0)" ( (binary_expression "pSVar9 == (SegmentNode *)0x0" identifier == (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_0013998a;" goto statement_identifier ;) })) (labeled_statement "LAB_00139a7f:\n                    if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }" statement_identifier : (if_statement "if (sqlite3Config.bMemstat != 0) {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }" if (parenthesized_expression "(sqlite3Config.bMemstat != 0)" ( (binary_expression "sqlite3Config.bMemstat != 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) != number_literal) )) (compound_statement "{\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      goto LAB_0013994d;\n                    }" { (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (goto_statement "goto LAB_0013994d;" goto statement_identifier ;) }))) (expression_statement "(*sqlite3Config.m.xFree)(pSVar13);" (call_expression "(*sqlite3Config.m.xFree)(pSVar13)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar13)" ( identifier ))) ;) (labeled_statement "LAB_00139a92:\n                    pSVar13 = pSVar9;" statement_identifier : (expression_statement "pSVar13 = pSVar9;" (assignment_expression "pSVar13 = pSVar9" identifier = identifier) ;)) }) while (parenthesized_expression "(pSVar9 != (SegmentNode *)0x0)" ( (binary_expression "pSVar9 != (SegmentNode *)0x0" identifier != (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) })) (labeled_statement "LAB_00139b0a:\n                do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);" statement_identifier : (do_statement "do {\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                } while (pSVar13 != (SegmentNode *)0x0);" do (compound_statement "{\n                  pSVar13 = pSVar14->pRight;\n                  pSVar9 = (SegmentNode *)pSVar14->aData;\n                  if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  pcVar3 = pSVar14->zMalloc;\n                  if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }\nLAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }\n                  (*sqlite3Config.m.xFree)(pSVar14);\nLAB_00139c12:\n                  pSVar14 = pSVar13;\n                }" { (expression_statement "pSVar13 = pSVar14->pRight;" (assignment_expression "pSVar13 = pSVar14->pRight" identifier = (field_expression "pSVar14->pRight" identifier -> field_identifier)) ;) (expression_statement "pSVar9 = (SegmentNode *)pSVar14->aData;" (assignment_expression "pSVar9 = (SegmentNode *)pSVar14->aData" identifier = (cast_expression "(SegmentNode *)pSVar14->aData" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pSVar14->aData" identifier -> field_identifier))) ;) (if_statement "if ((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }" if (parenthesized_expression "((pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0))" ( (binary_expression "(pSVar9 != pSVar14 + 1) && (pSVar9 != (SegmentNode *)0x0)" (parenthesized_expression "(pSVar9 != pSVar14 + 1)" ( (binary_expression "pSVar9 != pSVar14 + 1" identifier != (binary_expression "pSVar14 + 1" identifier + number_literal)) )) && (parenthesized_expression "(pSVar9 != (SegmentNode *)0x0)" ( (binary_expression "pSVar9 != (SegmentNode *)0x0" identifier != (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }" { (if_statement "if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                    }" { (expression_statement "(*sqlite3Config.m.xFree)(pSVar9);" (call_expression "(*sqlite3Config.m.xFree)(pSVar9)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar9)" ( identifier ))) ;) }) (else_clause "else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }" else (compound_statement "{\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pSVar9);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pSVar9);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }" { (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pSVar9);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pSVar9)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pSVar9)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar9)" ( identifier )))) ;) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pSVar9);" (call_expression "(*sqlite3Config.m.xFree)(pSVar9)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar9)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) }))) })) (expression_statement "pcVar3 = pSVar14->zMalloc;" (assignment_expression "pcVar3 = pSVar14->zMalloc" identifier = (field_expression "pSVar14->zMalloc" identifier -> field_identifier)) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    (*sqlite3Config.m.xFree)(pcVar3);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }\nLAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pSVar14);\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }\n                    pSVar14 = pSVar13;\n                    if (pSVar13 == (SegmentNode *)0x0) break;\n                    goto LAB_00139b0a;\n                  }" { (if_statement "if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      goto LAB_00139bff;\n                    }" { (expression_statement "(*sqlite3Config.m.xFree)(pcVar3);" (call_expression "(*sqlite3Config.m.xFree)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) (goto_statement "goto LAB_00139bff;" goto statement_identifier ;) })) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pcVar3);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pcVar3)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pcVar3);" (call_expression "(*sqlite3Config.m.xFree)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      goto LAB_00139bff;\n                    }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) (goto_statement "goto LAB_00139bff;" goto statement_identifier ;) })) (if_statement "if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                      (*sqlite3Config.m.xFree)(pSVar14);\n                      goto LAB_00139c12;\n                    }" { (expression_statement "(*sqlite3Config.m.xFree)(pSVar14);" (call_expression "(*sqlite3Config.m.xFree)(pSVar14)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar14)" ( identifier ))) ;) (goto_statement "goto LAB_00139c12;" goto statement_identifier ;) })) (labeled_statement "LAB_00139acd:\n                    iVar7 = (*sqlite3Config.m.xSize)(pSVar14);" statement_identifier : (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pSVar14);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pSVar14)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pSVar14)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar14)" ( identifier )))) ;)) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pSVar14);" (call_expression "(*sqlite3Config.m.xFree)(pSVar14)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar14)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                    }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "pSVar14 = pSVar13;" (assignment_expression "pSVar14 = pSVar13" identifier = identifier) ;) (if_statement "if (pSVar13 == (SegmentNode *)0x0) break;" if (parenthesized_expression "(pSVar13 == (SegmentNode *)0x0)" ( (binary_expression "pSVar13 == (SegmentNode *)0x0" identifier == (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_00139b0a;" goto statement_identifier ;) })) (labeled_statement "LAB_00139bff:\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }" statement_identifier : (if_statement "if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }" if (parenthesized_expression "(sqlite3Config.bMemstat != 0)" ( (binary_expression "sqlite3Config.bMemstat != 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) != number_literal) )) (compound_statement "{\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    goto LAB_00139acd;\n                  }" { (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (goto_statement "goto LAB_00139acd;" goto statement_identifier ;) }))) (expression_statement "(*sqlite3Config.m.xFree)(pSVar14);" (call_expression "(*sqlite3Config.m.xFree)(pSVar14)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar14)" ( identifier ))) ;) (labeled_statement "LAB_00139c12:\n                  pSVar14 = pSVar13;" statement_identifier : (expression_statement "pSVar14 = pSVar13;" (assignment_expression "pSVar14 = pSVar13" identifier = identifier) ;)) }) while (parenthesized_expression "(pSVar13 != (SegmentNode *)0x0)" ( (binary_expression "pSVar13 != (SegmentNode *)0x0" identifier != (cast_expression "(SegmentNode *)0x0" ( (type_descriptor "SegmentNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) })) (if_statement "if (sqlite3Config.bMemstat == 0) {\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }\n              else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                (*sqlite3Config.m.xFree)(pSVar20);\n              }" { (expression_statement "(*sqlite3Config.m.xFree)(pSVar20);" (call_expression "(*sqlite3Config.m.xFree)(pSVar20)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar20)" ( identifier ))) ;) }) (else_clause "else {\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }" else (compound_statement "{\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }\n                iVar7 = (*sqlite3Config.m.xSize)(pSVar20);\n                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                (*sqlite3Config.m.xFree)(pSVar20);\n                if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }\n              }" { (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pSVar20);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pSVar20)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pSVar20)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar20)" ( identifier )))) ;) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pSVar20);" (call_expression "(*sqlite3Config.m.xFree)(pSVar20)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pSVar20)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) }))) }))) (labeled_statement "LAB_00139c80:\n            ppFVar8 = csr.apSegment;" statement_identifier : (expression_statement "ppFVar8 = csr.apSegment;" (assignment_expression "ppFVar8 = csr.apSegment" identifier = (field_expression "csr.apSegment" identifier . field_identifier)) ;)) (if_statement "if (0 < csr.nSegment) {\n              pFVar15 = *csr.apSegment;\nLAB_00139c92:\n              local_b4 = 0;\n              ppFVar8 = csr.apSegment;\n              do {\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              } while( true );\n            }" if (parenthesized_expression "(0 < csr.nSegment)" ( (binary_expression "0 < csr.nSegment" number_literal < (field_expression "csr.nSegment" identifier . field_identifier)) )) (compound_statement "{\n              pFVar15 = *csr.apSegment;\nLAB_00139c92:\n              local_b4 = 0;\n              ppFVar8 = csr.apSegment;\n              do {\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              } while( true );\n            }" { (expression_statement "pFVar15 = *csr.apSegment;" (assignment_expression "pFVar15 = *csr.apSegment" identifier = (pointer_expression "*csr.apSegment" * (field_expression "csr.apSegment" identifier . field_identifier))) ;) (labeled_statement "LAB_00139c92:\n              local_b4 = 0;" statement_identifier : (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;)) (expression_statement "ppFVar8 = csr.apSegment;" (assignment_expression "ppFVar8 = csr.apSegment" identifier = (field_expression "csr.apSegment" identifier . field_identifier)) ;) (do_statement "do {\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              } while( true );" do (compound_statement "{\n                if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                pFVar15 = ppFVar8[local_b4];\n              }" { (if_statement "if (pFVar15 == (Fts3SegReader *)0x0) {\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }\n                else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }" if (parenthesized_expression "(pFVar15 == (Fts3SegReader *)0x0)" ( (binary_expression "pFVar15 == (Fts3SegReader *)0x0" identifier == (cast_expression "(Fts3SegReader *)0x0" ( (type_descriptor "Fts3SegReader *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }" { (labeled_statement "LAB_00139cf4:\n                  if (csr.nSegment <= local_b4 + 1) break;" statement_identifier : (if_statement "if (csr.nSegment <= local_b4 + 1) break;" if (parenthesized_expression "(csr.nSegment <= local_b4 + 1)" ( (binary_expression "csr.nSegment <= local_b4 + 1" (field_expression "csr.nSegment" identifier . field_identifier) <= (binary_expression "local_b4 + 1" identifier + number_literal)) )) (break_statement "break;" break ;))) }) (else_clause "else {\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }" else (compound_statement "{\n                  if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }\n                  p_00 = pFVar15->pBlob;\n                  if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }\n                  if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*sqlite3Config.m.xFree)(pFVar15);\n                  ppFVar8 = csr.apSegment;\n                  if (csr.nSegment <= local_b4 + 1) break;\n                }" { (if_statement "if ((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }" if (parenthesized_expression "((pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0))" ( (binary_expression "(pFVar15->ppNextElem == (Fts3HashElem **)0x0) &&\n                     (pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)" (parenthesized_expression "(pFVar15->ppNextElem == (Fts3HashElem **)0x0)" ( (binary_expression "pFVar15->ppNextElem == (Fts3HashElem **)0x0" (field_expression "pFVar15->ppNextElem" identifier -> field_identifier) == (cast_expression "(Fts3HashElem **)0x0" ( (type_descriptor "Fts3HashElem **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) && (parenthesized_expression "(pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0)" ( (comma_expression "pcVar3 = pFVar15->zTerm, pcVar3 != (char *)0x0" (assignment_expression "pcVar3 = pFVar15->zTerm" identifier = (field_expression "pFVar15->zTerm" identifier -> field_identifier)) , (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }" { (if_statement "if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }" { (expression_statement "(*sqlite3Config.m.xFree)(pcVar3);" (call_expression "(*sqlite3Config.m.xFree)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) }) (else_clause "else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }" else (compound_statement "{\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }" { (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pcVar3);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pcVar3)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pcVar3);" (call_expression "(*sqlite3Config.m.xFree)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) }))) })) (if_statement "if ((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)) {\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }" if (parenthesized_expression "((pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0))" ( (binary_expression "(pFVar15->rootOnly == '\0') &&\n                     (pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)" (parenthesized_expression "(pFVar15->rootOnly == '\0')" ( (binary_expression "pFVar15->rootOnly == '\0'" (field_expression "pFVar15->rootOnly" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0)" ( (comma_expression "pcVar3 = pFVar15->aNode, pcVar3 != (char *)0x0" (assignment_expression "pcVar3 = pFVar15->aNode" identifier = (field_expression "pFVar15->aNode" identifier -> field_identifier)) , (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n                    if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }\n                  }" { (if_statement "if (sqlite3Config.bMemstat == 0) {\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }\n                    else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                    }" { (expression_statement "(*sqlite3Config.m.xFree)(pcVar3);" (call_expression "(*sqlite3Config.m.xFree)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) }) (else_clause "else {\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }" else (compound_statement "{\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }\n                      iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                      (*sqlite3Config.m.xFree)(pcVar3);\n                      if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }\n                    }" { (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                      }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pcVar3);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pcVar3)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pcVar3);" (call_expression "(*sqlite3Config.m.xFree)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) }))) })) (expression_statement "p_00 = pFVar15->pBlob;" (assignment_expression "p_00 = pFVar15->pBlob" identifier = (field_expression "pFVar15->pBlob" identifier -> field_identifier)) ;) (if_statement "if (p_00 != (sqlite3_blob *)0x0) {\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }" if (parenthesized_expression "(p_00 != (sqlite3_blob *)0x0)" ( (binary_expression "p_00 != (sqlite3_blob *)0x0" identifier != (cast_expression "(sqlite3_blob *)0x0" ( (type_descriptor "sqlite3_blob *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    psVar21 = *(sqlite3 **)(p_00 + 0x14);\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }\n                    sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));\n                    if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }\n                    if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }\n                  }" { (expression_statement "psVar21 = *(sqlite3 **)(p_00 + 0x14);" (assignment_expression "psVar21 = *(sqlite3 **)(p_00 + 0x14)" identifier = (pointer_expression "*(sqlite3 **)(p_00 + 0x14)" * (cast_expression "(sqlite3 **)(p_00 + 0x14)" ( (type_descriptor "sqlite3 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_00 + 0x14)" ( (binary_expression "p_00 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }" if (parenthesized_expression "(psVar21->mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "psVar21->mutex != (sqlite3_mutex *)0x0" (field_expression "psVar21->mutex" identifier -> field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);\n                    }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(psVar21->mutex)" ( (field_expression "psVar21->mutex" identifier -> field_identifier) ))) ;) })) (expression_statement "sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10));" (call_expression "sqlite3_finalize(*(sqlite3_stmt **)(p_00 + 0x10))" identifier (argument_list "(*(sqlite3_stmt **)(p_00 + 0x10))" ( (pointer_expression "*(sqlite3_stmt **)(p_00 + 0x10)" * (cast_expression "(sqlite3_stmt **)(p_00 + 0x10)" ( (type_descriptor "sqlite3_stmt **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_00 + 0x10)" ( (binary_expression "p_00 + 0x10" identifier + number_literal) )))) ))) ;) (if_statement "if (psVar21->pnBytesFreed == (int *)0x0) {\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }\n                    else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }" if (parenthesized_expression "(psVar21->pnBytesFreed == (int *)0x0)" ( (binary_expression "psVar21->pnBytesFreed == (int *)0x0" (field_expression "psVar21->pnBytesFreed" identifier -> field_identifier) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }\n                    }" { (if_statement "if (sqlite3Config.bMemstat == 0) {\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }\n                      else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                        (*sqlite3Config.m.xFree)(p_00);\n                      }" { (expression_statement "(*sqlite3Config.m.xFree)(p_00);" (call_expression "(*sqlite3Config.m.xFree)(p_00)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(p_00)" ( identifier ))) ;) }) (else_clause "else {\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }" else (compound_statement "{\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }\n                        iVar7 = (*sqlite3Config.m.xSize)(p_00);\n                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                        (*sqlite3Config.m.xFree)(p_00);\n                        if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }\n                      }" { (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                        }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(p_00);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(p_00)" identifier = (call_expression "(*sqlite3Config.m.xSize)(p_00)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(p_00)" ( identifier )))) ;) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "(*sqlite3Config.m.xFree)(p_00);" (call_expression "(*sqlite3Config.m.xFree)(p_00)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(p_00)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                        }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) }))) }) (else_clause "else {\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }" else (compound_statement "{\n                      zTerm = (char *)0x139f87;\n                      measureAllocationSize(psVar21,p_00);\n                    }" { (expression_statement "zTerm = (char *)0x139f87;" (assignment_expression "zTerm = (char *)0x139f87" identifier = (cast_expression "(char *)0x139f87" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "measureAllocationSize(psVar21,p_00);" (call_expression "measureAllocationSize(psVar21,p_00)" identifier (argument_list "(psVar21,p_00)" ( identifier , identifier ))) ;) }))) (if_statement "if (psVar21->mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }" if (parenthesized_expression "(psVar21->mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "psVar21->mutex != (sqlite3_mutex *)0x0" (field_expression "psVar21->mutex" identifier -> field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);\n                    }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(psVar21->mutex)" ( (field_expression "psVar21->mutex" identifier -> field_identifier) ))) ;) })) })) (if_statement "if (sqlite3Config.bMemstat != 0) {\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }" if (parenthesized_expression "(sqlite3Config.bMemstat != 0)" ( (binary_expression "sqlite3Config.bMemstat != 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) != number_literal) )) (compound_statement "{\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }\n                    iVar7 = (*sqlite3Config.m.xSize)(pFVar15);\n                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n                    (*sqlite3Config.m.xFree)(pFVar15);\n                    ppFVar8 = csr.apSegment;\n                    if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }\n                    goto LAB_00139cf4;\n                  }" { (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n                    }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pFVar15);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pFVar15)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pFVar15)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pFVar15)" ( identifier )))) ;) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pFVar15);" (call_expression "(*sqlite3Config.m.xFree)(pFVar15)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pFVar15)" ( identifier ))) ;) (expression_statement "ppFVar8 = csr.apSegment;" (assignment_expression "ppFVar8 = csr.apSegment" identifier = (field_expression "csr.apSegment" identifier . field_identifier)) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n                      ppFVar8 = csr.apSegment;\n                    }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) (expression_statement "ppFVar8 = csr.apSegment;" (assignment_expression "ppFVar8 = csr.apSegment" identifier = (field_expression "csr.apSegment" identifier . field_identifier)) ;) })) (goto_statement "goto LAB_00139cf4;" goto statement_identifier ;) })) (expression_statement "(*sqlite3Config.m.xFree)(pFVar15);" (call_expression "(*sqlite3Config.m.xFree)(pFVar15)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pFVar15)" ( identifier ))) ;) (expression_statement "ppFVar8 = csr.apSegment;" (assignment_expression "ppFVar8 = csr.apSegment" identifier = (field_expression "csr.apSegment" identifier . field_identifier)) ;) (if_statement "if (csr.nSegment <= local_b4 + 1) break;" if (parenthesized_expression "(csr.nSegment <= local_b4 + 1)" ( (binary_expression "csr.nSegment <= local_b4 + 1" (field_expression "csr.nSegment" identifier . field_identifier) <= (binary_expression "local_b4 + 1" identifier + number_literal)) )) (break_statement "break;" break ;)) }))) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "pFVar15 = ppFVar8[local_b4];" (assignment_expression "pFVar15 = ppFVar8[local_b4]" identifier = (subscript_expression "ppFVar8[local_b4]" identifier [ identifier ])) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) }))) (if_statement "if (ppFVar8 != (Fts3SegReader **)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(ppFVar8);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(ppFVar8);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }" if (parenthesized_expression "(ppFVar8 != (Fts3SegReader **)0x0)" ( (binary_expression "ppFVar8 != (Fts3SegReader **)0x0" identifier != (cast_expression "(Fts3SegReader **)0x0" ( (type_descriptor "Fts3SegReader **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(ppFVar8);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(ppFVar8);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }" { (if_statement "if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(ppFVar8);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(ppFVar8);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n              (*sqlite3Config.m.xFree)(ppFVar8);\n            }" { (expression_statement "(*sqlite3Config.m.xFree)(ppFVar8);" (call_expression "(*sqlite3Config.m.xFree)(ppFVar8)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(ppFVar8)" ( identifier ))) ;) }) (else_clause "else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(ppFVar8);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }" else (compound_statement "{\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(ppFVar8);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }" { (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(ppFVar8);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(ppFVar8)" identifier = (call_expression "(*sqlite3Config.m.xSize)(ppFVar8)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(ppFVar8)" ( identifier )))) ;) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "(*sqlite3Config.m.xFree)(ppFVar8);" (call_expression "(*sqlite3Config.m.xFree)(ppFVar8)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(ppFVar8)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) }))) })) (expression_statement "pcVar3 = csr.aBuffer;" (assignment_expression "pcVar3 = csr.aBuffer" identifier = (field_expression "csr.aBuffer" identifier . field_identifier)) ;) (if_statement "if (csr.aBuffer != (char *)0x0) {\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(csr.aBuffer);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(pcVar3);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }" if (parenthesized_expression "(csr.aBuffer != (char *)0x0)" ( (binary_expression "csr.aBuffer != (char *)0x0" (field_expression "csr.aBuffer" identifier . field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(csr.aBuffer);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(pcVar3);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }\n          }" { (if_statement "if (sqlite3Config.bMemstat == 0) {\n              (*sqlite3Config.m.xFree)(csr.aBuffer);\n            }\n            else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(pcVar3);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }" if (parenthesized_expression "(sqlite3Config.bMemstat == 0)" ( (binary_expression "sqlite3Config.bMemstat == 0" (field_expression "sqlite3Config.bMemstat" identifier . field_identifier) == number_literal) )) (compound_statement "{\n              (*sqlite3Config.m.xFree)(csr.aBuffer);\n            }" { (expression_statement "(*sqlite3Config.m.xFree)(csr.aBuffer);" (call_expression "(*sqlite3Config.m.xFree)(csr.aBuffer)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(csr.aBuffer)" ( (field_expression "csr.aBuffer" identifier . field_identifier) ))) ;) }) (else_clause "else {\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(pcVar3);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }" else (compound_statement "{\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }\n              iVar7 = (*sqlite3Config.m.xSize)(pcVar3);\n              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;\n              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;\n              (*sqlite3Config.m.xFree)(pcVar3);\n              if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }\n            }" { (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);\n              }" { (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pcVar3);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pcVar3)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;" (assignment_expression "sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[9] - 1" (subscript_expression "sqlite3Stat.nowValue[9]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - number_literal)) ;) (expression_statement "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7;" (assignment_expression "sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) = (binary_expression "sqlite3Stat.nowValue[0] - iVar7" (subscript_expression "sqlite3Stat.nowValue[0]" (field_expression "sqlite3Stat.nowValue" identifier . field_identifier) [ number_literal ]) - identifier)) ;) (expression_statement "(*sqlite3Config.m.xFree)(pcVar3);" (call_expression "(*sqlite3Config.m.xFree)(pcVar3)" (parenthesized_expression "(*sqlite3Config.m.xFree)" ( (pointer_expression "*sqlite3Config.m.xFree" * (field_expression "sqlite3Config.m.xFree" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pcVar3)" ( identifier ))) ;) (if_statement "if (mem0.mutex != (sqlite3_mutex *)0x0) {\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }" if (parenthesized_expression "(mem0.mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "mem0.mutex != (sqlite3_mutex *)0x0" (field_expression "mem0.mutex" identifier . field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);\n              }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(mem0.mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(mem0.mutex)" ( (field_expression "mem0.mutex" identifier . field_identifier) ))) ;) })) }))) })) (if_statement "if (local_b8 != 0x65) goto LAB_00139ee4;" if (parenthesized_expression "(local_b8 != 0x65)" ( (binary_expression "local_b8 != 0x65" identifier != number_literal) )) (goto_statement "goto LAB_00139ee4;" goto statement_identifier ;)) (expression_statement "local_b0 = local_b0 + 1;" (assignment_expression "local_b0 = local_b0 + 1" identifier = (binary_expression "local_b0 + 1" identifier + number_literal)) ;) (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" identifier = true) ;) (if_statement "if (p->nIndex <= local_b0) break;" if (parenthesized_expression "(p->nIndex <= local_b0)" ( (binary_expression "p->nIndex <= local_b0" (field_expression "p->nIndex" identifier -> field_identifier) <= identifier) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (goto_statement "goto LAB_00139524;" goto statement_identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) (labeled_statement "LAB_00139ee4:\n  local_b0 = local_b0 + 1;" statement_identifier : (expression_statement "local_b0 = local_b0 + 1;" (assignment_expression "local_b0 = local_b0 + 1" identifier = (binary_expression "local_b0 + 1" identifier + number_literal)) ;)) (if_statement "if (local_b8 != 0) goto LAB_00139526;" if (parenthesized_expression "(local_b8 != 0)" ( (binary_expression "local_b8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00139526;" goto statement_identifier ;)) (goto_statement "goto LAB_001395a8;" goto statement_identifier ;) })))
(translation_unit "int __regparm3 FUN_00139450(int param_1,uint param_2)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int *piVar6;\n  int **ppiVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  int local_b8;\n  int local_b4;\n  int local_b0;\n  undefined4 local_74;\n  undefined4 local_70;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  int *local_58;\n  int local_54;\n  undefined4 *local_4c;\n  int local_48;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  bVar8 = 0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_b8 = FUN_00101610();\n  if (local_b8 != 0) {\nLAB_00139499:\n    iVar2 = local_b8;\n    FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n    *(undefined4 *)(param_1 + 0xf8) = 0;\n    FUN_0004f080();\nLAB_001394c5:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_00153870();\n    }\n    return iVar2;\n  }\n  FUN_00079e80();\n  FUN_00079e00();\n  bVar1 = false;\nLAB_00139524:\n  local_b8 = 0;\nLAB_00139526:\n  do {\n    iVar2 = FUN_000e7e00(0);\n    if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    FUN_0004c6c0();\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  } while( true );\nLAB_00139ee4:\n  local_b0 = local_b0 + 1;\n  if (local_b8 != 0) goto LAB_00139526;\n  goto LAB_001395a8;\n}\n\n" (function_definition "int __regparm3 FUN_00139450(int param_1,uint param_2)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int *piVar6;\n  int **ppiVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  int local_b8;\n  int local_b4;\n  int local_b0;\n  undefined4 local_74;\n  undefined4 local_70;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  int *local_58;\n  int local_54;\n  undefined4 *local_4c;\n  int local_48;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  bVar8 = 0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_b8 = FUN_00101610();\n  if (local_b8 != 0) {\nLAB_00139499:\n    iVar2 = local_b8;\n    FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n    *(undefined4 *)(param_1 + 0xf8) = 0;\n    FUN_0004f080();\nLAB_001394c5:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_00153870();\n    }\n    return iVar2;\n  }\n  FUN_00079e80();\n  FUN_00079e00();\n  bVar1 = false;\nLAB_00139524:\n  local_b8 = 0;\nLAB_00139526:\n  do {\n    iVar2 = FUN_000e7e00(0);\n    if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    FUN_0004c6c0();\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  } while( true );\nLAB_00139ee4:\n  local_b0 = local_b0 + 1;\n  if (local_b8 != 0) goto LAB_00139526;\n  goto LAB_001395a8;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00139450(int param_1,uint param_2)" identifier (parameter_list "(int param_1,uint param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int *piVar6;\n  int **ppiVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  int local_b8;\n  int local_b4;\n  int local_b0;\n  undefined4 local_74;\n  undefined4 local_70;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  int *local_58;\n  int local_54;\n  undefined4 *local_4c;\n  int local_48;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  bVar8 = 0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_b8 = FUN_00101610();\n  if (local_b8 != 0) {\nLAB_00139499:\n    iVar2 = local_b8;\n    FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n    *(undefined4 *)(param_1 + 0xf8) = 0;\n    FUN_0004f080();\nLAB_001394c5:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_00153870();\n    }\n    return iVar2;\n  }\n  FUN_00079e80();\n  FUN_00079e00();\n  bVar1 = false;\nLAB_00139524:\n  local_b8 = 0;\nLAB_00139526:\n  do {\n    iVar2 = FUN_000e7e00(0);\n    if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    FUN_0004c6c0();\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  } while( true );\nLAB_00139ee4:\n  local_b0 = local_b0 + 1;\n  if (local_b8 != 0) goto LAB_00139526;\n  goto LAB_001395a8;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int **ppiVar7;" primitive_type (pointer_declarator "**ppiVar7" * (pointer_declarator "*ppiVar7" * identifier)) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "int local_b8;" primitive_type identifier ;) (declaration "int local_b4;" primitive_type identifier ;) (declaration "int local_b0;" primitive_type identifier ;) (declaration "undefined4 local_74;" type_identifier identifier ;) (declaration "undefined4 local_70;" type_identifier identifier ;) (declaration "undefined4 local_68;" type_identifier identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (declaration "int *local_58;" primitive_type (pointer_declarator "*local_58" * identifier) ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "undefined4 *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_b8 = FUN_00101610();" (assignment_expression "local_b8 = FUN_00101610()" identifier = (call_expression "FUN_00101610()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_b8 != 0) {\nLAB_00139499:\n    iVar2 = local_b8;\n    FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n    *(undefined4 *)(param_1 + 0xf8) = 0;\n    FUN_0004f080();\nLAB_001394c5:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_00153870();\n    }\n    return iVar2;\n  }" if (parenthesized_expression "(local_b8 != 0)" ( (binary_expression "local_b8 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00139499:\n    iVar2 = local_b8;\n    FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n    *(undefined4 *)(param_1 + 0xf8) = 0;\n    FUN_0004f080();\nLAB_001394c5:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_00153870();\n    }\n    return iVar2;\n  }" { (labeled_statement "LAB_00139499:\n    iVar2 = local_b8;" statement_identifier : (expression_statement "iVar2 = local_b8;" (assignment_expression "iVar2 = local_b8" identifier = identifier) ;)) (expression_statement "FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));" (call_expression "FUN_000c0610(*(undefined4 *)(param_1 + 0xf8))" identifier (argument_list "(*(undefined4 *)(param_1 + 0xf8))" ( (pointer_expression "*(undefined4 *)(param_1 + 0xf8)" * (cast_expression "(undefined4 *)(param_1 + 0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0xf8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xf8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xf8)" * (cast_expression "(undefined4 *)(param_1 + 0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0004f080();" (call_expression "FUN_0004f080()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_001394c5:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_00153870();\n    }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_00153870();\n    }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n      FUN_00153870();\n    }" { (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar2;" return identifier ;) })) (expression_statement "FUN_00079e80();" (call_expression "FUN_00079e80()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00079e00();" (call_expression "FUN_00079e00()" identifier (argument_list "()" ( ))) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (labeled_statement "LAB_00139524:\n  local_b8 = 0;" statement_identifier : (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_00139526:\n  do {\n    iVar2 = FUN_000e7e00(0);\n    if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    FUN_0004c6c0();\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  } while( true );" statement_identifier : (do_statement "do {\n    iVar2 = FUN_000e7e00(0);\n    if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    FUN_0004c6c0();\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  } while( true );" do (compound_statement "{\n    iVar2 = FUN_000e7e00(0);\n    if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    FUN_0004c6c0();\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  }" { (expression_statement "iVar2 = FUN_000e7e00(0);" (assignment_expression "iVar2 = FUN_000e7e00(0)" identifier = (call_expression "FUN_000e7e00(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }" if (parenthesized_expression "(iVar2 != 100)" ( (binary_expression "iVar2 != 100" identifier != number_literal) )) (compound_statement "{\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }" { (expression_statement "iVar2 = FUN_000bfe40(0);" (assignment_expression "iVar2 = FUN_000bfe40(0)" identifier = (call_expression "FUN_000bfe40(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (local_b8 != 0) goto LAB_00139499;" if (parenthesized_expression "(local_b8 != 0)" ( (binary_expression "local_b8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00139499;" goto statement_identifier ;)) (expression_statement "FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));" (call_expression "FUN_000c0610(*(undefined4 *)(param_1 + 0xf8))" identifier (argument_list "(*(undefined4 *)(param_1 + 0xf8))" ( (pointer_expression "*(undefined4 *)(param_1 + 0xf8)" * (cast_expression "(undefined4 *)(param_1 + 0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0xf8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xf8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xf8)" * (cast_expression "(undefined4 *)(param_1 + 0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0004f080();" (call_expression "FUN_0004f080()" identifier (argument_list "()" ( ))) ;) (if_statement "if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }" if (parenthesized_expression "(((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1))" ( (binary_expression "((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)" (parenthesized_expression "((iVar2 == 0) && ((param_2 & 1) != 0))" ( (binary_expression "(iVar2 == 0) && ((param_2 & 1) != 0)" (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) && (parenthesized_expression "((param_2 & 1) != 0)" ( (binary_expression "(param_2 & 1) != 0" (parenthesized_expression "(param_2 & 1)" ( (binary_expression "param_2 & 1" identifier & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "(iVar2 = 0x65, !bVar1)" ( (comma_expression "iVar2 = 0x65, !bVar1" (assignment_expression "iVar2 = 0x65" identifier = number_literal) , (unary_expression "!bVar1" ! identifier)) ))) )) (compound_statement "{\n        iVar2 = 0;\n      }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) })) (goto_statement "goto LAB_001394c5;" goto statement_identifier ;) })) (expression_statement "FUN_0004c6c0();" (call_expression "FUN_0004c6c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_b0 = 0;" (assignment_expression "local_b0 = 0" identifier = number_literal) ;) (if_statement "if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }" if (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }" { (labeled_statement "LAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }" statement_identifier : (if_statement "if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }" if (parenthesized_expression "(local_b0 < *(int *)(param_1 + 0xfc))" ( (binary_expression "local_b0 < *(int *)(param_1 + 0xfc)" identifier < (pointer_expression "*(int *)(param_1 + 0xfc)" * (cast_expression "(int *)(param_1 + 0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xfc)" ( (binary_expression "param_1 + 0xfc" identifier + number_literal) ))))) )) (compound_statement "{\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }" { (do_statement "do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );" do (compound_statement "{\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        }" { (expression_statement "ppiVar7 = &local_58;" (assignment_expression "ppiVar7 = &local_58" identifier = (pointer_expression "&local_58" & identifier)) ;) (for_statement "for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }" for ( (assignment_expression "iVar2 = 0xe" identifier = number_literal) ; (binary_expression "iVar2 != 0" identifier != number_literal) ; (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ) (compound_statement "{\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }" { (expression_statement "*ppiVar7 = (int *)0x0;" (assignment_expression "*ppiVar7 = (int *)0x0" (pointer_expression "*ppiVar7" * identifier) = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;" (assignment_expression "ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "ppiVar7 + (uint)bVar8 * -2 + 1" (binary_expression "ppiVar7 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" identifier = number_literal) ;) (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" identifier = number_literal) ;) (expression_statement "local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);" (assignment_expression "local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58)" identifier = (call_expression "FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58)" identifier (argument_list "(0xfffffffe,0,0,1,0,&local_58)" ( number_literal , number_literal , number_literal , number_literal , number_literal , (pointer_expression "&local_58" & identifier) )))) ;) (if_statement "if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }" if (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) (compound_statement "{\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }" { (expression_statement "local_b8 = local_54;" (assignment_expression "local_b8 = local_54" identifier = identifier) ;) (expression_statement "piVar6 = local_58;" (assignment_expression "piVar6 = local_58" identifier = identifier) ;) (if_statement "if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }" if (parenthesized_expression "(local_54 != 0)" ( (binary_expression "local_54 != 0" identifier != number_literal) )) (compound_statement "{\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }" { (expression_statement "local_b8 = FUN_00108b40(&local_74);" (assignment_expression "local_b8 = FUN_00108b40(&local_74)" identifier = (call_expression "FUN_00108b40(&local_74)" identifier (argument_list "(&local_74)" ( (pointer_expression "&local_74" & identifier) )))) ;) (if_statement "if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }" if (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) (compound_statement "{\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }" { (if_statement "if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }" if (parenthesized_expression "((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0))" ( (binary_expression "(local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)" (parenthesized_expression "(local_54 == 1)" ( (binary_expression "local_54 == 1" identifier == number_literal) )) && (parenthesized_expression "(iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)" ( (comma_expression "iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0" (assignment_expression "iVar2 = *local_58" identifier = (pointer_expression "*local_58" * identifier)) , (binary_expression "*(int *)(iVar2 + 0x38) == 0" (pointer_expression "*(int *)(iVar2 + 0x38)" * (cast_expression "(int *)(iVar2 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x38)" ( (binary_expression "iVar2 + 0x38" identifier + number_literal) )))) == number_literal)) ))) )) (compound_statement "{\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }" { (expression_statement "local_b8 = 0x65;" (assignment_expression "local_b8 = 0x65" identifier = number_literal) ;) (goto_statement "goto LAB_00139c92;" goto statement_identifier ;) })) (expression_statement "local_4c = &local_68;" (assignment_expression "local_4c = &local_68" identifier = (pointer_expression "&local_68" & identifier)) ;) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (expression_statement "local_5c = 3;" (assignment_expression "local_5c = 3" identifier = number_literal) ;) (expression_statement "local_b8 = FUN_0012cf60(0);" (assignment_expression "local_b8 = FUN_0012cf60(0)" identifier = (call_expression "FUN_0012cf60(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (while_statement "while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }" while (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) (compound_statement "{\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }" { (expression_statement "local_b8 = FUN_0012ba30();" (assignment_expression "local_b8 = FUN_0012ba30()" identifier = (call_expression "FUN_0012ba30()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }" if (parenthesized_expression "(local_b8 != 100)" ( (binary_expression "local_b8 != 100" identifier != number_literal) )) (compound_statement "{\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }" { (if_statement "if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }" if (parenthesized_expression "(local_b8 == 0)" ( (binary_expression "local_b8 == 0" identifier == number_literal) )) (compound_statement "{\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }" { (expression_statement "local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);" (assignment_expression "local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54)" identifier = (call_expression "FUN_0010ce90(0xfffffffe,local_58,local_54)" identifier (argument_list "(0xfffffffe,local_58,local_54)" ( number_literal , identifier , identifier )))) ;) })) (break_statement "break;" break ;) })) (expression_statement "local_b8 = FUN_00138ea0(local_2c,local_28,local_24);" (assignment_expression "local_b8 = FUN_00138ea0(local_2c,local_28,local_24)" identifier = (call_expression "FUN_00138ea0(local_2c,local_28,local_24)" identifier (argument_list "(local_2c,local_28,local_24)" ( identifier , identifier , identifier )))) ;) })) })) (goto_statement "goto LAB_00139c80;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }" else (compound_statement "{\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }" { (labeled_statement "LAB_00139c80:\n            piVar6 = local_58;" statement_identifier : (expression_statement "piVar6 = local_58;" (assignment_expression "piVar6 = local_58" identifier = identifier) ;)) (if_statement "if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }" if (parenthesized_expression "(0 < local_54)" ( (binary_expression "0 < local_54" number_literal < identifier) )) (compound_statement "{\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }" { (expression_statement "iVar2 = *local_58;" (assignment_expression "iVar2 = *local_58" identifier = (pointer_expression "*local_58" * identifier)) ;) (labeled_statement "LAB_00139c92:\n              local_b4 = 0;" statement_identifier : (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;)) (expression_statement "piVar6 = local_58;" (assignment_expression "piVar6 = local_58" identifier = identifier) ;) (do_statement "do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );" do (compound_statement "{\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              }" { (if_statement "if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }" { (labeled_statement "LAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;" statement_identifier : (if_statement "if (local_54 <= local_b4 + 1) break;" if (parenthesized_expression "(local_54 <= local_b4 + 1)" ( (binary_expression "local_54 <= local_b4 + 1" identifier <= (binary_expression "local_b4 + 1" identifier + number_literal)) )) (break_statement "break;" break ;))) }) (else_clause "else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }" else (compound_statement "{\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }" { (if_statement "if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }" if (parenthesized_expression "((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))" ( (binary_expression "(*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0)" (parenthesized_expression "(*(int *)(iVar2 + 0x38) == 0)" ( (binary_expression "*(int *)(iVar2 + 0x38) == 0" (pointer_expression "*(int *)(iVar2 + 0x38)" * (cast_expression "(int *)(iVar2 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x38)" ( (binary_expression "iVar2 + 0x38" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0)" ( (comma_expression "iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0" (assignment_expression "iVar4 = *(int *)(iVar2 + 0x40)" identifier = (pointer_expression "*(int *)(iVar2 + 0x40)" * (cast_expression "(int *)(iVar2 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x40)" ( (binary_expression "iVar2 + 0x40" identifier + number_literal) ))))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }" { (if_statement "if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }" if (parenthesized_expression "(DAT_001bb3e0 == 0)" ( (binary_expression "DAT_001bb3e0 == 0" identifier == number_literal) )) (compound_statement "{\n                      (*DAT_001bb410)(iVar4);\n                    }" { (expression_statement "(*DAT_001bb410)(iVar4);" (call_expression "(*DAT_001bb410)(iVar4)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(iVar4)" ( identifier ))) ;) }) (else_clause "else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }" else (compound_statement "{\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }" { (if_statement "if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }" { (expression_statement "(*DAT_001bb43c)(DAT_001bcdc4);" (call_expression "(*DAT_001bb43c)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb43c)" ( (pointer_expression "*DAT_001bb43c" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) (expression_statement "iVar5 = (*DAT_001bb418)(iVar4);" (assignment_expression "iVar5 = (*DAT_001bb418)(iVar4)" identifier = (call_expression "(*DAT_001bb418)(iVar4)" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(iVar4)" ( identifier )))) ;) (expression_statement "DAT_001bce04 = DAT_001bce04 + -1;" (assignment_expression "DAT_001bce04 = DAT_001bce04 + -1" identifier = (binary_expression "DAT_001bce04 + -1" identifier + number_literal)) ;) (expression_statement "DAT_001bcde0 = DAT_001bcde0 - iVar5;" (assignment_expression "DAT_001bcde0 = DAT_001bcde0 - iVar5" identifier = (binary_expression "DAT_001bcde0 - iVar5" identifier - identifier)) ;) (expression_statement "(*DAT_001bb410)(iVar4);" (call_expression "(*DAT_001bb410)(iVar4)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(iVar4)" ( identifier ))) ;) (if_statement "if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }" { (expression_statement "(*DAT_001bb444)(DAT_001bcdc4);" (call_expression "(*DAT_001bb444)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb444)" ( (pointer_expression "*DAT_001bb444" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) }))) })) (if_statement "if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }" if (parenthesized_expression "((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     )" ( (binary_expression "(*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)" (parenthesized_expression "(*(char *)(iVar2 + 5) == '\0')" ( (binary_expression "*(char *)(iVar2 + 5) == '\0'" (pointer_expression "*(char *)(iVar2 + 5)" * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)" ( (comma_expression "iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0" (assignment_expression "iVar4 = *(int *)(iVar2 + 0x28)" identifier = (pointer_expression "*(int *)(iVar2 + 0x28)" * (cast_expression "(int *)(iVar2 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) ))))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }" { (if_statement "if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }" if (parenthesized_expression "(DAT_001bb3e0 == 0)" ( (binary_expression "DAT_001bb3e0 == 0" identifier == number_literal) )) (compound_statement "{\n                      (*DAT_001bb410)(iVar4);\n                    }" { (expression_statement "(*DAT_001bb410)(iVar4);" (call_expression "(*DAT_001bb410)(iVar4)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(iVar4)" ( identifier ))) ;) }) (else_clause "else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }" else (compound_statement "{\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }" { (if_statement "if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }" { (expression_statement "(*DAT_001bb43c)(DAT_001bcdc4);" (call_expression "(*DAT_001bb43c)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb43c)" ( (pointer_expression "*DAT_001bb43c" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) (expression_statement "iVar5 = (*DAT_001bb418)(iVar4);" (assignment_expression "iVar5 = (*DAT_001bb418)(iVar4)" identifier = (call_expression "(*DAT_001bb418)(iVar4)" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(iVar4)" ( identifier )))) ;) (expression_statement "DAT_001bce04 = DAT_001bce04 + -1;" (assignment_expression "DAT_001bce04 = DAT_001bce04 + -1" identifier = (binary_expression "DAT_001bce04 + -1" identifier + number_literal)) ;) (expression_statement "DAT_001bcde0 = DAT_001bcde0 - iVar5;" (assignment_expression "DAT_001bcde0 = DAT_001bcde0 - iVar5" identifier = (binary_expression "DAT_001bcde0 - iVar5" identifier - identifier)) ;) (expression_statement "(*DAT_001bb410)(iVar4);" (call_expression "(*DAT_001bb410)(iVar4)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(iVar4)" ( identifier ))) ;) (if_statement "if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }" { (expression_statement "(*DAT_001bb444)(DAT_001bcdc4);" (call_expression "(*DAT_001bb444)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb444)" ( (pointer_expression "*DAT_001bb444" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) }))) })) (expression_statement "iVar4 = *(int *)(iVar2 + 0x34);" (assignment_expression "iVar4 = *(int *)(iVar2 + 0x34)" identifier = (pointer_expression "*(int *)(iVar2 + 0x34)" * (cast_expression "(int *)(iVar2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x34)" ( (binary_expression "iVar2 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }" { (expression_statement "iVar5 = *(int *)(iVar4 + 0x14);" (assignment_expression "iVar5 = *(int *)(iVar4 + 0x14)" identifier = (pointer_expression "*(int *)(iVar4 + 0x14)" * (cast_expression "(int *)(iVar4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }" if (parenthesized_expression "(*(int *)(iVar5 + 0xc) != 0)" ( (binary_expression "*(int *)(iVar5 + 0xc) != 0" (pointer_expression "*(int *)(iVar5 + 0xc)" * (cast_expression "(int *)(iVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }" { (expression_statement "(*DAT_001bb43c)(*(int *)(iVar5 + 0xc));" (call_expression "(*DAT_001bb43c)(*(int *)(iVar5 + 0xc))" (parenthesized_expression "(*DAT_001bb43c)" ( (pointer_expression "*DAT_001bb43c" * identifier) )) (argument_list "(*(int *)(iVar5 + 0xc))" ( (pointer_expression "*(int *)(iVar5 + 0xc)" * (cast_expression "(int *)(iVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) ))) ;) })) (expression_statement "FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));" (call_expression "FUN_000c0450(*(undefined4 *)(iVar4 + 0x10))" identifier (argument_list "(*(undefined4 *)(iVar4 + 0x10))" ( (pointer_expression "*(undefined4 *)(iVar4 + 0x10)" * (cast_expression "(undefined4 *)(iVar4 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) )))) ))) ;) (if_statement "if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }" if (parenthesized_expression "(*(int *)(iVar5 + 0x1e0) == 0)" ( (binary_expression "*(int *)(iVar5 + 0x1e0) == 0" (pointer_expression "*(int *)(iVar5 + 0x1e0)" * (cast_expression "(int *)(iVar5 + 0x1e0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x1e0)" ( (binary_expression "iVar5 + 0x1e0" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }" { (if_statement "if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }" if (parenthesized_expression "(DAT_001bb3e0 == 0)" ( (binary_expression "DAT_001bb3e0 == 0" identifier == number_literal) )) (compound_statement "{\n                        (*DAT_001bb410)(iVar4);\n                      }" { (expression_statement "(*DAT_001bb410)(iVar4);" (call_expression "(*DAT_001bb410)(iVar4)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(iVar4)" ( identifier ))) ;) }) (else_clause "else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }" else (compound_statement "{\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }" { (if_statement "if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }" { (expression_statement "(*DAT_001bb43c)(DAT_001bcdc4);" (call_expression "(*DAT_001bb43c)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb43c)" ( (pointer_expression "*DAT_001bb43c" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) (expression_statement "iVar3 = (*DAT_001bb418)(iVar4);" (assignment_expression "iVar3 = (*DAT_001bb418)(iVar4)" identifier = (call_expression "(*DAT_001bb418)(iVar4)" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(iVar4)" ( identifier )))) ;) (expression_statement "DAT_001bce04 = DAT_001bce04 + -1;" (assignment_expression "DAT_001bce04 = DAT_001bce04 + -1" identifier = (binary_expression "DAT_001bce04 + -1" identifier + number_literal)) ;) (expression_statement "DAT_001bcde0 = DAT_001bcde0 - iVar3;" (assignment_expression "DAT_001bcde0 = DAT_001bcde0 - iVar3" identifier = (binary_expression "DAT_001bcde0 - iVar3" identifier - identifier)) ;) (expression_statement "(*DAT_001bb410)(iVar4);" (call_expression "(*DAT_001bb410)(iVar4)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(iVar4)" ( identifier ))) ;) (if_statement "if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }" { (expression_statement "(*DAT_001bb444)(DAT_001bcdc4);" (call_expression "(*DAT_001bb444)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb444)" ( (pointer_expression "*DAT_001bb444" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) }))) }) (else_clause "else {\n                      FUN_0003a540();\n                    }" else (compound_statement "{\n                      FUN_0003a540();\n                    }" { (expression_statement "FUN_0003a540();" (call_expression "FUN_0003a540()" identifier (argument_list "()" ( ))) ;) }))) (if_statement "if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }" if (parenthesized_expression "(*(int *)(iVar5 + 0xc) != 0)" ( (binary_expression "*(int *)(iVar5 + 0xc) != 0" (pointer_expression "*(int *)(iVar5 + 0xc)" * (cast_expression "(int *)(iVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }" { (expression_statement "(*DAT_001bb444)(*(int *)(iVar5 + 0xc));" (call_expression "(*DAT_001bb444)(*(int *)(iVar5 + 0xc))" (parenthesized_expression "(*DAT_001bb444)" ( (pointer_expression "*DAT_001bb444" * identifier) )) (argument_list "(*(int *)(iVar5 + 0xc))" ( (pointer_expression "*(int *)(iVar5 + 0xc)" * (cast_expression "(int *)(iVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) ))) ;) })) })) (if_statement "if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }" if (parenthesized_expression "(DAT_001bb3e0 != 0)" ( (binary_expression "DAT_001bb3e0 != 0" identifier != number_literal) )) (compound_statement "{\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }" { (if_statement "if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }" { (expression_statement "(*DAT_001bb43c)(DAT_001bcdc4);" (call_expression "(*DAT_001bb43c)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb43c)" ( (pointer_expression "*DAT_001bb43c" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) (expression_statement "iVar4 = (*DAT_001bb418)(iVar2);" (assignment_expression "iVar4 = (*DAT_001bb418)(iVar2)" identifier = (call_expression "(*DAT_001bb418)(iVar2)" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(iVar2)" ( identifier )))) ;) (expression_statement "DAT_001bce04 = DAT_001bce04 + -1;" (assignment_expression "DAT_001bce04 = DAT_001bce04 + -1" identifier = (binary_expression "DAT_001bce04 + -1" identifier + number_literal)) ;) (expression_statement "DAT_001bcde0 = DAT_001bcde0 - iVar4;" (assignment_expression "DAT_001bcde0 = DAT_001bcde0 - iVar4" identifier = (binary_expression "DAT_001bcde0 - iVar4" identifier - identifier)) ;) (expression_statement "(*DAT_001bb410)(iVar2);" (call_expression "(*DAT_001bb410)(iVar2)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "piVar6 = local_58;" (assignment_expression "piVar6 = local_58" identifier = identifier) ;) (if_statement "if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }" { (expression_statement "(*DAT_001bb444)(DAT_001bcdc4);" (call_expression "(*DAT_001bb444)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb444)" ( (pointer_expression "*DAT_001bb444" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) (expression_statement "piVar6 = local_58;" (assignment_expression "piVar6 = local_58" identifier = identifier) ;) })) (goto_statement "goto LAB_00139cf4;" goto statement_identifier ;) })) (expression_statement "(*DAT_001bb410)(iVar2);" (call_expression "(*DAT_001bb410)(iVar2)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "piVar6 = local_58;" (assignment_expression "piVar6 = local_58" identifier = identifier) ;) (if_statement "if (local_54 <= local_b4 + 1) break;" if (parenthesized_expression "(local_54 <= local_b4 + 1)" ( (binary_expression "local_54 <= local_b4 + 1" identifier <= (binary_expression "local_b4 + 1" identifier + number_literal)) )) (break_statement "break;" break ;)) }))) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (expression_statement "iVar2 = piVar6[local_b4];" (assignment_expression "iVar2 = piVar6[local_b4]" identifier = (subscript_expression "piVar6[local_b4]" identifier [ identifier ])) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) }))) (if_statement "if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }" if (parenthesized_expression "(piVar6 != (int *)0x0)" ( (binary_expression "piVar6 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }" { (if_statement "if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }" if (parenthesized_expression "(DAT_001bb3e0 == 0)" ( (binary_expression "DAT_001bb3e0 == 0" identifier == number_literal) )) (compound_statement "{\n              (*DAT_001bb410)(piVar6);\n            }" { (expression_statement "(*DAT_001bb410)(piVar6);" (call_expression "(*DAT_001bb410)(piVar6)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(piVar6)" ( identifier ))) ;) }) (else_clause "else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }" else (compound_statement "{\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }" { (if_statement "if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }" { (expression_statement "(*DAT_001bb43c)(DAT_001bcdc4);" (call_expression "(*DAT_001bb43c)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb43c)" ( (pointer_expression "*DAT_001bb43c" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) (expression_statement "iVar2 = (*DAT_001bb418)(piVar6);" (assignment_expression "iVar2 = (*DAT_001bb418)(piVar6)" identifier = (call_expression "(*DAT_001bb418)(piVar6)" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(piVar6)" ( identifier )))) ;) (expression_statement "DAT_001bce04 = DAT_001bce04 + -1;" (assignment_expression "DAT_001bce04 = DAT_001bce04 + -1" identifier = (binary_expression "DAT_001bce04 + -1" identifier + number_literal)) ;) (expression_statement "DAT_001bcde0 = DAT_001bcde0 - iVar2;" (assignment_expression "DAT_001bcde0 = DAT_001bcde0 - iVar2" identifier = (binary_expression "DAT_001bcde0 - iVar2" identifier - identifier)) ;) (expression_statement "(*DAT_001bb410)(piVar6);" (call_expression "(*DAT_001bb410)(piVar6)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(piVar6)" ( identifier ))) ;) (if_statement "if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }" { (expression_statement "(*DAT_001bb444)(DAT_001bcdc4);" (call_expression "(*DAT_001bb444)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb444)" ( (pointer_expression "*DAT_001bb444" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) }))) })) (expression_statement "iVar2 = local_48;" (assignment_expression "iVar2 = local_48" identifier = identifier) ;) (if_statement "if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) )) (compound_statement "{\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }" { (if_statement "if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }" if (parenthesized_expression "(DAT_001bb3e0 == 0)" ( (binary_expression "DAT_001bb3e0 == 0" identifier == number_literal) )) (compound_statement "{\n              (*DAT_001bb410)(local_48);\n            }" { (expression_statement "(*DAT_001bb410)(local_48);" (call_expression "(*DAT_001bb410)(local_48)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(local_48)" ( identifier ))) ;) }) (else_clause "else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }" else (compound_statement "{\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }" { (if_statement "if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }" { (expression_statement "(*DAT_001bb43c)(DAT_001bcdc4);" (call_expression "(*DAT_001bb43c)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb43c)" ( (pointer_expression "*DAT_001bb43c" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) (expression_statement "iVar4 = (*DAT_001bb418)(iVar2);" (assignment_expression "iVar4 = (*DAT_001bb418)(iVar2)" identifier = (call_expression "(*DAT_001bb418)(iVar2)" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(iVar2)" ( identifier )))) ;) (expression_statement "DAT_001bce04 = DAT_001bce04 + -1;" (assignment_expression "DAT_001bce04 = DAT_001bce04 + -1" identifier = (binary_expression "DAT_001bce04 + -1" identifier + number_literal)) ;) (expression_statement "DAT_001bcde0 = DAT_001bcde0 - iVar4;" (assignment_expression "DAT_001bcde0 = DAT_001bcde0 - iVar4" identifier = (binary_expression "DAT_001bcde0 - iVar4" identifier - identifier)) ;) (expression_statement "(*DAT_001bb410)(iVar2);" (call_expression "(*DAT_001bb410)(iVar2)" (parenthesized_expression "(*DAT_001bb410)" ( (pointer_expression "*DAT_001bb410" * identifier) )) (argument_list "(iVar2)" ( identifier ))) ;) (if_statement "if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }" if (parenthesized_expression "(DAT_001bcdc4 != 0)" ( (binary_expression "DAT_001bcdc4 != 0" identifier != number_literal) )) (compound_statement "{\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }" { (expression_statement "(*DAT_001bb444)(DAT_001bcdc4);" (call_expression "(*DAT_001bb444)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb444)" ( (pointer_expression "*DAT_001bb444" * identifier) )) (argument_list "(DAT_001bcdc4)" ( identifier ))) ;) })) }))) })) (if_statement "if (local_b8 != 0x65) goto LAB_00139ee4;" if (parenthesized_expression "(local_b8 != 0x65)" ( (binary_expression "local_b8 != 0x65" identifier != number_literal) )) (goto_statement "goto LAB_00139ee4;" goto statement_identifier ;)) (expression_statement "local_b0 = local_b0 + 1;" (assignment_expression "local_b0 = local_b0 + 1" identifier = (binary_expression "local_b0 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (if_statement "if (*(int *)(param_1 + 0xfc) <= local_b0) break;" if (parenthesized_expression "(*(int *)(param_1 + 0xfc) <= local_b0)" ( (binary_expression "*(int *)(param_1 + 0xfc) <= local_b0" (pointer_expression "*(int *)(param_1 + 0xfc)" * (cast_expression "(int *)(param_1 + 0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xfc)" ( (binary_expression "param_1 + 0xfc" identifier + number_literal) )))) <= identifier) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (goto_statement "goto LAB_00139524;" goto statement_identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) (labeled_statement "LAB_00139ee4:\n  local_b0 = local_b0 + 1;" statement_identifier : (expression_statement "local_b0 = local_b0 + 1;" (assignment_expression "local_b0 = local_b0 + 1" identifier = (binary_expression "local_b0 + 1" identifier + number_literal)) ;)) (if_statement "if (local_b8 != 0) goto LAB_00139526;" if (parenthesized_expression "(local_b8 != 0)" ( (binary_expression "local_b8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00139526;" goto statement_identifier ;)) (goto_statement "goto LAB_001395a8;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (unary_expression ! IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , LIT , LIT , LIT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , IDENT , IDENT )))) ;) })) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) })) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + LIT)) )) (break_statement break ;))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) })) }))) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) })) }))) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) })) }))) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + LIT)) )) (break_statement break ;)) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) }) while (parenthesized_expression ( BOOL )) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) })) }))) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) })) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (break_statement break ;)) }) while (parenthesized_expression ( BOOL )) ;) }))) (goto_statement goto statement_identifier ;) })) }) while (parenthesized_expression ( BOOL )) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })))
(function_definition "int __regparm3 FUN_00139450(int param_1,uint param_2)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int *piVar6;\n  int **ppiVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  int local_b8;\n  int local_b4;\n  int local_b0;\n  undefined4 local_74;\n  undefined4 local_70;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  int *local_58;\n  int local_54;\n  undefined4 *local_4c;\n  int local_48;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  bVar8 = 0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_b8 = FUN_00101610();\n  if (local_b8 != 0) {\nLAB_00139499:\n    iVar2 = local_b8;\n    FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n    *(undefined4 *)(param_1 + 0xf8) = 0;\n    FUN_0004f080();\nLAB_001394c5:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_00153870();\n    }\n    return iVar2;\n  }\n  FUN_00079e80();\n  FUN_00079e00();\n  bVar1 = false;\nLAB_00139524:\n  local_b8 = 0;\nLAB_00139526:\n  do {\n    iVar2 = FUN_000e7e00(0);\n    if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    FUN_0004c6c0();\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  } while( true );\nLAB_00139ee4:\n  local_b0 = local_b0 + 1;\n  if (local_b8 != 0) goto LAB_00139526;\n  goto LAB_001395a8;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00139450(int param_1,uint param_2)" (identifier "FUN_00139450") (parameter_list "(int param_1,uint param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int *piVar6;\n  int **ppiVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  int local_b8;\n  int local_b4;\n  int local_b0;\n  undefined4 local_74;\n  undefined4 local_70;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  int *local_58;\n  int local_54;\n  undefined4 *local_4c;\n  int local_48;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  bVar8 = 0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_b8 = FUN_00101610();\n  if (local_b8 != 0) {\nLAB_00139499:\n    iVar2 = local_b8;\n    FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n    *(undefined4 *)(param_1 + 0xf8) = 0;\n    FUN_0004f080();\nLAB_001394c5:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_00153870();\n    }\n    return iVar2;\n  }\n  FUN_00079e80();\n  FUN_00079e00();\n  bVar1 = false;\nLAB_00139524:\n  local_b8 = 0;\nLAB_00139526:\n  do {\n    iVar2 = FUN_000e7e00(0);\n    if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    FUN_0004c6c0();\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  } while( true );\nLAB_00139ee4:\n  local_b0 = local_b0 + 1;\n  if (local_b8 != 0) goto LAB_00139526;\n  goto LAB_001395a8;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "int **ppiVar7;" (primitive_type "int") (pointer_declarator "**ppiVar7" (* "*") (pointer_declarator "*ppiVar7" (* "*") (identifier "ppiVar7"))) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "byte bVar8;" (type_identifier "byte") (identifier "bVar8") (; ";")) (declaration "int local_b8;" (primitive_type "int") (identifier "local_b8") (; ";")) (declaration "int local_b4;" (primitive_type "int") (identifier "local_b4") (; ";")) (declaration "int local_b0;" (primitive_type "int") (identifier "local_b0") (; ";")) (declaration "undefined4 local_74;" (type_identifier "undefined4") (identifier "local_74") (; ";")) (declaration "undefined4 local_70;" (type_identifier "undefined4") (identifier "local_70") (; ";")) (declaration "undefined4 local_68;" (type_identifier "undefined4") (identifier "local_68") (; ";")) (declaration "undefined4 local_64;" (type_identifier "undefined4") (identifier "local_64") (; ";")) (declaration "undefined4 local_60;" (type_identifier "undefined4") (identifier "local_60") (; ";")) (declaration "undefined4 local_5c;" (type_identifier "undefined4") (identifier "local_5c") (; ";")) (declaration "int *local_58;" (primitive_type "int") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "int local_54;" (primitive_type "int") (identifier "local_54") (; ";")) (declaration "undefined4 *local_4c;" (type_identifier "undefined4") (pointer_declarator "*local_4c" (* "*") (identifier "local_4c")) (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" (identifier "bVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_b8 = FUN_00101610();" (assignment_expression "local_b8 = FUN_00101610()" (identifier "local_b8") (= "=") (call_expression "FUN_00101610()" (identifier "FUN_00101610") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (local_b8 != 0) {\nLAB_00139499:\n    iVar2 = local_b8;\n    FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n    *(undefined4 *)(param_1 + 0xf8) = 0;\n    FUN_0004f080();\nLAB_001394c5:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_00153870();\n    }\n    return iVar2;\n  }" (if "if") (parenthesized_expression "(local_b8 != 0)" (( "(") (binary_expression "local_b8 != 0" (identifier "local_b8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00139499:\n    iVar2 = local_b8;\n    FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n    *(undefined4 *)(param_1 + 0xf8) = 0;\n    FUN_0004f080();\nLAB_001394c5:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_00153870();\n    }\n    return iVar2;\n  }" ({ "{") (labeled_statement "LAB_00139499:\n    iVar2 = local_b8;" (statement_identifier "LAB_00139499") (: ":") (expression_statement "iVar2 = local_b8;" (assignment_expression "iVar2 = local_b8" (identifier "iVar2") (= "=") (identifier "local_b8")) (; ";"))) (expression_statement "FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));" (call_expression "FUN_000c0610(*(undefined4 *)(param_1 + 0xf8))" (identifier "FUN_000c0610") (argument_list "(*(undefined4 *)(param_1 + 0xf8))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0xf8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xf8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf8)" (( "(") (binary_expression "param_1 + 0xf8" (identifier "param_1") (+ "+") (number_literal "0xf8")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0xf8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xf8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xf8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xf8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf8)" (( "(") (binary_expression "param_1 + 0xf8" (identifier "param_1") (+ "+") (number_literal "0xf8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0004f080();" (call_expression "FUN_0004f080()" (identifier "FUN_0004f080") (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_001394c5:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_00153870();\n    }" (statement_identifier "LAB_001394c5") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_00153870();\n    }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n      FUN_00153870();\n    }" ({ "{") (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" (identifier "FUN_00153870") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (expression_statement "FUN_00079e80();" (call_expression "FUN_00079e80()" (identifier "FUN_00079e80") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00079e00();" (call_expression "FUN_00079e00()" (identifier "FUN_00079e00") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (labeled_statement "LAB_00139524:\n  local_b8 = 0;" (statement_identifier "LAB_00139524") (: ":") (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" (identifier "local_b8") (= "=") (number_literal "0")) (; ";"))) (labeled_statement "LAB_00139526:\n  do {\n    iVar2 = FUN_000e7e00(0);\n    if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    FUN_0004c6c0();\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  } while( true );" (statement_identifier "LAB_00139526") (: ":") (do_statement "do {\n    iVar2 = FUN_000e7e00(0);\n    if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    FUN_0004c6c0();\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    iVar2 = FUN_000e7e00(0);\n    if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }\n    FUN_0004c6c0();\n    local_b0 = 0;\n    if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }\n  }" ({ "{") (expression_statement "iVar2 = FUN_000e7e00(0);" (assignment_expression "iVar2 = FUN_000e7e00(0)" (identifier "iVar2") (= "=") (call_expression "FUN_000e7e00(0)" (identifier "FUN_000e7e00") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar2 != 100) {\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }" (if "if") (parenthesized_expression "(iVar2 != 100)" (( "(") (binary_expression "iVar2 != 100" (identifier "iVar2") (!= "!=") (number_literal "100")) () ")")) (compound_statement "{\n      iVar2 = FUN_000bfe40(0);\n      if (local_b8 != 0) goto LAB_00139499;\n      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));\n      *(undefined4 *)(param_1 + 0xf8) = 0;\n      FUN_0004f080();\n      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }\n      goto LAB_001394c5;\n    }" ({ "{") (expression_statement "iVar2 = FUN_000bfe40(0);" (assignment_expression "iVar2 = FUN_000bfe40(0)" (identifier "iVar2") (= "=") (call_expression "FUN_000bfe40(0)" (identifier "FUN_000bfe40") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (if_statement "if (local_b8 != 0) goto LAB_00139499;" (if "if") (parenthesized_expression "(local_b8 != 0)" (( "(") (binary_expression "local_b8 != 0" (identifier "local_b8") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00139499;" (goto "goto") (statement_identifier "LAB_00139499") (; ";"))) (expression_statement "FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));" (call_expression "FUN_000c0610(*(undefined4 *)(param_1 + 0xf8))" (identifier "FUN_000c0610") (argument_list "(*(undefined4 *)(param_1 + 0xf8))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0xf8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xf8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf8)" (( "(") (binary_expression "param_1 + 0xf8" (identifier "param_1") (+ "+") (number_literal "0xf8")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0xf8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xf8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xf8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xf8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf8)" (( "(") (binary_expression "param_1 + 0xf8" (identifier "param_1") (+ "+") (number_literal "0xf8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0004f080();" (call_expression "FUN_0004f080()" (identifier "FUN_0004f080") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {\n        iVar2 = 0;\n      }" (if "if") (parenthesized_expression "(((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1))" (( "(") (binary_expression "((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)" (parenthesized_expression "((iVar2 == 0) && ((param_2 & 1) != 0))" (( "(") (binary_expression "(iVar2 == 0) && ((param_2 & 1) != 0)" (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((param_2 & 1) != 0)" (( "(") (binary_expression "(param_2 & 1) != 0" (parenthesized_expression "(param_2 & 1)" (( "(") (binary_expression "param_2 & 1" (identifier "param_2") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar2 = 0x65, !bVar1)" (( "(") (comma_expression "iVar2 = 0x65, !bVar1" (assignment_expression "iVar2 = 0x65" (identifier "iVar2") (= "=") (number_literal "0x65")) (, ",") (unary_expression "!bVar1" (! "!") (identifier "bVar1"))) () ")"))) () ")")) (compound_statement "{\n        iVar2 = 0;\n      }" ({ "{") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (} "}"))) (goto_statement "goto LAB_001394c5;" (goto "goto") (statement_identifier "LAB_001394c5") (; ";")) (} "}"))) (expression_statement "FUN_0004c6c0();" (call_expression "FUN_0004c6c0()" (identifier "FUN_0004c6c0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_b0 = 0;" (assignment_expression "local_b0 = 0" (identifier "local_b0") (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_b8 == 0) {\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }" (if "if") (parenthesized_expression "(local_b8 == 0)" (( "(") (binary_expression "local_b8 == 0" (identifier "local_b8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }\n      goto LAB_00139524;\n    }" ({ "{") (labeled_statement "LAB_001395a8:\n      if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }" (statement_identifier "LAB_001395a8") (: ":") (if_statement "if (local_b0 < *(int *)(param_1 + 0xfc)) {\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }" (if "if") (parenthesized_expression "(local_b0 < *(int *)(param_1 + 0xfc))" (( "(") (binary_expression "local_b0 < *(int *)(param_1 + 0xfc)" (identifier "local_b0") (< "<") (pointer_expression "*(int *)(param_1 + 0xfc)" (* "*") (cast_expression "(int *)(param_1 + 0xfc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xfc)" (( "(") (binary_expression "param_1 + 0xfc" (identifier "param_1") (+ "+") (number_literal "0xfc")) () ")"))))) () ")")) (compound_statement "{\n        do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );\n      }" ({ "{") (do_statement "do {\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        } while( true );" (do "do") (compound_statement "{\n          ppiVar7 = &local_58;\n          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }\n          local_74 = 0;\n          local_70 = 0;\n          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);\n          if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }\n          if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          iVar2 = local_48;\n          if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }\n          if (local_b8 != 0x65) goto LAB_00139ee4;\n          local_b0 = local_b0 + 1;\n          bVar1 = true;\n          if (*(int *)(param_1 + 0xfc) <= local_b0) break;\n        }" ({ "{") (expression_statement "ppiVar7 = &local_58;" (assignment_expression "ppiVar7 = &local_58" (identifier "ppiVar7") (= "=") (pointer_expression "&local_58" (& "&") (identifier "local_58"))) (; ";")) (for_statement "for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }" (for "for") (( "(") (assignment_expression "iVar2 = 0xe" (identifier "iVar2") (= "=") (number_literal "0xe")) (; ";") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar2 = iVar2 + -1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + -1" (identifier "iVar2") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n            *ppiVar7 = (int *)0x0;\n            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;\n          }" ({ "{") (expression_statement "*ppiVar7 = (int *)0x0;" (assignment_expression "*ppiVar7 = (int *)0x0" (pointer_expression "*ppiVar7" (* "*") (identifier "ppiVar7")) (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;" (assignment_expression "ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1" (identifier "ppiVar7") (= "=") (binary_expression "ppiVar7 + (uint)bVar8 * -2 + 1" (binary_expression "ppiVar7 + (uint)bVar8 * -2" (identifier "ppiVar7") (+ "+") (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar8")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" (identifier "local_74") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" (identifier "local_70") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);" (assignment_expression "local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58)" (identifier "local_b8") (= "=") (call_expression "FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58)" (identifier "FUN_0012aa30") (argument_list "(0xfffffffe,0,0,1,0,&local_58)" (( "(") (number_literal "0xfffffffe") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "1") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_58" (& "&") (identifier "local_58")) () ")")))) (; ";")) (if_statement "if (local_b8 == 0) {\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }\n          else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }" (if "if") (parenthesized_expression "(local_b8 == 0)" (( "(") (binary_expression "local_b8 == 0" (identifier "local_b8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            local_b8 = local_54;\n            piVar6 = local_58;\n            if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }\n          }" ({ "{") (expression_statement "local_b8 = local_54;" (assignment_expression "local_b8 = local_54" (identifier "local_b8") (= "=") (identifier "local_54")) (; ";")) (expression_statement "piVar6 = local_58;" (assignment_expression "piVar6 = local_58" (identifier "piVar6") (= "=") (identifier "local_58")) (; ";")) (if_statement "if (local_54 != 0) {\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }" (if "if") (parenthesized_expression "(local_54 != 0)" (( "(") (binary_expression "local_54 != 0" (identifier "local_54") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              local_b8 = FUN_00108b40(&local_74);\n              if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }\n              goto LAB_00139c80;\n            }" ({ "{") (expression_statement "local_b8 = FUN_00108b40(&local_74);" (assignment_expression "local_b8 = FUN_00108b40(&local_74)" (identifier "local_b8") (= "=") (call_expression "FUN_00108b40(&local_74)" (identifier "FUN_00108b40") (argument_list "(&local_74)" (( "(") (pointer_expression "&local_74" (& "&") (identifier "local_74")) () ")")))) (; ";")) (if_statement "if (local_b8 == 0) {\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }" (if "if") (parenthesized_expression "(local_b8 == 0)" (( "(") (binary_expression "local_b8 == 0" (identifier "local_b8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }\n                local_4c = &local_68;\n                local_68 = 0;\n                local_64 = 0;\n                local_60 = 0;\n                local_5c = 3;\n                local_b8 = FUN_0012cf60(0);\n                while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }\n              }" ({ "{") (if_statement "if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }" (if "if") (parenthesized_expression "((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0))" (( "(") (binary_expression "(local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)" (parenthesized_expression "(local_54 == 1)" (( "(") (binary_expression "local_54 == 1" (identifier "local_54") (== "==") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "(iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)" (( "(") (comma_expression "iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0" (assignment_expression "iVar2 = *local_58" (identifier "iVar2") (= "=") (pointer_expression "*local_58" (* "*") (identifier "local_58"))) (, ",") (binary_expression "*(int *)(iVar2 + 0x38) == 0" (pointer_expression "*(int *)(iVar2 + 0x38)" (* "*") (cast_expression "(int *)(iVar2 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x38)" (( "(") (binary_expression "iVar2 + 0x38" (identifier "iVar2") (+ "+") (number_literal "0x38")) () ")")))) (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n                  local_b8 = 0x65;\n                  goto LAB_00139c92;\n                }" ({ "{") (expression_statement "local_b8 = 0x65;" (assignment_expression "local_b8 = 0x65" (identifier "local_b8") (= "=") (number_literal "0x65")) (; ";")) (goto_statement "goto LAB_00139c92;" (goto "goto") (statement_identifier "LAB_00139c92") (; ";")) (} "}"))) (expression_statement "local_4c = &local_68;" (assignment_expression "local_4c = &local_68" (identifier "local_4c") (= "=") (pointer_expression "&local_68" (& "&") (identifier "local_68"))) (; ";")) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" (identifier "local_68") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" (identifier "local_60") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_5c = 3;" (assignment_expression "local_5c = 3" (identifier "local_5c") (= "=") (number_literal "3")) (; ";")) (expression_statement "local_b8 = FUN_0012cf60(0);" (assignment_expression "local_b8 = FUN_0012cf60(0)" (identifier "local_b8") (= "=") (call_expression "FUN_0012cf60(0)" (identifier "FUN_0012cf60") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (while_statement "while (local_b8 == 0) {\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }" (while "while") (parenthesized_expression "(local_b8 == 0)" (( "(") (binary_expression "local_b8 == 0" (identifier "local_b8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  local_b8 = FUN_0012ba30();\n                  if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }\n                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);\n                }" ({ "{") (expression_statement "local_b8 = FUN_0012ba30();" (assignment_expression "local_b8 = FUN_0012ba30()" (identifier "local_b8") (= "=") (call_expression "FUN_0012ba30()" (identifier "FUN_0012ba30") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (local_b8 != 100) {\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }" (if "if") (parenthesized_expression "(local_b8 != 100)" (( "(") (binary_expression "local_b8 != 100" (identifier "local_b8") (!= "!=") (number_literal "100")) () ")")) (compound_statement "{\n                    if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }\n                    break;\n                  }" ({ "{") (if_statement "if (local_b8 == 0) {\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }" (if "if") (parenthesized_expression "(local_b8 == 0)" (( "(") (binary_expression "local_b8 == 0" (identifier "local_b8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);\n                    }" ({ "{") (expression_statement "local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);" (assignment_expression "local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54)" (identifier "local_b8") (= "=") (call_expression "FUN_0010ce90(0xfffffffe,local_58,local_54)" (identifier "FUN_0010ce90") (argument_list "(0xfffffffe,local_58,local_54)" (( "(") (number_literal "0xfffffffe") (, ",") (identifier "local_58") (, ",") (identifier "local_54") () ")")))) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "local_b8 = FUN_00138ea0(local_2c,local_28,local_24);" (assignment_expression "local_b8 = FUN_00138ea0(local_2c,local_28,local_24)" (identifier "local_b8") (= "=") (call_expression "FUN_00138ea0(local_2c,local_28,local_24)" (identifier "FUN_00138ea0") (argument_list "(local_2c,local_28,local_24)" (( "(") (identifier "local_2c") (, ",") (identifier "local_28") (, ",") (identifier "local_24") () ")")))) (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_00139c80;" (goto "goto") (statement_identifier "LAB_00139c80") (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }" (else "else") (compound_statement "{\nLAB_00139c80:\n            piVar6 = local_58;\n            if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }\n          }" ({ "{") (labeled_statement "LAB_00139c80:\n            piVar6 = local_58;" (statement_identifier "LAB_00139c80") (: ":") (expression_statement "piVar6 = local_58;" (assignment_expression "piVar6 = local_58" (identifier "piVar6") (= "=") (identifier "local_58")) (; ";"))) (if_statement "if (0 < local_54) {\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }" (if "if") (parenthesized_expression "(0 < local_54)" (( "(") (binary_expression "0 < local_54" (number_literal "0") (< "<") (identifier "local_54")) () ")")) (compound_statement "{\n              iVar2 = *local_58;\nLAB_00139c92:\n              local_b4 = 0;\n              piVar6 = local_58;\n              do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );\n            }" ({ "{") (expression_statement "iVar2 = *local_58;" (assignment_expression "iVar2 = *local_58" (identifier "iVar2") (= "=") (pointer_expression "*local_58" (* "*") (identifier "local_58"))) (; ";")) (labeled_statement "LAB_00139c92:\n              local_b4 = 0;" (statement_identifier "LAB_00139c92") (: ":") (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" (identifier "local_b4") (= "=") (number_literal "0")) (; ";"))) (expression_statement "piVar6 = local_58;" (assignment_expression "piVar6 = local_58" (identifier "piVar6") (= "=") (identifier "local_58")) (; ";")) (do_statement "do {\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              } while( true );" (do "do") (compound_statement "{\n                if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                local_b4 = local_b4 + 1;\n                iVar2 = piVar6[local_b4];\n              }" ({ "{") (if_statement "if (iVar2 == 0) {\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }\n                else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;\n                }" ({ "{") (labeled_statement "LAB_00139cf4:\n                  if (local_54 <= local_b4 + 1) break;" (statement_identifier "LAB_00139cf4") (: ":") (if_statement "if (local_54 <= local_b4 + 1) break;" (if "if") (parenthesized_expression "(local_54 <= local_b4 + 1)" (( "(") (binary_expression "local_54 <= local_b4 + 1" (identifier "local_54") (<= "<=") (binary_expression "local_b4 + 1" (identifier "local_b4") (+ "+") (number_literal "1"))) () ")")) (break_statement "break;" (break "break") (; ";")))) (} "}")) (else_clause "else {\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }" (else "else") (compound_statement "{\n                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }\n                  iVar4 = *(int *)(iVar2 + 0x34);\n                  if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }\n                  if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }\n                  (*DAT_001bb410)(iVar2);\n                  piVar6 = local_58;\n                  if (local_54 <= local_b4 + 1) break;\n                }" ({ "{") (if_statement "if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))\n                  {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }" (if "if") (parenthesized_expression "((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))" (( "(") (binary_expression "(*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0)" (parenthesized_expression "(*(int *)(iVar2 + 0x38) == 0)" (( "(") (binary_expression "*(int *)(iVar2 + 0x38) == 0" (pointer_expression "*(int *)(iVar2 + 0x38)" (* "*") (cast_expression "(int *)(iVar2 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x38)" (( "(") (binary_expression "iVar2 + 0x38" (identifier "iVar2") (+ "+") (number_literal "0x38")) () ")")))) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0)" (( "(") (comma_expression "iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0" (assignment_expression "iVar4 = *(int *)(iVar2 + 0x40)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar2 + 0x40)" (* "*") (cast_expression "(int *)(iVar2 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x40)" (( "(") (binary_expression "iVar2 + 0x40" (identifier "iVar2") (+ "+") (number_literal "0x40")) () ")"))))) (, ",") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }" ({ "{") (if_statement "if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }" (if "if") (parenthesized_expression "(DAT_001bb3e0 == 0)" (( "(") (binary_expression "DAT_001bb3e0 == 0" (identifier "DAT_001bb3e0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      (*DAT_001bb410)(iVar4);\n                    }" ({ "{") (expression_statement "(*DAT_001bb410)(iVar4);" (call_expression "(*DAT_001bb410)(iVar4)" (parenthesized_expression "(*DAT_001bb410)" (( "(") (pointer_expression "*DAT_001bb410" (* "*") (identifier "DAT_001bb410")) () ")")) (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }" (else "else") (compound_statement "{\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }" ({ "{") (if_statement "if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }" (if "if") (parenthesized_expression "(DAT_001bcdc4 != 0)" (( "(") (binary_expression "DAT_001bcdc4 != 0" (identifier "DAT_001bcdc4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }" ({ "{") (expression_statement "(*DAT_001bb43c)(DAT_001bcdc4);" (call_expression "(*DAT_001bb43c)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb43c)" (( "(") (pointer_expression "*DAT_001bb43c" (* "*") (identifier "DAT_001bb43c")) () ")")) (argument_list "(DAT_001bcdc4)" (( "(") (identifier "DAT_001bcdc4") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar5 = (*DAT_001bb418)(iVar4);" (assignment_expression "iVar5 = (*DAT_001bb418)(iVar4)" (identifier "iVar5") (= "=") (call_expression "(*DAT_001bb418)(iVar4)" (parenthesized_expression "(*DAT_001bb418)" (( "(") (pointer_expression "*DAT_001bb418" (* "*") (identifier "DAT_001bb418")) () ")")) (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")")))) (; ";")) (expression_statement "DAT_001bce04 = DAT_001bce04 + -1;" (assignment_expression "DAT_001bce04 = DAT_001bce04 + -1" (identifier "DAT_001bce04") (= "=") (binary_expression "DAT_001bce04 + -1" (identifier "DAT_001bce04") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "DAT_001bcde0 = DAT_001bcde0 - iVar5;" (assignment_expression "DAT_001bcde0 = DAT_001bcde0 - iVar5" (identifier "DAT_001bcde0") (= "=") (binary_expression "DAT_001bcde0 - iVar5" (identifier "DAT_001bcde0") (- "-") (identifier "iVar5"))) (; ";")) (expression_statement "(*DAT_001bb410)(iVar4);" (call_expression "(*DAT_001bb410)(iVar4)" (parenthesized_expression "(*DAT_001bb410)" (( "(") (pointer_expression "*DAT_001bb410" (* "*") (identifier "DAT_001bb410")) () ")")) (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (if_statement "if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }" (if "if") (parenthesized_expression "(DAT_001bcdc4 != 0)" (( "(") (binary_expression "DAT_001bcdc4 != 0" (identifier "DAT_001bcdc4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }" ({ "{") (expression_statement "(*DAT_001bb444)(DAT_001bcdc4);" (call_expression "(*DAT_001bb444)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb444)" (( "(") (pointer_expression "*DAT_001bb444" (* "*") (identifier "DAT_001bb444")) () ")")) (argument_list "(DAT_001bcdc4)" (( "(") (identifier "DAT_001bcdc4") () ")"))) (; ";")) (} "}"))) (} "}")))) (} "}"))) (if_statement "if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     ) {\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }" (if "if") (parenthesized_expression "((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)\n                     )" (( "(") (binary_expression "(*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)" (parenthesized_expression "(*(char *)(iVar2 + 5) == '\0')" (( "(") (binary_expression "*(char *)(iVar2 + 5) == '\0'" (pointer_expression "*(char *)(iVar2 + 5)" (* "*") (cast_expression "(char *)(iVar2 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 5)" (( "(") (binary_expression "iVar2 + 5" (identifier "iVar2") (+ "+") (number_literal "5")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)" (( "(") (comma_expression "iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0" (assignment_expression "iVar4 = *(int *)(iVar2 + 0x28)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar2 + 0x28)" (* "*") (cast_expression "(int *)(iVar2 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x28)" (( "(") (binary_expression "iVar2 + 0x28" (identifier "iVar2") (+ "+") (number_literal "0x28")) () ")"))))) (, ",") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n                    if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }\n                  }" ({ "{") (if_statement "if (DAT_001bb3e0 == 0) {\n                      (*DAT_001bb410)(iVar4);\n                    }\n                    else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }" (if "if") (parenthesized_expression "(DAT_001bb3e0 == 0)" (( "(") (binary_expression "DAT_001bb3e0 == 0" (identifier "DAT_001bb3e0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      (*DAT_001bb410)(iVar4);\n                    }" ({ "{") (expression_statement "(*DAT_001bb410)(iVar4);" (call_expression "(*DAT_001bb410)(iVar4)" (parenthesized_expression "(*DAT_001bb410)" (( "(") (pointer_expression "*DAT_001bb410" (* "*") (identifier "DAT_001bb410")) () ")")) (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }" (else "else") (compound_statement "{\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }\n                      iVar5 = (*DAT_001bb418)(iVar4);\n                      DAT_001bce04 = DAT_001bce04 + -1;\n                      DAT_001bcde0 = DAT_001bcde0 - iVar5;\n                      (*DAT_001bb410)(iVar4);\n                      if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }\n                    }" ({ "{") (if_statement "if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }" (if "if") (parenthesized_expression "(DAT_001bcdc4 != 0)" (( "(") (binary_expression "DAT_001bcdc4 != 0" (identifier "DAT_001bcdc4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                        (*DAT_001bb43c)(DAT_001bcdc4);\n                      }" ({ "{") (expression_statement "(*DAT_001bb43c)(DAT_001bcdc4);" (call_expression "(*DAT_001bb43c)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb43c)" (( "(") (pointer_expression "*DAT_001bb43c" (* "*") (identifier "DAT_001bb43c")) () ")")) (argument_list "(DAT_001bcdc4)" (( "(") (identifier "DAT_001bcdc4") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar5 = (*DAT_001bb418)(iVar4);" (assignment_expression "iVar5 = (*DAT_001bb418)(iVar4)" (identifier "iVar5") (= "=") (call_expression "(*DAT_001bb418)(iVar4)" (parenthesized_expression "(*DAT_001bb418)" (( "(") (pointer_expression "*DAT_001bb418" (* "*") (identifier "DAT_001bb418")) () ")")) (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")")))) (; ";")) (expression_statement "DAT_001bce04 = DAT_001bce04 + -1;" (assignment_expression "DAT_001bce04 = DAT_001bce04 + -1" (identifier "DAT_001bce04") (= "=") (binary_expression "DAT_001bce04 + -1" (identifier "DAT_001bce04") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "DAT_001bcde0 = DAT_001bcde0 - iVar5;" (assignment_expression "DAT_001bcde0 = DAT_001bcde0 - iVar5" (identifier "DAT_001bcde0") (= "=") (binary_expression "DAT_001bcde0 - iVar5" (identifier "DAT_001bcde0") (- "-") (identifier "iVar5"))) (; ";")) (expression_statement "(*DAT_001bb410)(iVar4);" (call_expression "(*DAT_001bb410)(iVar4)" (parenthesized_expression "(*DAT_001bb410)" (( "(") (pointer_expression "*DAT_001bb410" (* "*") (identifier "DAT_001bb410")) () ")")) (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (if_statement "if (DAT_001bcdc4 != 0) {\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }" (if "if") (parenthesized_expression "(DAT_001bcdc4 != 0)" (( "(") (binary_expression "DAT_001bcdc4 != 0" (identifier "DAT_001bcdc4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                        (*DAT_001bb444)(DAT_001bcdc4);\n                      }" ({ "{") (expression_statement "(*DAT_001bb444)(DAT_001bcdc4);" (call_expression "(*DAT_001bb444)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb444)" (( "(") (pointer_expression "*DAT_001bb444" (* "*") (identifier "DAT_001bb444")) () ")")) (argument_list "(DAT_001bcdc4)" (( "(") (identifier "DAT_001bcdc4") () ")"))) (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "iVar4 = *(int *)(iVar2 + 0x34);" (assignment_expression "iVar4 = *(int *)(iVar2 + 0x34)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar2 + 0x34)" (* "*") (cast_expression "(int *)(iVar2 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x34)" (( "(") (binary_expression "iVar2 + 0x34" (identifier "iVar2") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (if_statement "if (iVar4 != 0) {\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    iVar5 = *(int *)(iVar4 + 0x14);\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }\n                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));\n                    if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }\n                    if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }\n                  }" ({ "{") (expression_statement "iVar5 = *(int *)(iVar4 + 0x14);" (assignment_expression "iVar5 = *(int *)(iVar4 + 0x14)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(iVar4 + 0x14)" (* "*") (cast_expression "(int *)(iVar4 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x14)" (( "(") (binary_expression "iVar4 + 0x14" (identifier "iVar4") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }" (if "if") (parenthesized_expression "(*(int *)(iVar5 + 0xc) != 0)" (( "(") (binary_expression "*(int *)(iVar5 + 0xc) != 0" (pointer_expression "*(int *)(iVar5 + 0xc)" (* "*") (cast_expression "(int *)(iVar5 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xc)" (( "(") (binary_expression "iVar5 + 0xc" (identifier "iVar5") (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));\n                    }" ({ "{") (expression_statement "(*DAT_001bb43c)(*(int *)(iVar5 + 0xc));" (call_expression "(*DAT_001bb43c)(*(int *)(iVar5 + 0xc))" (parenthesized_expression "(*DAT_001bb43c)" (( "(") (pointer_expression "*DAT_001bb43c" (* "*") (identifier "DAT_001bb43c")) () ")")) (argument_list "(*(int *)(iVar5 + 0xc))" (( "(") (pointer_expression "*(int *)(iVar5 + 0xc)" (* "*") (cast_expression "(int *)(iVar5 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xc)" (( "(") (binary_expression "iVar5 + 0xc" (identifier "iVar5") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));" (call_expression "FUN_000c0450(*(undefined4 *)(iVar4 + 0x10))" (identifier "FUN_000c0450") (argument_list "(*(undefined4 *)(iVar4 + 0x10))" (( "(") (pointer_expression "*(undefined4 *)(iVar4 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x10)" (( "(") (binary_expression "iVar4 + 0x10" (identifier "iVar4") (+ "+") (number_literal "0x10")) () ")")))) () ")"))) (; ";")) (if_statement "if (*(int *)(iVar5 + 0x1e0) == 0) {\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }\n                    else {\n                      FUN_0003a540();\n                    }" (if "if") (parenthesized_expression "(*(int *)(iVar5 + 0x1e0) == 0)" (( "(") (binary_expression "*(int *)(iVar5 + 0x1e0) == 0" (pointer_expression "*(int *)(iVar5 + 0x1e0)" (* "*") (cast_expression "(int *)(iVar5 + 0x1e0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x1e0)" (( "(") (binary_expression "iVar5 + 0x1e0" (identifier "iVar5") (+ "+") (number_literal "0x1e0")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }\n                    }" ({ "{") (if_statement "if (DAT_001bb3e0 == 0) {\n                        (*DAT_001bb410)(iVar4);\n                      }\n                      else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }" (if "if") (parenthesized_expression "(DAT_001bb3e0 == 0)" (( "(") (binary_expression "DAT_001bb3e0 == 0" (identifier "DAT_001bb3e0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                        (*DAT_001bb410)(iVar4);\n                      }" ({ "{") (expression_statement "(*DAT_001bb410)(iVar4);" (call_expression "(*DAT_001bb410)(iVar4)" (parenthesized_expression "(*DAT_001bb410)" (( "(") (pointer_expression "*DAT_001bb410" (* "*") (identifier "DAT_001bb410")) () ")")) (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }" (else "else") (compound_statement "{\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }\n                        iVar3 = (*DAT_001bb418)(iVar4);\n                        DAT_001bce04 = DAT_001bce04 + -1;\n                        DAT_001bcde0 = DAT_001bcde0 - iVar3;\n                        (*DAT_001bb410)(iVar4);\n                        if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }\n                      }" ({ "{") (if_statement "if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }" (if "if") (parenthesized_expression "(DAT_001bcdc4 != 0)" (( "(") (binary_expression "DAT_001bcdc4 != 0" (identifier "DAT_001bcdc4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                          (*DAT_001bb43c)(DAT_001bcdc4);\n                        }" ({ "{") (expression_statement "(*DAT_001bb43c)(DAT_001bcdc4);" (call_expression "(*DAT_001bb43c)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb43c)" (( "(") (pointer_expression "*DAT_001bb43c" (* "*") (identifier "DAT_001bb43c")) () ")")) (argument_list "(DAT_001bcdc4)" (( "(") (identifier "DAT_001bcdc4") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar3 = (*DAT_001bb418)(iVar4);" (assignment_expression "iVar3 = (*DAT_001bb418)(iVar4)" (identifier "iVar3") (= "=") (call_expression "(*DAT_001bb418)(iVar4)" (parenthesized_expression "(*DAT_001bb418)" (( "(") (pointer_expression "*DAT_001bb418" (* "*") (identifier "DAT_001bb418")) () ")")) (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")")))) (; ";")) (expression_statement "DAT_001bce04 = DAT_001bce04 + -1;" (assignment_expression "DAT_001bce04 = DAT_001bce04 + -1" (identifier "DAT_001bce04") (= "=") (binary_expression "DAT_001bce04 + -1" (identifier "DAT_001bce04") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "DAT_001bcde0 = DAT_001bcde0 - iVar3;" (assignment_expression "DAT_001bcde0 = DAT_001bcde0 - iVar3" (identifier "DAT_001bcde0") (= "=") (binary_expression "DAT_001bcde0 - iVar3" (identifier "DAT_001bcde0") (- "-") (identifier "iVar3"))) (; ";")) (expression_statement "(*DAT_001bb410)(iVar4);" (call_expression "(*DAT_001bb410)(iVar4)" (parenthesized_expression "(*DAT_001bb410)" (( "(") (pointer_expression "*DAT_001bb410" (* "*") (identifier "DAT_001bb410")) () ")")) (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (if_statement "if (DAT_001bcdc4 != 0) {\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }" (if "if") (parenthesized_expression "(DAT_001bcdc4 != 0)" (( "(") (binary_expression "DAT_001bcdc4 != 0" (identifier "DAT_001bcdc4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                          (*DAT_001bb444)(DAT_001bcdc4);\n                        }" ({ "{") (expression_statement "(*DAT_001bb444)(DAT_001bcdc4);" (call_expression "(*DAT_001bb444)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb444)" (( "(") (pointer_expression "*DAT_001bb444" (* "*") (identifier "DAT_001bb444")) () ")")) (argument_list "(DAT_001bcdc4)" (( "(") (identifier "DAT_001bcdc4") () ")"))) (; ";")) (} "}"))) (} "}")))) (} "}")) (else_clause "else {\n                      FUN_0003a540();\n                    }" (else "else") (compound_statement "{\n                      FUN_0003a540();\n                    }" ({ "{") (expression_statement "FUN_0003a540();" (call_expression "FUN_0003a540()" (identifier "FUN_0003a540") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (if_statement "if (*(int *)(iVar5 + 0xc) != 0) {\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }" (if "if") (parenthesized_expression "(*(int *)(iVar5 + 0xc) != 0)" (( "(") (binary_expression "*(int *)(iVar5 + 0xc) != 0" (pointer_expression "*(int *)(iVar5 + 0xc)" (* "*") (cast_expression "(int *)(iVar5 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xc)" (( "(") (binary_expression "iVar5 + 0xc" (identifier "iVar5") (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));\n                    }" ({ "{") (expression_statement "(*DAT_001bb444)(*(int *)(iVar5 + 0xc));" (call_expression "(*DAT_001bb444)(*(int *)(iVar5 + 0xc))" (parenthesized_expression "(*DAT_001bb444)" (( "(") (pointer_expression "*DAT_001bb444" (* "*") (identifier "DAT_001bb444")) () ")")) (argument_list "(*(int *)(iVar5 + 0xc))" (( "(") (pointer_expression "*(int *)(iVar5 + 0xc)" (* "*") (cast_expression "(int *)(iVar5 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xc)" (( "(") (binary_expression "iVar5 + 0xc" (identifier "iVar5") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (DAT_001bb3e0 != 0) {\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }" (if "if") (parenthesized_expression "(DAT_001bb3e0 != 0)" (( "(") (binary_expression "DAT_001bb3e0 != 0" (identifier "DAT_001bb3e0") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }\n                    iVar4 = (*DAT_001bb418)(iVar2);\n                    DAT_001bce04 = DAT_001bce04 + -1;\n                    DAT_001bcde0 = DAT_001bcde0 - iVar4;\n                    (*DAT_001bb410)(iVar2);\n                    piVar6 = local_58;\n                    if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }\n                    goto LAB_00139cf4;\n                  }" ({ "{") (if_statement "if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }" (if "if") (parenthesized_expression "(DAT_001bcdc4 != 0)" (( "(") (binary_expression "DAT_001bcdc4 != 0" (identifier "DAT_001bcdc4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      (*DAT_001bb43c)(DAT_001bcdc4);\n                    }" ({ "{") (expression_statement "(*DAT_001bb43c)(DAT_001bcdc4);" (call_expression "(*DAT_001bb43c)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb43c)" (( "(") (pointer_expression "*DAT_001bb43c" (* "*") (identifier "DAT_001bb43c")) () ")")) (argument_list "(DAT_001bcdc4)" (( "(") (identifier "DAT_001bcdc4") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar4 = (*DAT_001bb418)(iVar2);" (assignment_expression "iVar4 = (*DAT_001bb418)(iVar2)" (identifier "iVar4") (= "=") (call_expression "(*DAT_001bb418)(iVar2)" (parenthesized_expression "(*DAT_001bb418)" (( "(") (pointer_expression "*DAT_001bb418" (* "*") (identifier "DAT_001bb418")) () ")")) (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")")))) (; ";")) (expression_statement "DAT_001bce04 = DAT_001bce04 + -1;" (assignment_expression "DAT_001bce04 = DAT_001bce04 + -1" (identifier "DAT_001bce04") (= "=") (binary_expression "DAT_001bce04 + -1" (identifier "DAT_001bce04") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "DAT_001bcde0 = DAT_001bcde0 - iVar4;" (assignment_expression "DAT_001bcde0 = DAT_001bcde0 - iVar4" (identifier "DAT_001bcde0") (= "=") (binary_expression "DAT_001bcde0 - iVar4" (identifier "DAT_001bcde0") (- "-") (identifier "iVar4"))) (; ";")) (expression_statement "(*DAT_001bb410)(iVar2);" (call_expression "(*DAT_001bb410)(iVar2)" (parenthesized_expression "(*DAT_001bb410)" (( "(") (pointer_expression "*DAT_001bb410" (* "*") (identifier "DAT_001bb410")) () ")")) (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (expression_statement "piVar6 = local_58;" (assignment_expression "piVar6 = local_58" (identifier "piVar6") (= "=") (identifier "local_58")) (; ";")) (if_statement "if (DAT_001bcdc4 != 0) {\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }" (if "if") (parenthesized_expression "(DAT_001bcdc4 != 0)" (( "(") (binary_expression "DAT_001bcdc4 != 0" (identifier "DAT_001bcdc4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      (*DAT_001bb444)(DAT_001bcdc4);\n                      piVar6 = local_58;\n                    }" ({ "{") (expression_statement "(*DAT_001bb444)(DAT_001bcdc4);" (call_expression "(*DAT_001bb444)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb444)" (( "(") (pointer_expression "*DAT_001bb444" (* "*") (identifier "DAT_001bb444")) () ")")) (argument_list "(DAT_001bcdc4)" (( "(") (identifier "DAT_001bcdc4") () ")"))) (; ";")) (expression_statement "piVar6 = local_58;" (assignment_expression "piVar6 = local_58" (identifier "piVar6") (= "=") (identifier "local_58")) (; ";")) (} "}"))) (goto_statement "goto LAB_00139cf4;" (goto "goto") (statement_identifier "LAB_00139cf4") (; ";")) (} "}"))) (expression_statement "(*DAT_001bb410)(iVar2);" (call_expression "(*DAT_001bb410)(iVar2)" (parenthesized_expression "(*DAT_001bb410)" (( "(") (pointer_expression "*DAT_001bb410" (* "*") (identifier "DAT_001bb410")) () ")")) (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (expression_statement "piVar6 = local_58;" (assignment_expression "piVar6 = local_58" (identifier "piVar6") (= "=") (identifier "local_58")) (; ";")) (if_statement "if (local_54 <= local_b4 + 1) break;" (if "if") (parenthesized_expression "(local_54 <= local_b4 + 1)" (( "(") (binary_expression "local_54 <= local_b4 + 1" (identifier "local_54") (<= "<=") (binary_expression "local_b4 + 1" (identifier "local_b4") (+ "+") (number_literal "1"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")))) (expression_statement "local_b4 = local_b4 + 1;" (assignment_expression "local_b4 = local_b4 + 1" (identifier "local_b4") (= "=") (binary_expression "local_b4 + 1" (identifier "local_b4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar2 = piVar6[local_b4];" (assignment_expression "iVar2 = piVar6[local_b4]" (identifier "iVar2") (= "=") (subscript_expression "piVar6[local_b4]" (identifier "piVar6") ([ "[") (identifier "local_b4") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (} "}")))) (if_statement "if (piVar6 != (int *)0x0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }" (if "if") (parenthesized_expression "(piVar6 != (int *)0x0)" (( "(") (binary_expression "piVar6 != (int *)0x0" (identifier "piVar6") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }" ({ "{") (if_statement "if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(piVar6);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }" (if "if") (parenthesized_expression "(DAT_001bb3e0 == 0)" (( "(") (binary_expression "DAT_001bb3e0 == 0" (identifier "DAT_001bb3e0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              (*DAT_001bb410)(piVar6);\n            }" ({ "{") (expression_statement "(*DAT_001bb410)(piVar6);" (call_expression "(*DAT_001bb410)(piVar6)" (parenthesized_expression "(*DAT_001bb410)" (( "(") (pointer_expression "*DAT_001bb410" (* "*") (identifier "DAT_001bb410")) () ")")) (argument_list "(piVar6)" (( "(") (identifier "piVar6") () ")"))) (; ";")) (} "}")) (else_clause "else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }" (else "else") (compound_statement "{\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar2 = (*DAT_001bb418)(piVar6);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar2;\n              (*DAT_001bb410)(piVar6);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }" ({ "{") (if_statement "if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }" (if "if") (parenthesized_expression "(DAT_001bcdc4 != 0)" (( "(") (binary_expression "DAT_001bcdc4 != 0" (identifier "DAT_001bcdc4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }" ({ "{") (expression_statement "(*DAT_001bb43c)(DAT_001bcdc4);" (call_expression "(*DAT_001bb43c)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb43c)" (( "(") (pointer_expression "*DAT_001bb43c" (* "*") (identifier "DAT_001bb43c")) () ")")) (argument_list "(DAT_001bcdc4)" (( "(") (identifier "DAT_001bcdc4") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar2 = (*DAT_001bb418)(piVar6);" (assignment_expression "iVar2 = (*DAT_001bb418)(piVar6)" (identifier "iVar2") (= "=") (call_expression "(*DAT_001bb418)(piVar6)" (parenthesized_expression "(*DAT_001bb418)" (( "(") (pointer_expression "*DAT_001bb418" (* "*") (identifier "DAT_001bb418")) () ")")) (argument_list "(piVar6)" (( "(") (identifier "piVar6") () ")")))) (; ";")) (expression_statement "DAT_001bce04 = DAT_001bce04 + -1;" (assignment_expression "DAT_001bce04 = DAT_001bce04 + -1" (identifier "DAT_001bce04") (= "=") (binary_expression "DAT_001bce04 + -1" (identifier "DAT_001bce04") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "DAT_001bcde0 = DAT_001bcde0 - iVar2;" (assignment_expression "DAT_001bcde0 = DAT_001bcde0 - iVar2" (identifier "DAT_001bcde0") (= "=") (binary_expression "DAT_001bcde0 - iVar2" (identifier "DAT_001bcde0") (- "-") (identifier "iVar2"))) (; ";")) (expression_statement "(*DAT_001bb410)(piVar6);" (call_expression "(*DAT_001bb410)(piVar6)" (parenthesized_expression "(*DAT_001bb410)" (( "(") (pointer_expression "*DAT_001bb410" (* "*") (identifier "DAT_001bb410")) () ")")) (argument_list "(piVar6)" (( "(") (identifier "piVar6") () ")"))) (; ";")) (if_statement "if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }" (if "if") (parenthesized_expression "(DAT_001bcdc4 != 0)" (( "(") (binary_expression "DAT_001bcdc4 != 0" (identifier "DAT_001bcdc4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }" ({ "{") (expression_statement "(*DAT_001bb444)(DAT_001bcdc4);" (call_expression "(*DAT_001bb444)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb444)" (( "(") (pointer_expression "*DAT_001bb444" (* "*") (identifier "DAT_001bb444")) () ")")) (argument_list "(DAT_001bcdc4)" (( "(") (identifier "DAT_001bcdc4") () ")"))) (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "iVar2 = local_48;" (assignment_expression "iVar2 = local_48" (identifier "iVar2") (= "=") (identifier "local_48")) (; ";")) (if_statement "if (local_48 != 0) {\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }" (if "if") (parenthesized_expression "(local_48 != 0)" (( "(") (binary_expression "local_48 != 0" (identifier "local_48") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }\n          }" ({ "{") (if_statement "if (DAT_001bb3e0 == 0) {\n              (*DAT_001bb410)(local_48);\n            }\n            else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }" (if "if") (parenthesized_expression "(DAT_001bb3e0 == 0)" (( "(") (binary_expression "DAT_001bb3e0 == 0" (identifier "DAT_001bb3e0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              (*DAT_001bb410)(local_48);\n            }" ({ "{") (expression_statement "(*DAT_001bb410)(local_48);" (call_expression "(*DAT_001bb410)(local_48)" (parenthesized_expression "(*DAT_001bb410)" (( "(") (pointer_expression "*DAT_001bb410" (* "*") (identifier "DAT_001bb410")) () ")")) (argument_list "(local_48)" (( "(") (identifier "local_48") () ")"))) (; ";")) (} "}")) (else_clause "else {\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }" (else "else") (compound_statement "{\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }\n              iVar4 = (*DAT_001bb418)(iVar2);\n              DAT_001bce04 = DAT_001bce04 + -1;\n              DAT_001bcde0 = DAT_001bcde0 - iVar4;\n              (*DAT_001bb410)(iVar2);\n              if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }\n            }" ({ "{") (if_statement "if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }" (if "if") (parenthesized_expression "(DAT_001bcdc4 != 0)" (( "(") (binary_expression "DAT_001bcdc4 != 0" (identifier "DAT_001bcdc4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                (*DAT_001bb43c)(DAT_001bcdc4);\n              }" ({ "{") (expression_statement "(*DAT_001bb43c)(DAT_001bcdc4);" (call_expression "(*DAT_001bb43c)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb43c)" (( "(") (pointer_expression "*DAT_001bb43c" (* "*") (identifier "DAT_001bb43c")) () ")")) (argument_list "(DAT_001bcdc4)" (( "(") (identifier "DAT_001bcdc4") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar4 = (*DAT_001bb418)(iVar2);" (assignment_expression "iVar4 = (*DAT_001bb418)(iVar2)" (identifier "iVar4") (= "=") (call_expression "(*DAT_001bb418)(iVar2)" (parenthesized_expression "(*DAT_001bb418)" (( "(") (pointer_expression "*DAT_001bb418" (* "*") (identifier "DAT_001bb418")) () ")")) (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")")))) (; ";")) (expression_statement "DAT_001bce04 = DAT_001bce04 + -1;" (assignment_expression "DAT_001bce04 = DAT_001bce04 + -1" (identifier "DAT_001bce04") (= "=") (binary_expression "DAT_001bce04 + -1" (identifier "DAT_001bce04") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "DAT_001bcde0 = DAT_001bcde0 - iVar4;" (assignment_expression "DAT_001bcde0 = DAT_001bcde0 - iVar4" (identifier "DAT_001bcde0") (= "=") (binary_expression "DAT_001bcde0 - iVar4" (identifier "DAT_001bcde0") (- "-") (identifier "iVar4"))) (; ";")) (expression_statement "(*DAT_001bb410)(iVar2);" (call_expression "(*DAT_001bb410)(iVar2)" (parenthesized_expression "(*DAT_001bb410)" (( "(") (pointer_expression "*DAT_001bb410" (* "*") (identifier "DAT_001bb410")) () ")")) (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (if_statement "if (DAT_001bcdc4 != 0) {\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }" (if "if") (parenthesized_expression "(DAT_001bcdc4 != 0)" (( "(") (binary_expression "DAT_001bcdc4 != 0" (identifier "DAT_001bcdc4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                (*DAT_001bb444)(DAT_001bcdc4);\n              }" ({ "{") (expression_statement "(*DAT_001bb444)(DAT_001bcdc4);" (call_expression "(*DAT_001bb444)(DAT_001bcdc4)" (parenthesized_expression "(*DAT_001bb444)" (( "(") (pointer_expression "*DAT_001bb444" (* "*") (identifier "DAT_001bb444")) () ")")) (argument_list "(DAT_001bcdc4)" (( "(") (identifier "DAT_001bcdc4") () ")"))) (; ";")) (} "}"))) (} "}")))) (} "}"))) (if_statement "if (local_b8 != 0x65) goto LAB_00139ee4;" (if "if") (parenthesized_expression "(local_b8 != 0x65)" (( "(") (binary_expression "local_b8 != 0x65" (identifier "local_b8") (!= "!=") (number_literal "0x65")) () ")")) (goto_statement "goto LAB_00139ee4;" (goto "goto") (statement_identifier "LAB_00139ee4") (; ";"))) (expression_statement "local_b0 = local_b0 + 1;" (assignment_expression "local_b0 = local_b0 + 1" (identifier "local_b0") (= "=") (binary_expression "local_b0 + 1" (identifier "local_b0") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" (identifier "bVar1") (= "=") (true "true")) (; ";")) (if_statement "if (*(int *)(param_1 + 0xfc) <= local_b0) break;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0xfc) <= local_b0)" (( "(") (binary_expression "*(int *)(param_1 + 0xfc) <= local_b0" (pointer_expression "*(int *)(param_1 + 0xfc)" (* "*") (cast_expression "(int *)(param_1 + 0xfc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xfc)" (( "(") (binary_expression "param_1 + 0xfc" (identifier "param_1") (+ "+") (number_literal "0xfc")) () ")")))) (<= "<=") (identifier "local_b0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))) (goto_statement "goto LAB_00139524;" (goto "goto") (statement_identifier "LAB_00139524") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (labeled_statement "LAB_00139ee4:\n  local_b0 = local_b0 + 1;" (statement_identifier "LAB_00139ee4") (: ":") (expression_statement "local_b0 = local_b0 + 1;" (assignment_expression "local_b0 = local_b0 + 1" (identifier "local_b0") (= "=") (binary_expression "local_b0 + 1" (identifier "local_b0") (+ "+") (number_literal "1"))) (; ";"))) (if_statement "if (local_b8 != 0) goto LAB_00139526;" (if "if") (parenthesized_expression "(local_b8 != 0)" (( "(") (binary_expression "local_b8 != 0" (identifier "local_b8") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00139526;" (goto "goto") (statement_identifier "LAB_00139526") (; ";"))) (goto_statement "goto LAB_001395a8;" (goto "goto") (statement_identifier "LAB_001395a8") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Type propagation algorithm not settling */

int __regparm3 function_1(type_1 *p,int var_13)

{
  type_2 var_18;
  int var_6;
  type_3 *var_16;
  char *var_35;
  type_4 *var_39;
  type_5 *var_47;
  bool bVar5;
  type_6 *var_15;
  type_7 var_31;
  int var_11;
  int extraout_EDX;
  int extraout_EDX_00;
  type_8 **var_50;
  type_4 *var_42;
  type_4 *var_40;
  type_9 *pFVar11;
  type_4 *var_37;
  type_4 *var_43;
  type_4 *var_44;
  type_8 *var_45;
  type_4 *var_41;
  int var_1;
  type_10 bVar17;
  type_11 iVar18;
  type_1 *pFVar19;
  char *in_stack_ffffff2c;
  char *zTerm;
  type_1 *in_stack_ffffff34;
  type_9 *in_stack_ffffff38;
  type_12 *var_32;
  type_13 *psVar21;
  int var_3;
  int var_46;
  int var_22;
  int local_9c;
  type_6 *var_14;
  type_12 *var_25;
  type_11 iMaxLevel;
  type_14 filter;
  type_9 csr;
  
  bVar17 = 0;
  var_6 = *(int *)(var_1 + 0x14);
  var_14 = (type_6 *)0x0;
  var_3 = var_2(p,0x1b,&var_14,(type_15 **)in_stack_ffffff34);
  if (var_3 != 0) {
LAB_00139499:
    var_11 = var_3;
    pFVar19 = (type_1 *)p->pSegments;
    var_4((type_5 *)pFVar19);
    p->pSegments = (type_5 *)0x0;
    var_5(pFVar19);
LAB_001394c5:
    if (var_6 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
      var_7();
    }
    return var_11;
  }
  var_8(var_14,p->iPrevLangid,var_9(in_stack_ffffff38,in_stack_ffffff34));
  var_8(var_14,p->nIndex,var_9(in_stack_ffffff38,in_stack_ffffff34));
  bVar5 = false;
LAB_00139524:
  var_3 = 0;
LAB_00139526:
  do {
    var_11 = var_10(var_14);
    var_15 = var_14;
    if (var_11 != 100) {
      var_11 = var_12(var_14);
      if (var_3 != 0) goto LAB_00139499;
      pFVar19 = (type_1 *)p->pSegments;
      var_4((type_5 *)pFVar19);
      p->pSegments = (type_5 *)0x0;
      var_5(pFVar19);
      if (((var_11 == 0) && ((var_13 & 1U) != 0)) && (var_11 = 0x65, !bVar5)) {
        var_11 = 0;
      }
      goto LAB_001394c5;
    }
    if (var_14 == (type_6 *)0x0) {
LAB_0013a20e:
      local_9c = 0;
    }
    else {
      var_11 = extraout_EDX;
      if (*(type_16 **)(*(int *)var_14 + 0xc) != (type_16 *)0x0) {
        (*sqlite3Config.mutex.xMutexEnter)(*(type_16 **)(*(int *)var_14 + 0xc));
        var_11 = extraout_EDX_00;
      }
      var_16 = *(type_3 **)(var_15 + 0x74);
      if ((var_16 == (type_3 *)0x0) || (*(short *)(var_15 + 0x88) == 0)) {
        psVar21 = *(type_13 **)var_15;
        psVar21->errCode = 0x19;
        var_17(psVar21,var_11);
        goto LAB_0013a20e;
      }
      var_18 = var_16->flags;
      if ((var_18 & 4) == 0) {
        if ((var_18 & 8) == 0) {
          local_9c = 0;
          if ((var_18 & 0x12) != 0) {
            iVar18 = var_19(var_16);
            local_9c = (int)iVar18;
          }
        }
        else {
          iVar18 = var_20((var_16->u).r);
          local_9c = (int)iVar18;
        }
      }
      else {
        local_9c = (var_16->u).nZero;
      }
    }
    zTerm = (char *)0x139593;
    var_21(var_15);
    var_22 = 0;
    if (var_3 == 0) {
LAB_001395a8:
      if (var_22 < p->nIndex) {
        do {
          var_25 = (type_12 *)0x0;
          pFVar11 = &csr;
          for (var_11 = 0xe; var_11 != 0; var_11 = var_11 + -1) {
            pFVar11->apSegment = (type_8 **)0x0;
            pFVar11 = (type_9 *)((int)pFVar11 + (type_7)bVar17 * -8 + 4);
          }
          iMaxLevel._0_4_ = (type_12 *)0x0;
          iMaxLevel._4_4_ = 0;
          pFVar11 = &csr;
          var_3 = var_23(p,local_9c,var_22,-2,(char *)0x0,0,1,0,&csr);
          if (var_3 == 0) {
            var_3 = csr.nSegment;
            if (csr.nSegment != 0) {
              var_3 = var_24(p,local_9c,var_22,&iMaxLevel);
              var_31 = iMaxLevel._4_4_;
              var_32 = (type_12 *)iMaxLevel;
              if (var_3 == 0) {
                if ((csr.nSegment == 1) &&
                   (var_45 = *csr.apSegment, var_45->ppNextElem == (type_17 **)0x0)) {
                  var_3 = 0x65;
                  if (var_25 == (type_12 *)0x0) goto LAB_00139c92;
                  goto LAB_0013979c;
                }
                csr.pFilter = &filter;
                filter.zTerm = (char *)0x0;
                filter.nTerm = 0;
                filter.iCol = 0;
                filter.flags = 3;
                var_3 = var_26((type_1 *)0x0,pFVar11,in_stack_ffffff2c,(int)zTerm)
                ;
                while (var_3 == 0) {
                  zTerm = (char *)0x139706;
                  var_3 = var_27(in_stack_ffffff34,in_stack_ffffff38);
                  if (var_3 != 100) {
                    if ((var_3 == 0) &&
                       (in_stack_ffffff2c = (char *)csr.nSegment,
                       var_3 = var_28(p,local_9c,var_22,-2,csr.apSegment,csr.nSegment
                                                  ), var_3 == 0)) {
                      if (var_25 == (type_12 *)0x0) goto LAB_00139c80;
                      in_stack_ffffff2c = (char *)0x0;
                      var_3 = var_29(p,var_32,(type_18)var_31,(int)zTerm);
                      if ((var_3 == 0) &&
                         ((var_30(var_31,iMaxLevel._4_4_) !=
                          var_30(var_31 - iMaxLevel._4_4_,
                                   (type_7)(var_32 < (type_12 *)iMaxLevel))) !=
                          (int)((var_31 - iMaxLevel._4_4_) -
                               (type_7)(var_32 < (type_12 *)iMaxLevel)) < 0)) {
                        var_3 = var_33(p,var_25->nLeafData,
                                                       var_9(zTerm,in_stack_ffffff2c));
                      }
                    }
                    break;
                  }
                  in_stack_ffffff2c = (char *)csr.nDoclist;
                  var_3 = var_34((type_1 *)csr.nTerm,(type_12 **)csr.aDoclist,
                                              csr.nDoclist,zTerm,(int)in_stack_ffffff34,
                                              (char *)in_stack_ffffff38,(int)var_32);
                }
              }
              goto LAB_00139790;
            }
            var_50 = csr.apSegment;
            if (var_25 != (type_12 *)0x0) goto LAB_0013979c;
          }
          else {
LAB_00139790:
            if (var_25 != (type_12 *)0x0) {
LAB_0013979c:
              var_35 = var_25->aData;
              var_32 = var_25;
              if (var_35 != (char *)0x0) {
                if (sqlite3Config.bMemstat == 0) {
                  (*sqlite3Config.m.xFree)(var_35);
                }
                else {
                  if (mem0.mutex != (type_16 *)0x0) {
                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                  }
                  var_11 = (*sqlite3Config.m.xSize)(var_35);
                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                  (*sqlite3Config.m.xFree)(var_35);
                  if (mem0.mutex != (type_16 *)0x0) {
                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                  }
                }
              }
              var_35 = var_32->zMalloc;
              if (var_35 != (char *)0x0) {
                if (sqlite3Config.bMemstat == 0) {
                  (*sqlite3Config.m.xFree)(var_35);
                }
                else {
                  if (mem0.mutex != (type_16 *)0x0) {
                    (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                  }
                  var_11 = (*sqlite3Config.m.xSize)(var_35);
                  sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                  sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                  (*sqlite3Config.m.xFree)(var_35);
                  if (mem0.mutex != (type_16 *)0x0) {
                    (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                  }
                }
              }
              if (var_32->pTree != (type_4 *)0x0) {
                var_44 = var_32->pTree->pLeftmost;
                if (var_44->pParent != (type_4 *)0x0) {
                  var_43 = var_44->pParent->pLeftmost;
                  if (var_43->pParent != (type_4 *)0x0) {
                    var_42 = var_43->pParent->pLeftmost;
                    if (var_42->pParent != (type_4 *)0x0) {
                      var_41 = var_42->pParent->pLeftmost;
                      if (var_41->pParent != (type_4 *)0x0) {
                        var_40 = var_41->pParent->pLeftmost;
                        if (var_40->pParent != (type_4 *)0x0) {
                          var_37 = var_40->pParent->pLeftmost;
                          zTerm = (char *)0x1398d5;
                          var_36(var_37->pParent);
                          do {
                            var_39 = var_37->pRight;
                            if ((type_4 *)var_37->aData != var_37 + 1) {
                              var_38((type_4 *)var_37->aData);
                            }
                            var_38(var_37->zMalloc);
                            var_38(var_37);
                            var_37 = var_39;
                          } while (var_39 != (type_4 *)0x0);
                        }
                        do {
                          while( true ) {
                            var_37 = var_40->pRight;
                            if ((type_4 *)var_40->aData != var_40 + 1) {
                              var_38((type_4 *)var_40->aData);
                            }
                            var_35 = var_40->zMalloc;
                            if (var_35 == (char *)0x0) break;
                            if (sqlite3Config.bMemstat == 0) {
                              (*sqlite3Config.m.xFree)(var_35);
                              break;
                            }
                            if (mem0.mutex != (type_16 *)0x0) {
                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                            }
                            var_11 = (*sqlite3Config.m.xSize)(var_35);
                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                            (*sqlite3Config.m.xFree)(var_35);
                            if (mem0.mutex != (type_16 *)0x0) {
                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                              break;
                            }
                            if (sqlite3Config.bMemstat != 0) goto LAB_0013a46f;
                            (*sqlite3Config.m.xFree)(var_40);
LAB_0013a552:
                            var_40 = var_37;
                            if (var_37 == (type_4 *)0x0) goto LAB_0013a5ca;
                          }
                          if (sqlite3Config.bMemstat == 0) {
                            (*sqlite3Config.m.xFree)(var_40);
                            goto LAB_0013a552;
                          }
                          if (mem0.mutex != (type_16 *)0x0) {
                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                          }
LAB_0013a46f:
                          var_11 = (*sqlite3Config.m.xSize)(var_40);
                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                          (*sqlite3Config.m.xFree)(var_40);
                          if (mem0.mutex != (type_16 *)0x0) {
                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                          }
                          var_40 = var_37;
                        } while (var_37 != (type_4 *)0x0);
                      }
LAB_0013a5ca:
                      do {
                        var_40 = var_41->pRight;
                        var_37 = (type_4 *)var_41->aData;
                        if ((var_37 != var_41 + 1) && (var_37 != (type_4 *)0x0)) {
                          if (sqlite3Config.bMemstat == 0) {
                            (*sqlite3Config.m.xFree)(var_37);
                          }
                          else {
                            if (mem0.mutex != (type_16 *)0x0) {
                              (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                            }
                            var_11 = (*sqlite3Config.m.xSize)(var_37);
                            sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                            sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                            (*sqlite3Config.m.xFree)(var_37);
                            if (mem0.mutex != (type_16 *)0x0) {
                              (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                            }
                          }
                        }
                        var_35 = var_41->zMalloc;
                        if (var_35 != (char *)0x0) {
                          if (sqlite3Config.bMemstat == 0) {
                            (*sqlite3Config.m.xFree)(var_35);
                            goto LAB_0013a6bf;
                          }
                          if (mem0.mutex != (type_16 *)0x0) {
                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                          }
                          var_11 = (*sqlite3Config.m.xSize)(var_35);
                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                          (*sqlite3Config.m.xFree)(var_35);
                          if (mem0.mutex != (type_16 *)0x0) {
                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                            goto LAB_0013a6bf;
                          }
                          if (sqlite3Config.bMemstat == 0) {
                            (*sqlite3Config.m.xFree)(var_41);
                            goto LAB_0013a6d2;
                          }
LAB_0013a58d:
                          var_11 = (*sqlite3Config.m.xSize)(var_41);
                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                          (*sqlite3Config.m.xFree)(var_41);
                          if (mem0.mutex != (type_16 *)0x0) {
                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                          }
                          var_41 = var_40;
                          if (var_40 == (type_4 *)0x0) break;
                          goto LAB_0013a5ca;
                        }
LAB_0013a6bf:
                        if (sqlite3Config.bMemstat != 0) {
                          if (mem0.mutex != (type_16 *)0x0) {
                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                          }
                          goto LAB_0013a58d;
                        }
                        (*sqlite3Config.m.xFree)(var_41);
LAB_0013a6d2:
                        var_41 = var_40;
                      } while (var_40 != (type_4 *)0x0);
                    }
LAB_0013a2a1:
                    do {
                      var_41 = var_42->pRight;
                      var_40 = (type_4 *)var_42->aData;
                      if ((var_40 != var_42 + 1) && (var_40 != (type_4 *)0x0)) {
                        if (sqlite3Config.bMemstat == 0) {
                          (*sqlite3Config.m.xFree)(var_40);
                        }
                        else {
                          if (mem0.mutex != (type_16 *)0x0) {
                            (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                          }
                          var_11 = (*sqlite3Config.m.xSize)(var_40);
                          sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                          sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                          (*sqlite3Config.m.xFree)(var_40);
                          if (mem0.mutex != (type_16 *)0x0) {
                            (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                          }
                        }
                      }
                      var_35 = var_42->zMalloc;
                      if (var_35 != (char *)0x0) {
                        if (sqlite3Config.bMemstat == 0) {
                          (*sqlite3Config.m.xFree)(var_35);
                          goto LAB_0013a393;
                        }
                        if (mem0.mutex != (type_16 *)0x0) {
                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                        }
                        var_11 = (*sqlite3Config.m.xSize)(var_35);
                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                        (*sqlite3Config.m.xFree)(var_35);
                        if (mem0.mutex != (type_16 *)0x0) {
                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                          goto LAB_0013a393;
                        }
                        if (sqlite3Config.bMemstat == 0) {
                          (*sqlite3Config.m.xFree)(var_42);
                          goto LAB_0013a3a6;
                        }
LAB_0013a265:
                        var_11 = (*sqlite3Config.m.xSize)(var_42);
                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                        (*sqlite3Config.m.xFree)(var_42);
                        if (mem0.mutex != (type_16 *)0x0) {
                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                        }
                        var_42 = var_41;
                        if (var_41 == (type_4 *)0x0) break;
                        goto LAB_0013a2a1;
                      }
LAB_0013a393:
                      if (sqlite3Config.bMemstat != 0) {
                        if (mem0.mutex != (type_16 *)0x0) {
                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                        }
                        goto LAB_0013a265;
                      }
                      (*sqlite3Config.m.xFree)(var_42);
LAB_0013a3a6:
                      var_42 = var_41;
                    } while (var_41 != (type_4 *)0x0);
                  }
LAB_0013998a:
                  do {
                    var_42 = var_43->pRight;
                    var_41 = (type_4 *)var_43->aData;
                    if ((var_41 != var_43 + 1) && (var_41 != (type_4 *)0x0)) {
                      if (sqlite3Config.bMemstat == 0) {
                        (*sqlite3Config.m.xFree)(var_41);
                      }
                      else {
                        if (mem0.mutex != (type_16 *)0x0) {
                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                        }
                        var_11 = (*sqlite3Config.m.xSize)(var_41);
                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                        (*sqlite3Config.m.xFree)(var_41);
                        if (mem0.mutex != (type_16 *)0x0) {
                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                        }
                      }
                    }
                    var_35 = var_43->zMalloc;
                    if (var_35 != (char *)0x0) {
                      if (sqlite3Config.bMemstat == 0) {
                        (*sqlite3Config.m.xFree)(var_35);
                        goto LAB_00139a7f;
                      }
                      if (mem0.mutex != (type_16 *)0x0) {
                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                      }
                      var_11 = (*sqlite3Config.m.xSize)(var_35);
                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                      (*sqlite3Config.m.xFree)(var_35);
                      if (mem0.mutex != (type_16 *)0x0) {
                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                        goto LAB_00139a7f;
                      }
                      if (sqlite3Config.bMemstat == 0) {
                        (*sqlite3Config.m.xFree)(var_43);
                        goto LAB_00139a92;
                      }
LAB_0013994d:
                      var_11 = (*sqlite3Config.m.xSize)(var_43);
                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                      (*sqlite3Config.m.xFree)(var_43);
                      if (mem0.mutex != (type_16 *)0x0) {
                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                      }
                      var_43 = var_42;
                      if (var_42 == (type_4 *)0x0) break;
                      goto LAB_0013998a;
                    }
LAB_00139a7f:
                    if (sqlite3Config.bMemstat != 0) {
                      if (mem0.mutex != (type_16 *)0x0) {
                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                      }
                      goto LAB_0013994d;
                    }
                    (*sqlite3Config.m.xFree)(var_43);
LAB_00139a92:
                    var_43 = var_42;
                  } while (var_42 != (type_4 *)0x0);
                }
LAB_00139b0a:
                do {
                  var_43 = var_44->pRight;
                  var_42 = (type_4 *)var_44->aData;
                  if ((var_42 != var_44 + 1) && (var_42 != (type_4 *)0x0)) {
                    if (sqlite3Config.bMemstat == 0) {
                      (*sqlite3Config.m.xFree)(var_42);
                    }
                    else {
                      if (mem0.mutex != (type_16 *)0x0) {
                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                      }
                      var_11 = (*sqlite3Config.m.xSize)(var_42);
                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                      (*sqlite3Config.m.xFree)(var_42);
                      if (mem0.mutex != (type_16 *)0x0) {
                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                      }
                    }
                  }
                  var_35 = var_44->zMalloc;
                  if (var_35 != (char *)0x0) {
                    if (sqlite3Config.bMemstat == 0) {
                      (*sqlite3Config.m.xFree)(var_35);
                      goto LAB_00139bff;
                    }
                    if (mem0.mutex != (type_16 *)0x0) {
                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                    }
                    var_11 = (*sqlite3Config.m.xSize)(var_35);
                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                    (*sqlite3Config.m.xFree)(var_35);
                    if (mem0.mutex != (type_16 *)0x0) {
                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                      goto LAB_00139bff;
                    }
                    if (sqlite3Config.bMemstat == 0) {
                      (*sqlite3Config.m.xFree)(var_44);
                      goto LAB_00139c12;
                    }
LAB_00139acd:
                    var_11 = (*sqlite3Config.m.xSize)(var_44);
                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                    (*sqlite3Config.m.xFree)(var_44);
                    if (mem0.mutex != (type_16 *)0x0) {
                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                    }
                    var_44 = var_43;
                    if (var_43 == (type_4 *)0x0) break;
                    goto LAB_00139b0a;
                  }
LAB_00139bff:
                  if (sqlite3Config.bMemstat != 0) {
                    if (mem0.mutex != (type_16 *)0x0) {
                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                    }
                    goto LAB_00139acd;
                  }
                  (*sqlite3Config.m.xFree)(var_44);
LAB_00139c12:
                  var_44 = var_43;
                } while (var_43 != (type_4 *)0x0);
              }
              if (sqlite3Config.bMemstat == 0) {
                (*sqlite3Config.m.xFree)(var_32);
              }
              else {
                if (mem0.mutex != (type_16 *)0x0) {
                  (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                }
                var_11 = (*sqlite3Config.m.xSize)(var_32);
                sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                (*sqlite3Config.m.xFree)(var_32);
                if (mem0.mutex != (type_16 *)0x0) {
                  (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                }
              }
            }
LAB_00139c80:
            var_50 = csr.apSegment;
            if (0 < csr.nSegment) {
              var_45 = *csr.apSegment;
LAB_00139c92:
              var_46 = 0;
              var_50 = csr.apSegment;
              do {
                if (var_45 == (type_8 *)0x0) {
LAB_00139cf4:
                  if (csr.nSegment <= var_46 + 1) break;
                }
                else {
                  if ((var_45->ppNextElem == (type_17 **)0x0) &&
                     (var_35 = var_45->zTerm, var_35 != (char *)0x0)) {
                    if (sqlite3Config.bMemstat == 0) {
                      (*sqlite3Config.m.xFree)(var_35);
                    }
                    else {
                      if (mem0.mutex != (type_16 *)0x0) {
                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                      }
                      var_11 = (*sqlite3Config.m.xSize)(var_35);
                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                      (*sqlite3Config.m.xFree)(var_35);
                      if (mem0.mutex != (type_16 *)0x0) {
                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                      }
                    }
                  }
                  if ((var_45->rootOnly == '\0') &&
                     (var_35 = var_45->aNode, var_35 != (char *)0x0)) {
                    if (sqlite3Config.bMemstat == 0) {
                      (*sqlite3Config.m.xFree)(var_35);
                    }
                    else {
                      if (mem0.mutex != (type_16 *)0x0) {
                        (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                      }
                      var_11 = (*sqlite3Config.m.xSize)(var_35);
                      sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                      sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                      (*sqlite3Config.m.xFree)(var_35);
                      if (mem0.mutex != (type_16 *)0x0) {
                        (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                      }
                    }
                  }
                  var_47 = var_45->pBlob;
                  if (var_47 != (type_5 *)0x0) {
                    psVar21 = *(type_13 **)(var_47 + 0x14);
                    if (psVar21->mutex != (type_16 *)0x0) {
                      (*sqlite3Config.mutex.xMutexEnter)(psVar21->mutex);
                    }
                    var_48(*(type_6 **)(var_47 + 0x10));
                    if (psVar21->pnBytesFreed == (int *)0x0) {
                      if (sqlite3Config.bMemstat == 0) {
                        (*sqlite3Config.m.xFree)(var_47);
                      }
                      else {
                        if (mem0.mutex != (type_16 *)0x0) {
                          (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                        }
                        var_11 = (*sqlite3Config.m.xSize)(var_47);
                        sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                        sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                        (*sqlite3Config.m.xFree)(var_47);
                        if (mem0.mutex != (type_16 *)0x0) {
                          (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                        }
                      }
                    }
                    else {
                      zTerm = (char *)0x139f87;
                      var_49(psVar21,var_47);
                    }
                    if (psVar21->mutex != (type_16 *)0x0) {
                      (*sqlite3Config.mutex.xMutexLeave)(psVar21->mutex);
                    }
                  }
                  if (sqlite3Config.bMemstat != 0) {
                    if (mem0.mutex != (type_16 *)0x0) {
                      (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
                    }
                    var_11 = (*sqlite3Config.m.xSize)(var_45);
                    sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
                    sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
                    (*sqlite3Config.m.xFree)(var_45);
                    var_50 = csr.apSegment;
                    if (mem0.mutex != (type_16 *)0x0) {
                      (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
                      var_50 = csr.apSegment;
                    }
                    goto LAB_00139cf4;
                  }
                  (*sqlite3Config.m.xFree)(var_45);
                  var_50 = csr.apSegment;
                  if (csr.nSegment <= var_46 + 1) break;
                }
                var_46 = var_46 + 1;
                var_45 = var_50[var_46];
              } while( true );
            }
          }
          if (var_50 != (type_8 **)0x0) {
            if (sqlite3Config.bMemstat == 0) {
              (*sqlite3Config.m.xFree)(var_50);
            }
            else {
              if (mem0.mutex != (type_16 *)0x0) {
                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
              }
              var_11 = (*sqlite3Config.m.xSize)(var_50);
              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
              (*sqlite3Config.m.xFree)(var_50);
              if (mem0.mutex != (type_16 *)0x0) {
                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
              }
            }
          }
          var_35 = csr.aBuffer;
          if (csr.aBuffer != (char *)0x0) {
            if (sqlite3Config.bMemstat == 0) {
              (*sqlite3Config.m.xFree)(csr.aBuffer);
            }
            else {
              if (mem0.mutex != (type_16 *)0x0) {
                (*sqlite3Config.mutex.xMutexEnter)(mem0.mutex);
              }
              var_11 = (*sqlite3Config.m.xSize)(var_35);
              sqlite3Stat.nowValue[9] = sqlite3Stat.nowValue[9] - 1;
              sqlite3Stat.nowValue[0] = sqlite3Stat.nowValue[0] - var_11;
              (*sqlite3Config.m.xFree)(var_35);
              if (mem0.mutex != (type_16 *)0x0) {
                (*sqlite3Config.mutex.xMutexLeave)(mem0.mutex);
              }
            }
          }
          if (var_3 != 0x65) goto LAB_00139ee4;
          var_22 = var_22 + 1;
          bVar5 = true;
          if (p->nIndex <= var_22) break;
        } while( true );
      }
      goto LAB_00139524;
    }
  } while( true );
LAB_00139ee4:
  var_22 = var_22 + 1;
  if (var_3 != 0) goto LAB_00139526;
  goto LAB_001395a8;
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (return_statement (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (false))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (unary_expression argument: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (for_statement initializer: (assignment_expression left: (identifier) right: (number_literal)) condition: (binary_expression left: (identifier) right: (number_literal)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal) (number_literal) (number_literal) (number_literal) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (identifier) (identifier))))))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))))))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (break_statement)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))))))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (break_statement))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (identifier))))) condition: (parenthesized_expression (true)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (true))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (break_statement))) condition: (parenthesized_expression (true)))))) (goto_statement label: (statement_identifier))))) condition: (parenthesized_expression (true)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))))

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Removing unreachable block (ram,0x0013954a) */
/* WARNING: Removing unreachable block (ram,0x00139553) */
/* WARNING: Removing unreachable block (ram,0x00139560) */
/* WARNING: Removing unreachable block (ram,0x0013956b) */
/* WARNING: Removing unreachable block (ram,0x0013a200) */
/* WARNING: Removing unreachable block (ram,0x00139579) */
/* WARNING: Removing unreachable block (ram,0x0013a408) */
/* WARNING: Removing unreachable block (ram,0x0013a843) */
/* WARNING: Removing unreachable block (ram,0x0013a854) */
/* WARNING: Removing unreachable block (ram,0x0013a411) */
/* WARNING: Removing unreachable block (ram,0x00139586) */
/* WARNING: Removing unreachable block (ram,0x00139758) */
/* WARNING: Removing unreachable block (ram,0x0013977b) */
/* WARNING: Removing unreachable block (ram,0x0013a80d) */
/* WARNING: Removing unreachable block (ram,0x0013978b) */
/* WARNING: Removing unreachable block (ram,0x0013979c) */
/* WARNING: Removing unreachable block (ram,0x001397ad) */
/* WARNING: Removing unreachable block (ram,0x0013a180) */
/* WARNING: Removing unreachable block (ram,0x001397bb) */
/* WARNING: Removing unreachable block (ram,0x001397c5) */
/* WARNING: Removing unreachable block (ram,0x001397d2) */
/* WARNING: Removing unreachable block (ram,0x001397ff) */
/* WARNING: Removing unreachable block (ram,0x0013980c) */
/* WARNING: Removing unreachable block (ram,0x00139817) */
/* WARNING: Removing unreachable block (ram,0x0013a170) */
/* WARNING: Removing unreachable block (ram,0x00139822) */
/* WARNING: Removing unreachable block (ram,0x0013982c) */
/* WARNING: Removing unreachable block (ram,0x00139837) */
/* WARNING: Removing unreachable block (ram,0x00139860) */
/* WARNING: Removing unreachable block (ram,0x0013986b) */
/* WARNING: Removing unreachable block (ram,0x00139879) */
/* WARNING: Removing unreachable block (ram,0x0013988a) */
/* WARNING: Removing unreachable block (ram,0x00139897) */
/* WARNING: Removing unreachable block (ram,0x0013a238) */
/* WARNING: Removing unreachable block (ram,0x001398a5) */
/* WARNING: Removing unreachable block (ram,0x0013a780) */
/* WARNING: Removing unreachable block (ram,0x001398b6) */
/* WARNING: Removing unreachable block (ram,0x001398c3) */
/* WARNING: Removing unreachable block (ram,0x0013990f) */
/* WARNING: Removing unreachable block (ram,0x001398e8) */
/* WARNING: Removing unreachable block (ram,0x0013991c) */
/* WARNING: Removing unreachable block (ram,0x001398f2) */
/* WARNING: Removing unreachable block (ram,0x0013a430) */
/* WARNING: Removing unreachable block (ram,0x0013990d) */
/* WARNING: Removing unreachable block (ram,0x0013a43c) */
/* WARNING: Removing unreachable block (ram,0x0013a4ab) */
/* WARNING: Removing unreachable block (ram,0x0013a4bc) */
/* WARNING: Removing unreachable block (ram,0x0013a4c8) */
/* WARNING: Removing unreachable block (ram,0x0013a4d2) */
/* WARNING: Removing unreachable block (ram,0x0013a6f0) */
/* WARNING: Removing unreachable block (ram,0x0013a4da) */
/* WARNING: Removing unreachable block (ram,0x0013a4ee) */
/* WARNING: Removing unreachable block (ram,0x0013a501) */
/* WARNING: Removing unreachable block (ram,0x0013a531) */
/* WARNING: Removing unreachable block (ram,0x0013a53f) */
/* WARNING: Removing unreachable block (ram,0x0013a547) */
/* WARNING: Removing unreachable block (ram,0x0013a450) */
/* WARNING: Removing unreachable block (ram,0x0013a464) */
/* WARNING: Removing unreachable block (ram,0x0013a758) */
/* WARNING: Removing unreachable block (ram,0x0013a46f) */
/* WARNING: Removing unreachable block (ram,0x0013a494) */
/* WARNING: Removing unreachable block (ram,0x0013a49f) */
/* WARNING: Removing unreachable block (ram,0x0013a763) */
/* WARNING: Removing unreachable block (ram,0x0013a552) */
/* WARNING: Removing unreachable block (ram,0x0013a55e) */
/* WARNING: Removing unreachable block (ram,0x0013a5ca) */
/* WARNING: Removing unreachable block (ram,0x0013a5de) */
/* WARNING: Removing unreachable block (ram,0x0013a5e2) */
/* WARNING: Removing unreachable block (ram,0x0013a720) */
/* WARNING: Removing unreachable block (ram,0x0013a5ea) */
/* WARNING: Removing unreachable block (ram,0x0013a5f4) */
/* WARNING: Removing unreachable block (ram,0x0013a5ff) */
/* WARNING: Removing unreachable block (ram,0x0013a778) */
/* WARNING: Removing unreachable block (ram,0x0013a62c) */
/* WARNING: Removing unreachable block (ram,0x0013a640) */
/* WARNING: Removing unreachable block (ram,0x0013a647) */
/* WARNING: Removing unreachable block (ram,0x0013a708) */
/* WARNING: Removing unreachable block (ram,0x0013a64f) */
/* WARNING: Removing unreachable block (ram,0x0013a663) */
/* WARNING: Removing unreachable block (ram,0x0013a676) */
/* WARNING: Removing unreachable block (ram,0x0013a6b1) */
/* WARNING: Removing unreachable block (ram,0x0013a6bf) */
/* WARNING: Removing unreachable block (ram,0x0013a6c7) */
/* WARNING: Removing unreachable block (ram,0x0013a568) */
/* WARNING: Removing unreachable block (ram,0x0013a57c) */
/* WARNING: Removing unreachable block (ram,0x0013a587) */
/* WARNING: Removing unreachable block (ram,0x0013a738) */
/* WARNING: Removing unreachable block (ram,0x0013a58d) */
/* WARNING: Removing unreachable block (ram,0x0013a5b3) */
/* WARNING: Removing unreachable block (ram,0x0013a5be) */
/* WARNING: Removing unreachable block (ram,0x0013a743) */
/* WARNING: Removing unreachable block (ram,0x0013a6d2) */
/* WARNING: Removing unreachable block (ram,0x0013a6de) */
/* WARNING: Removing unreachable block (ram,0x0013a2a1) */
/* WARNING: Removing unreachable block (ram,0x0013a2b5) */
/* WARNING: Removing unreachable block (ram,0x0013a2b9) */
/* WARNING: Removing unreachable block (ram,0x0013a3d0) */
/* WARNING: Removing unreachable block (ram,0x0013a2c1) */
/* WARNING: Removing unreachable block (ram,0x0013a2cb) */
/* WARNING: Removing unreachable block (ram,0x0013a2d6) */
/* WARNING: Removing unreachable block (ram,0x0013a400) */
/* WARNING: Removing unreachable block (ram,0x0013a303) */
/* WARNING: Removing unreachable block (ram,0x0013a318) */
/* WARNING: Removing unreachable block (ram,0x0013a31f) */
/* WARNING: Removing unreachable block (ram,0x0013a3c0) */
/* WARNING: Removing unreachable block (ram,0x0013a327) */
/* WARNING: Removing unreachable block (ram,0x0013a33b) */
/* WARNING: Removing unreachable block (ram,0x0013a34e) */
/* WARNING: Removing unreachable block (ram,0x0013a385) */
/* WARNING: Removing unreachable block (ram,0x0013a393) */
/* WARNING: Removing unreachable block (ram,0x0013a39b) */
/* WARNING: Removing unreachable block (ram,0x0013a240) */
/* WARNING: Removing unreachable block (ram,0x0013a254) */
/* WARNING: Removing unreachable block (ram,0x0013a25f) */
/* WARNING: Removing unreachable block (ram,0x0013a3e8) */
/* WARNING: Removing unreachable block (ram,0x0013a265) */
/* WARNING: Removing unreachable block (ram,0x0013a28a) */
/* WARNING: Removing unreachable block (ram,0x0013a295) */
/* WARNING: Removing unreachable block (ram,0x0013a3f3) */
/* WARNING: Removing unreachable block (ram,0x0013a3a6) */
/* WARNING: Removing unreachable block (ram,0x0013a3b2) */
/* WARNING: Removing unreachable block (ram,0x0013998a) */
/* WARNING: Removing unreachable block (ram,0x0013999e) */
/* WARNING: Removing unreachable block (ram,0x001399a2) */
/* WARNING: Removing unreachable block (ram,0x0013a120) */
/* WARNING: Removing unreachable block (ram,0x001399aa) */
/* WARNING: Removing unreachable block (ram,0x001399b4) */
/* WARNING: Removing unreachable block (ram,0x001399bf) */
/* WARNING: Removing unreachable block (ram,0x0013a1f0) */
/* WARNING: Removing unreachable block (ram,0x001399ec) */
/* WARNING: Removing unreachable block (ram,0x00139a00) */
/* WARNING: Removing unreachable block (ram,0x00139a07) */
/* WARNING: Removing unreachable block (ram,0x0013a040) */
/* WARNING: Removing unreachable block (ram,0x00139a0f) */
/* WARNING: Removing unreachable block (ram,0x00139a23) */
/* WARNING: Removing unreachable block (ram,0x00139a36) */
/* WARNING: Removing unreachable block (ram,0x00139a71) */
/* WARNING: Removing unreachable block (ram,0x00139a7f) */
/* WARNING: Removing unreachable block (ram,0x00139a87) */
/* WARNING: Removing unreachable block (ram,0x00139928) */
/* WARNING: Removing unreachable block (ram,0x0013993c) */
/* WARNING: Removing unreachable block (ram,0x00139947) */
/* WARNING: Removing unreachable block (ram,0x0013a1a0) */
/* WARNING: Removing unreachable block (ram,0x0013994d) */
/* WARNING: Removing unreachable block (ram,0x00139973) */
/* WARNING: Removing unreachable block (ram,0x0013997e) */
/* WARNING: Removing unreachable block (ram,0x0013a1ab) */
/* WARNING: Removing unreachable block (ram,0x00139a92) */
/* WARNING: Removing unreachable block (ram,0x00139a9e) */
/* WARNING: Removing unreachable block (ram,0x00139b0a) */
/* WARNING: Removing unreachable block (ram,0x00139b1e) */
/* WARNING: Removing unreachable block (ram,0x00139b22) */
/* WARNING: Removing unreachable block (ram,0x0013a0e8) */
/* WARNING: Removing unreachable block (ram,0x00139b2a) */
/* WARNING: Removing unreachable block (ram,0x00139b34) */
/* WARNING: Removing unreachable block (ram,0x00139b3f) */
/* WARNING: Removing unreachable block (ram,0x0013a198) */
/* WARNING: Removing unreachable block (ram,0x00139b6c) */
/* WARNING: Removing unreachable block (ram,0x00139b80) */
/* WARNING: Removing unreachable block (ram,0x00139b87) */
/* WARNING: Removing unreachable block (ram,0x0013a0d0) */
/* WARNING: Removing unreachable block (ram,0x00139b8f) */
/* WARNING: Removing unreachable block (ram,0x00139ba3) */
/* WARNING: Removing unreachable block (ram,0x00139bb6) */
/* WARNING: Removing unreachable block (ram,0x00139bf1) */
/* WARNING: Removing unreachable block (ram,0x00139bff) */
/* WARNING: Removing unreachable block (ram,0x00139c07) */
/* WARNING: Removing unreachable block (ram,0x00139aa8) */
/* WARNING: Removing unreachable block (ram,0x00139abc) */
/* WARNING: Removing unreachable block (ram,0x00139ac7) */
/* WARNING: Removing unreachable block (ram,0x0013a100) */
/* WARNING: Removing unreachable block (ram,0x00139acd) */
/* WARNING: Removing unreachable block (ram,0x00139af3) */
/* WARNING: Removing unreachable block (ram,0x00139afe) */
/* WARNING: Removing unreachable block (ram,0x0013a10b) */
/* WARNING: Removing unreachable block (ram,0x00139c12) */
/* WARNING: Removing unreachable block (ram,0x00139c1e) */
/* WARNING: Removing unreachable block (ram,0x0013a158) */
/* WARNING: Removing unreachable block (ram,0x00139c29) */
/* WARNING: Removing unreachable block (ram,0x00139c33) */
/* WARNING: Removing unreachable block (ram,0x00139c3e) */
/* WARNING: Removing unreachable block (ram,0x00139c6b) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

int __regparm3 MASKED(int param_1,uint param_2)

{
  bool bVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int *piVar6;
  int **ppiVar7;
  int in_GS_OFFSET;
  byte bVar8;
  int local_b8;
  int local_b4;
  int local_b0;
  undefined4 local_74;
  undefined4 local_70;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined4 local_5c;
  int *local_58;
  int local_54;
  undefined4 *local_4c;
  int local_48;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  int local_20;
  
  bVar8 = 0;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_b8 = FUN_00101610();
  if (local_b8 != 0) {
LAB_00139499:
    iVar2 = local_b8;
    FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));
    *(undefined4 *)(param_1 + 0xf8) = 0;
    FUN_0004f080();
LAB_001394c5:
    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
      FUN_00153870();
    }
    return iVar2;
  }
  FUN_00079e80();
  FUN_00079e00();
  bVar1 = false;
LAB_00139524:
  local_b8 = 0;
LAB_00139526:
  do {
    iVar2 = FUN_000e7e00(0);
    if (iVar2 != 100) {
      iVar2 = FUN_000bfe40(0);
      if (local_b8 != 0) goto LAB_00139499;
      FUN_000c0610(*(undefined4 *)(param_1 + 0xf8));
      *(undefined4 *)(param_1 + 0xf8) = 0;
      FUN_0004f080();
      if (((iVar2 == 0) && ((param_2 & 1) != 0)) && (iVar2 = 0x65, !bVar1)) {
        iVar2 = 0;
      }
      goto LAB_001394c5;
    }
    FUN_0004c6c0();
    local_b0 = 0;
    if (local_b8 == 0) {
LAB_001395a8:
      if (local_b0 < *(int *)(param_1 + 0xfc)) {
        do {
          ppiVar7 = &local_58;
          for (iVar2 = 0xe; iVar2 != 0; iVar2 = iVar2 + -1) {
            *ppiVar7 = (int *)0x0;
            ppiVar7 = ppiVar7 + (uint)bVar8 * -2 + 1;
          }
          local_74 = 0;
          local_70 = 0;
          local_b8 = FUN_0012aa30(0xfffffffe,0,0,1,0,&local_58);
          if (local_b8 == 0) {
            local_b8 = local_54;
            piVar6 = local_58;
            if (local_54 != 0) {
              local_b8 = FUN_00108b40(&local_74);
              if (local_b8 == 0) {
                if ((local_54 == 1) && (iVar2 = *local_58, *(int *)(iVar2 + 0x38) == 0)) {
                  local_b8 = 0x65;
                  goto LAB_00139c92;
                }
                local_4c = &local_68;
                local_68 = 0;
                local_64 = 0;
                local_60 = 0;
                local_5c = 3;
                local_b8 = FUN_0012cf60(0);
                while (local_b8 == 0) {
                  local_b8 = FUN_0012ba30();
                  if (local_b8 != 100) {
                    if (local_b8 == 0) {
                      local_b8 = FUN_0010ce90(0xfffffffe,local_58,local_54);
                    }
                    break;
                  }
                  local_b8 = FUN_00138ea0(local_2c,local_28,local_24);
                }
              }
              goto LAB_00139c80;
            }
          }
          else {
LAB_00139c80:
            piVar6 = local_58;
            if (0 < local_54) {
              iVar2 = *local_58;
LAB_00139c92:
              local_b4 = 0;
              piVar6 = local_58;
              do {
                if (iVar2 == 0) {
LAB_00139cf4:
                  if (local_54 <= local_b4 + 1) break;
                }
                else {
                  if ((*(int *)(iVar2 + 0x38) == 0) && (iVar4 = *(int *)(iVar2 + 0x40), iVar4 != 0))
                  {
                    if (DAT_001bb3e0 == 0) {
                      (*DAT_001bb410)(iVar4);
                    }
                    else {
                      if (DAT_001bcdc4 != 0) {
                        (*DAT_001bb43c)(DAT_001bcdc4);
                      }
                      iVar5 = (*DAT_001bb418)(iVar4);
                      DAT_001bce04 = DAT_001bce04 + -1;
                      DAT_001bcde0 = DAT_001bcde0 - iVar5;
                      (*DAT_001bb410)(iVar4);
                      if (DAT_001bcdc4 != 0) {
                        (*DAT_001bb444)(DAT_001bcdc4);
                      }
                    }
                  }
                  if ((*(char *)(iVar2 + 5) == '\0') && (iVar4 = *(int *)(iVar2 + 0x28), iVar4 != 0)
                     ) {
                    if (DAT_001bb3e0 == 0) {
                      (*DAT_001bb410)(iVar4);
                    }
                    else {
                      if (DAT_001bcdc4 != 0) {
                        (*DAT_001bb43c)(DAT_001bcdc4);
                      }
                      iVar5 = (*DAT_001bb418)(iVar4);
                      DAT_001bce04 = DAT_001bce04 + -1;
                      DAT_001bcde0 = DAT_001bcde0 - iVar5;
                      (*DAT_001bb410)(iVar4);
                      if (DAT_001bcdc4 != 0) {
                        (*DAT_001bb444)(DAT_001bcdc4);
                      }
                    }
                  }
                  iVar4 = *(int *)(iVar2 + 0x34);
                  if (iVar4 != 0) {
                    iVar5 = *(int *)(iVar4 + 0x14);
                    if (*(int *)(iVar5 + 0xc) != 0) {
                      (*DAT_001bb43c)(*(int *)(iVar5 + 0xc));
                    }
                    FUN_000c0450(*(undefined4 *)(iVar4 + 0x10));
                    if (*(int *)(iVar5 + 0x1e0) == 0) {
                      if (DAT_001bb3e0 == 0) {
                        (*DAT_001bb410)(iVar4);
                      }
                      else {
                        if (DAT_001bcdc4 != 0) {
                          (*DAT_001bb43c)(DAT_001bcdc4);
                        }
                        iVar3 = (*DAT_001bb418)(iVar4);
                        DAT_001bce04 = DAT_001bce04 + -1;
                        DAT_001bcde0 = DAT_001bcde0 - iVar3;
                        (*DAT_001bb410)(iVar4);
                        if (DAT_001bcdc4 != 0) {
                          (*DAT_001bb444)(DAT_001bcdc4);
                        }
                      }
                    }
                    else {
                      FUN_0003a540();
                    }
                    if (*(int *)(iVar5 + 0xc) != 0) {
                      (*DAT_001bb444)(*(int *)(iVar5 + 0xc));
                    }
                  }
                  if (DAT_001bb3e0 != 0) {
                    if (DAT_001bcdc4 != 0) {
                      (*DAT_001bb43c)(DAT_001bcdc4);
                    }
                    iVar4 = (*DAT_001bb418)(iVar2);
                    DAT_001bce04 = DAT_001bce04 + -1;
                    DAT_001bcde0 = DAT_001bcde0 - iVar4;
                    (*DAT_001bb410)(iVar2);
                    piVar6 = local_58;
                    if (DAT_001bcdc4 != 0) {
                      (*DAT_001bb444)(DAT_001bcdc4);
                      piVar6 = local_58;
                    }
                    goto LAB_00139cf4;
                  }
                  (*DAT_001bb410)(iVar2);
                  piVar6 = local_58;
                  if (local_54 <= local_b4 + 1) break;
                }
                local_b4 = local_b4 + 1;
                iVar2 = piVar6[local_b4];
              } while( true );
            }
          }
          if (piVar6 != (int *)0x0) {
            if (DAT_001bb3e0 == 0) {
              (*DAT_001bb410)(piVar6);
            }
            else {
              if (DAT_001bcdc4 != 0) {
                (*DAT_001bb43c)(DAT_001bcdc4);
              }
              iVar2 = (*DAT_001bb418)(piVar6);
              DAT_001bce04 = DAT_001bce04 + -1;
              DAT_001bcde0 = DAT_001bcde0 - iVar2;
              (*DAT_001bb410)(piVar6);
              if (DAT_001bcdc4 != 0) {
                (*DAT_001bb444)(DAT_001bcdc4);
              }
            }
          }
          iVar2 = local_48;
          if (local_48 != 0) {
            if (DAT_001bb3e0 == 0) {
              (*DAT_001bb410)(local_48);
            }
            else {
              if (DAT_001bcdc4 != 0) {
                (*DAT_001bb43c)(DAT_001bcdc4);
              }
              iVar4 = (*DAT_001bb418)(iVar2);
              DAT_001bce04 = DAT_001bce04 + -1;
              DAT_001bcde0 = DAT_001bcde0 - iVar4;
              (*DAT_001bb410)(iVar2);
              if (DAT_001bcdc4 != 0) {
                (*DAT_001bb444)(DAT_001bcdc4);
              }
            }
          }
          if (local_b8 != 0x65) goto LAB_00139ee4;
          local_b0 = local_b0 + 1;
          bVar1 = true;
          if (*(int *)(param_1 + 0xfc) <= local_b0) break;
        } while( true );
      }
      goto LAB_00139524;
    }
  } while( true );
LAB_00139ee4:
  local_b0 = local_b0 + 1;
  if (local_b8 != 0) goto LAB_00139526;
  goto LAB_001395a8;
}

