
void fts5FlushOneHash(Fts5Index *p)

{
  bool bVar1;
  char *pcVar2;
  u8 *puVar3;
  Fts5Structure *pFVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  Fts5StructureSegment *pFVar8;
  int iVar9;
  Fts5HashEntry *pFVar10;
  undefined4 uVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  Fts5Hash *pFVar15;
  Fts5Config *pFVar16;
  int extraout_v1;
  int extraout_v1_00;
  int iVar17;
  Fts5Index *p_00;
  uint uVar18;
  Fts5Index *pFVar19;
  int iVar20;
  int iVar21;
  u8 *puVar22;
  int iVar23;
  int iVar24;
  int iVar25;
  int iVar26;
  int in_t9;
  int iVar27;
  code *pcVar28;
  code *pcVar29;
  int iVar30;
  undefined4 in_stack_fffffefc;
  int iStack_fc;
  uint uStack_f4;
  Fts5Structure *pStruct;
  int pgnoLast;
  char *zTerm;
  u8 *pDoclist;
  int nDoclist;
  int bDummy;
  int nPos;
  u32 dummy;
  i64 iDelta;
  Fts5SegWriter writer;
  
  iVar30 = in_t9 + 0x4add0;
  piVar5 = *(int **)(in_t9 + 0x4324c);
  p_00 = (Fts5Index *)&p->pStruct;
  pgnoLast = 0;
  pFVar15 = p->pHash;
  iVar6 = *piVar5;
  pStruct = fts5StructureRead(p);
  if (p->rc == 0) {
    if (1999 < pStruct->nSegment) {
      p->rc = 0xd;
      goto LAB_00118864;
    }
    iVar20 = (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x444))(pStruct);
    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))();
    if (iVar20 == 0) {
LAB_00118c00:
      iVar7 = p->rc;
    }
    else {
      iVar21 = p->pConfig->pgsz;
      iVar7 = p->pConfig->eDetail;
      (*(code *)(*(int *)(iVar30 + -0x7d30) + 0x7a50))(p,&writer,iVar20);
      if (p->rc == 0) {
        iVar23 = (*(code *)(*(int *)(iVar30 + -0x7eb0) + 0x2fcc))(pFVar15,0,0,&pFVar15->pScan);
        p->rc = iVar23;
        if ((iVar23 != 0) ||
           (iVar23 = *(int *)(iVar30 + -0x7ef0), pFVar15->pScan == (Fts5HashEntry *)0x0))
        goto LAB_00118afc;
        iVar24 = *(int *)(iVar30 + -0x7ee0);
        iVar9 = *(int *)(iVar30 + -0x7f54);
        pcVar28 = (code *)(*(int *)(iVar30 + -0x7ee0) + 0x19d0);
        pcVar29 = (code *)(*(int *)(iVar30 + -0x7ef0) + 0x27e0);
        do {
          (*(code *)(iVar23 + 0x3d7c))(pFVar15,&zTerm,&pDoclist,&nDoclist);
          pcVar2 = zTerm;
          uVar11 = (**(code **)(iVar30 + -0x7bec))(zTerm);
          (*(code *)(iVar24 + 0x2384))(p,&writer,uVar11,pcVar2);
          if (p->rc != 0) goto LAB_00118afc;
          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar21) {
            (**(code **)(iVar30 + -0x7b80))(writer.writer.buf.p + writer.writer.buf.n,pDoclist);
            writer.writer.buf.n = writer.writer.buf.n + nDoclist;
            if (p->rc != 0) goto LAB_00118afc;
          }
          else {
            iStack_fc = 0;
            uStack_f4 = 0;
            iDelta._0_4_ = 0;
            iVar27 = 0;
            iDelta._4_4_ = 0;
            bVar1 = 0 < nDoclist;
            while (bVar1) {
              iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta);
              iVar12 = iVar27 + iVar12;
              uVar18 = uStack_f4 + iDelta._4_4_;
              iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_;
              if (writer.bFirstRowidInPage == '\0') {
                if (iDelta._0_4_ == 0) {
                  iVar27 = *(int *)(iVar30 + -0x7ed8);
                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;
                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;
                  iVar27 = 1;
                }
                else {
                  iVar27 = *(int *)(iVar30 + -0x7ed8);
LAB_00118f00:
                  iVar27 = (*(code *)(iVar27 + 0x54))();
                }
                writer.writer.buf.n = writer.writer.buf.n + iVar27;
                if (iVar7 == 1) goto LAB_00118e60;
                iVar27 = *(int *)(iVar30 + -0x7ef0);
LAB_00118f30:
                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);
                puVar3 = pDoclist;
                iVar27 = iVar27 + nPos;
                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {
                  iVar25 = 0;
                  do {
                    iVar17 = p->rc;
                    if (iVar17 != 0) goto LAB_00118f9c;
                    iVar26 = iVar27 - iVar25;
                    puVar22 = puVar3 + iVar25 + iVar12;
                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;
                    if (iVar17 < iVar26) {
                      iVar13 = (*pcVar29)(puVar22,&dummy);
                      iVar26 = iVar13;
                      if (iVar13 < iVar17) {
                        do {
                          iVar13 = iVar26;
                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);
                          iVar26 = iVar13 + iVar14;
                        } while (iVar13 + iVar14 <= iVar17);
                      }
                      iVar25 = iVar25 + iVar13;
                      (**(code **)(iVar30 + -0x7b80))
                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);
                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;
                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;
                    }
                    else {
                      (**(code **)(iVar30 + -0x7b80))
                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);
                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;
                      iVar25 = iVar27;
                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;
LAB_00118ff8:
                      (*pcVar28)(p,&writer);
                    }
                  } while (iVar25 < iVar27);
                  iVar17 = p->rc;
                  iVar27 = iVar12 + iVar27;
                }
                else {
                  (**(code **)(iVar30 + -0x7b80))
                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);
                  iVar17 = p->rc;
                  writer.writer.buf.n = writer.writer.buf.n + iVar27;
LAB_00118f9c:
                  iVar27 = iVar12 + iVar27;
                }
              }
              else {
                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;
                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);
                if (iStack_fc == 0) {
                  iVar27 = *(int *)(iVar30 + -0x7ed8);
                  if (0x7f < uVar18) goto LAB_00118e00;
                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;
                  iVar27 = 1;
                }
                else {
                  iVar27 = *(int *)(iVar30 + -0x7ed8);
LAB_00118e00:
                  iVar27 = (*(code *)(iVar27 + 0x54))
                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,
                                      uVar18);
                }
                writer.writer.buf.n = writer.writer.buf.n + iVar27;
                writer.bFirstRowidInPage = '\0';
                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));
                if (p->rc != 0) goto LAB_00118afc;
                iVar27 = *(int *)(iVar30 + -0x7ef0);
                if (iVar7 != 1) goto LAB_00118f30;
LAB_00118e60:
                iVar27 = iVar12;
                iVar17 = writer.writer.buf.n;
                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {
                  iVar17 = writer.writer.buf.n + 1;
                  iVar27 = iVar12 + 1;
                  writer.writer.buf.p[writer.writer.buf.n] = '\0';
                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {
                    iVar27 = iVar12 + 2;
                    writer.writer.buf.p[iVar17] = '\0';
                    iVar17 = writer.writer.buf.n + 2;
                  }
                }
                writer.writer.buf.n = iVar17;
                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {
                  (*pcVar28)(p,&writer);
                }
                iVar17 = p->rc;
              }
              if (iVar17 != 0) goto LAB_00118afc;
              bVar1 = iVar27 < nDoclist;
              uStack_f4 = uVar18;
            }
          }
          pFVar10 = pFVar15->pScan->pScanNext;
          pFVar15->pScan = pFVar10;
          iVar27 = *(int *)(iVar30 + -0x7ed8);
        } while ((p->rc == 0) && (pFVar10 != (Fts5HashEntry *)0x0));
      }
      else {
LAB_00118afc:
        iVar27 = *(int *)(iVar30 + -0x7ed8);
      }
      pFVar19 = (Fts5Index *)&p->rc;
      (*(code *)(iVar27 + -0x3294))(pFVar15);
      p_00 = p;
      fts5WriteFinish(p,&writer,&pgnoLast);
      if (pStruct->nLevel == 0) {
        iVar7 = p->rc;
        if (iVar7 == 0) {
          p_00 = pFVar19;
          (*(code *)(*(int *)(iVar30 + -0x7e94) + -0x7650))(pFVar19,&pStruct);
          goto LAB_00118b60;
        }
      }
      else {
LAB_00118b60:
        iVar7 = p->rc;
        if (iVar7 == 0) {
          (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xad0))(pFVar19,pStruct,0,0);
          iVar7 = p->rc;
          p_00 = pFVar19;
          if (iVar7 == 0) {
            p_00 = (Fts5Index *)pStruct->aLevel[0].nSeg;
            pStruct->aLevel[0].nSeg = (int)((int)&p_00->pConfig + 1);
            pFVar8 = pStruct->aLevel[0].aSeg + (int)p_00;
            pFVar8->iSegid = iVar20;
            pFVar8->pgnoFirst = 1;
            pFVar8->pgnoLast = pgnoLast;
            pStruct->nSegment = pStruct->nSegment + 1;
            iVar7 = p->rc;
            if (iVar7 == 0) {
              p_00 = p;
              (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct);
              goto LAB_00118c00;
            }
          }
        }
      }
    }
  }
  else {
LAB_00118864:
    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))();
    iVar7 = p->rc;
  }
  pFVar4 = pStruct;
  pFVar16 = p->pConfig;
  if ((iVar7 == 0) && (p_00 = (Fts5Index *)pFVar16->nAutomerge, 0 < (int)p_00)) {
    iVar21 = (int)pStruct->nWriteCounter;
    iVar23 = *(int *)&pStruct->nWriteCounter;
    iVar7 = p->nWorkUnit;
    uVar18 = pgnoLast + iVar21;
    *(uint *)((int)&pStruct->nWriteCounter + 4) = uVar18;
    iVar20 = (uint)(uVar18 < (uint)pgnoLast) + (pgnoLast >> 0x1f) + iVar23;
    *(int *)&pStruct->nWriteCounter = iVar20;
    iVar24 = p->pConfig->nAutomerge;
    __udivdi3(iVar20,uVar18,iVar7 >> 0x1f,iVar7);
    __udivdi3(iVar23,iVar21,iVar7 >> 0x1f,iVar7);
    p_00 = p;
    fts5IndexMerge(p,&pStruct,(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar4->nLevel,iVar24)
    ;
    pFVar16 = p->pConfig;
    iVar7 = p->rc;
  }
  iVar23 = 0;
  iVar21 = *(int *)(iVar30 + -0x7e94);
  iVar20 = pFVar16->nCrisisMerge;
  writer.iSegid = (int)pStruct;
  while (pFVar4 = (Fts5Structure *)writer.iSegid, iVar7 == 0) {
    while( true ) {
      if (*(int *)(writer.iSegid + iVar23 * 0xc + 0x1c) < iVar20) {
        pStruct = (Fts5Structure *)writer.iSegid;
        fts5StructureWrite(p,(Fts5Structure *)writer.iSegid);
        p_00 = p;
        pFVar4 = pStruct;
        goto LAB_00118924;
      }
      p_00 = p;
      fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar23,(int *)0x0);
      iVar23 = iVar23 + 1;
      iVar7 = p->rc;
      if (iVar7 != 0) break;
      p_00 = p;
      (*(code *)(iVar21 + 0xc48))(p,iVar23);
      pFVar4 = (Fts5Structure *)writer.iSegid;
      if (p->rc != 0) goto LAB_00118924;
    }
  }
LAB_00118924:
  pStruct = pFVar4;
  if ((pStruct != (Fts5Structure *)0x0) &&
     (iVar20 = pStruct->nRef + -1, pStruct->nRef = iVar20, iVar20 < 1)) {
    p_00 = (Fts5Index *)pStruct;
    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x124))();
  }
  if (iVar6 == *piVar5) {
    return;
  }
  pcVar28 = *(code **)(iVar30 + -0x7ba0);
  (*pcVar28)();
  (**(code **)(pcVar28 + 0x42590))(p_00->pConfig->db);
  if (p_00->nWorkUnit != 0) {
    iVar6 = fts5StorageSaveTotals((Fts5Storage *)p_00);
    p_00->nWorkUnit = 0;
    if (iVar6 != 0) goto LAB_00119204;
  }
  pFVar19 = (Fts5Index *)p_00->zDataTbl;
  if (pFVar19->nPendingData != 0) {
    pFVar19->nPendingData = 0;
    fts5FlushOneHash(pFVar19);
  }
  pcVar29 = *(code **)(pcVar28 + 0x42708);
  if (pFVar19->pReader != (sqlite3_blob *)0x0) {
    pFVar19->pReader = (sqlite3_blob *)0x0;
    (*pcVar29)();
  }
  pFVar19->rc = 0;
LAB_00119204:
  (**(code **)(pcVar28 + 0x42778))(p_00->pConfig->db);
  return;
}



int FUN_001187e0(int *param_1)

{
  bool bVar1;
  undefined *puVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  code *pcVar6;
  code *pcVar7;
  code *pcVar8;
  undefined4 uVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  int extraout_v1;
  int extraout_v1_00;
  int iVar15;
  int *piVar16;
  uint uVar17;
  code *pcVar18;
  int iVar19;
  int iVar20;
  int iVar21;
  undefined4 uVar22;
  int iVar23;
  int iVar24;
  undefined *puVar25;
  int local_fc;
  uint local_f4;
  int *local_b8;
  uint local_b4;
  undefined4 local_b0;
  int local_ac;
  int local_a8;
  undefined1 auStack_a4 [4];
  int local_a0;
  undefined1 auStack_9c [4];
  int local_98;
  uint local_94;
  int *local_90 [3];
  undefined1 *local_84;
  int local_80;
  int local_74;
  char local_57;
  int local_2c;
  
  puVar25 = PTR___stack_chk_guard_0015ba2c;
  piVar16 = param_1 + 0x14;
  local_b4 = 0;
  iVar13 = param_1[3];
  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;
  local_b8 = (int *)FUN_001137dc();
  if (param_1[9] == 0) {
    if (1999 < local_b8[4]) {
      param_1[9] = 0xd;
      goto LAB_00118864;
    }
    iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8);
    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();
    if (iVar14 == 0) {
LAB_00118c00:
      iVar13 = param_1[9];
    }
    else {
      iVar19 = *(int *)(*param_1 + 0x44);
      iVar20 = *(int *)(*param_1 + 0x30);
      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);
      if (param_1[9] == 0) {
        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);
        param_1[9] = iVar5;
        puVar2 = PTR_LAB_0015b65c;
        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {
          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);
          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);
          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);
          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);
          while( true ) {
            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);
            uVar22 = local_b0;
            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);
            (*pcVar6)(param_1,local_90,uVar9,uVar22);
            if (param_1[9] != 0) break;
            if (local_80 + local_74 + local_a8 < iVar19) {
              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);
              local_80 = local_80 + local_a8;
              if (param_1[9] != 0) break;
            }
            else {
              local_fc = 0;
              local_f4 = 0;
              local_98 = 0;
              iVar5 = 0;
              local_94 = 0;
              bVar1 = 0 < local_a8;
              while (bVar1) {
                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);
                iVar10 = iVar5 + iVar10;
                uVar17 = local_f4 + local_94;
                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;
                if (local_57 == '\0') {
                  if ((local_98 == 0) && (local_94 < 0x80)) {
                    local_84[local_80] = (char)local_94;
                    iVar5 = 1;
                  }
                  else {
                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();
                  }
                  local_80 = local_80 + iVar5;
                  if (iVar20 == 1) goto LAB_00118e60;
LAB_00118f30:
                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))
                                    (local_ac + iVar10,&local_a0,auStack_a4);
                  iVar3 = local_ac;
                  iVar5 = iVar5 + local_a0;
                  if (iVar19 < local_80 + local_74 + iVar5) {
                    iVar23 = 0;
                    do {
                      iVar15 = param_1[9];
                      if (iVar15 != 0) goto LAB_00118f9c;
                      iVar24 = iVar5 - iVar23;
                      iVar15 = iVar3 + iVar23 + iVar10;
                      iVar21 = (iVar19 - local_80) - local_74;
                      if (iVar21 < iVar24) {
                        iVar11 = (*pcVar8)(iVar15,auStack_9c);
                        iVar24 = iVar11;
                        if (iVar11 < iVar21) {
                          do {
                            iVar11 = iVar24;
                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);
                            iVar24 = iVar11 + iVar12;
                          } while (iVar11 + iVar12 <= iVar21);
                        }
                        iVar23 = iVar23 + iVar11;
                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);
                        local_80 = iVar11 + local_80;
                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;
                      }
                      else {
                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);
                        local_80 = iVar24 + local_80;
                        iVar23 = iVar5;
                        if (local_80 + local_74 < iVar19) break;
LAB_00118ff8:
                        (*pcVar7)(param_1,local_90);
                      }
                    } while (iVar23 < iVar5);
                    iVar15 = param_1[9];
                    iVar5 = iVar10 + iVar5;
                  }
                  else {
                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);
                    iVar15 = param_1[9];
                    local_80 = local_80 + iVar5;
LAB_00118f9c:
                    iVar5 = iVar10 + iVar5;
                  }
                }
                else {
                  local_84[1] = (char)local_80;
                  *local_84 = (char)((uint)local_80 >> 8);
                  if ((local_fc == 0) && (uVar17 < 0x80)) {
                    local_84[local_80] = (char)uVar17;
                    iVar5 = 1;
                  }
                  else {
                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))
                                      (local_84 + local_80,local_fc,local_fc,uVar17);
                  }
                  local_80 = local_80 + iVar5;
                  local_57 = '\0';
                  FUN_00101668(param_1,local_90,local_fc,uVar17);
                  if (param_1[9] != 0) goto LAB_00118b04;
                  if (iVar20 != 1) goto LAB_00118f30;
LAB_00118e60:
                  iVar5 = iVar10;
                  iVar15 = local_80;
                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {
                    iVar15 = local_80 + 1;
                    iVar5 = iVar10 + 1;
                    local_84[local_80] = 0;
                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {
                      iVar5 = iVar10 + 2;
                      local_84[iVar15] = 0;
                      iVar15 = local_80 + 2;
                    }
                  }
                  local_80 = iVar15;
                  if (iVar19 <= local_80 + local_74) {
                    (*pcVar7)(param_1,local_90);
                  }
                  iVar15 = param_1[9];
                }
                if (iVar15 != 0) goto LAB_00118b04;
                bVar1 = iVar5 < local_a8;
                local_f4 = uVar17;
              }
            }
            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);
            *(int *)(iVar13 + 0x10) = iVar5;
            if ((param_1[9] != 0) || (iVar5 == 0)) break;
          }
        }
      }
LAB_00118b04:
      piVar4 = param_1 + 9;
      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);
      piVar16 = param_1;
      FUN_00102720(param_1,local_90,&local_b4);
      if (local_b8[5] == 0) {
        iVar13 = param_1[9];
        if (iVar13 == 0) {
          piVar16 = piVar4;
          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);
          goto LAB_00118b60;
        }
      }
      else {
LAB_00118b60:
        iVar13 = param_1[9];
        if (iVar13 == 0) {
          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);
          iVar13 = param_1[9];
          piVar16 = piVar4;
          if (iVar13 == 0) {
            piVar16 = (int *)local_b8[7];
            local_b8[7] = (int)piVar16 + 1;
            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);
            *piVar4 = iVar14;
            piVar4[1] = 1;
            piVar4[2] = local_b4;
            local_b8[4] = local_b8[4] + 1;
            iVar13 = param_1[9];
            if (iVar13 == 0) {
              piVar16 = param_1;
              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);
              goto LAB_00118c00;
            }
          }
        }
      }
    }
  }
  else {
LAB_00118864:
    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();
    iVar13 = param_1[9];
  }
  piVar4 = local_b8;
  iVar14 = *param_1;
  if ((iVar13 == 0) && (piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16)) {
    iVar20 = local_b8[3];
    iVar19 = local_b8[2];
    iVar14 = param_1[2];
    uVar17 = local_b4 + iVar20;
    local_b8[3] = uVar17;
    iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19;
    local_b8[2] = iVar13;
    uVar22 = *(undefined4 *)(*param_1 + 0x48);
    FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14);
    FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14);
    piVar16 = param_1;
    FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22);
    iVar14 = *param_1;
    iVar13 = param_1[9];
  }
  iVar20 = 0;
  iVar14 = *(int *)(iVar14 + 0x4c);
  pcVar18 = (code *)(PTR_DAT_0015b71c + 0xc48);
  local_90[0] = local_b8;
  while (piVar4 = local_90[0], iVar13 == 0) {
    while( true ) {
      if (local_90[0][iVar20 * 3 + 7] < iVar14) {
        local_b8 = local_90[0];
        FUN_00101d04(param_1,local_90[0],local_90[0],0);
        piVar16 = param_1;
        piVar4 = local_b8;
        goto LAB_00118924;
      }
      piVar16 = param_1;
      FUN_00117a5c(param_1,local_90,iVar20);
      iVar20 = iVar20 + 1;
      iVar13 = param_1[9];
      if (iVar13 != 0) break;
      piVar16 = param_1;
      (*pcVar18)(param_1,iVar20);
      piVar4 = local_90[0];
      if (param_1[9] != 0) goto LAB_00118924;
    }
  }
LAB_00118924:
  local_b8 = piVar4;
  if ((local_b8 != (int *)0x0) && (iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1)) {
    piVar16 = local_b8;
    (*(code *)(PTR_LAB_0015b6c0 + 0x124))();
  }
  if (local_2c == *(int *)puVar25) {
    return *(int *)puVar25;
  }
  puVar25 = PTR___stack_chk_fail_0015ba10;
  (*(code *)PTR___stack_chk_fail_0015ba10)();
  (**(code **)(puVar25 + 0x42590))(*(undefined4 *)*piVar16);
  if (piVar16[2] != 0) {
    iVar13 = FUN_00101508(piVar16);
    piVar16[2] = 0;
    if (iVar13 != 0) goto LAB_00119204;
  }
  iVar14 = piVar16[1];
  if (*(int *)(iVar14 + 0x10) != 0) {
    *(undefined4 *)(iVar14 + 0x10) = 0;
    FUN_001187e0(iVar14);
  }
  pcVar18 = *(code **)(puVar25 + 0x42708);
  if (*(int *)(iVar14 + 0x28) != 0) {
    *(undefined4 *)(iVar14 + 0x28) = 0;
    (*pcVar18)();
  }
  iVar13 = *(int *)(iVar14 + 0x24);
  *(undefined4 *)(iVar14 + 0x24) = 0;
LAB_00119204:
  (**(code **)(puVar25 + 0x42778))(*(undefined4 *)*piVar16);
  return iVar13;
}


lui gp,0x5
addiu gp,gp,-0x5230
addu gp,gp,t9
addiu sp,sp,-0x118
lw v0,-0x7b84(gp)
lw t9,-0x7d84(gp)
sw gp,0x10(sp)
sw s1,0xf4(sp)
addiu t9,t9,0x37dc
sw s0,0xf0(sp)
or s1,a0,zero
sw ra,0x114(sp)
addiu s0,a0,0x50
sw s8,0x110(sp)
sw s7,0x10c(sp)
sw s6,0x108(sp)
sw s5,0x104(sp)
sw s4,0x100(sp)
sw s3,0xfc(sp)
sw s2,0xf8(sp)
sw v0,0x54(sp)
sw zero,0x64(sp)
lw v1,0xc(a0)
lw v0,0x0(v0)
sw v1,0x3c(sp)
sw v0,0xec(sp)
bal 0x001137dc
_nop
lw v1,0x24(s1)
lw gp,0x10(sp)
beq v1,zero,0x00118a48
_sw v0,0x60(sp)
or a0,s0,zero
lw t9,-0x7ef0(gp)
addiu t9,t9,0x1a0
jalr t9
_nop
lw gp,0x10(sp)
lw v0,0x24(s1)
lw s5,0x60(sp)
beq v0,zero,0x0011897c
_lw v1,0x0(s1)
lw s0,-0x7d84(gp)
or s4,zero,zero
lw s3,-0x7e94(gp)
addiu s6,sp,0x88
lw s2,0x4c(v1)
or a2,s5,zero
addiu s0,s0,0x7a5c
sw s5,0x88(sp)
addiu s3,s3,0xc48
bne v0,zero,0x00118920
_or s5,a2,zero
sll v0,s4,0x1
addu v0,v0,s4
sll v0,v0,0x2
addu v0,a2,v0
lw v0,0x1c(v0)
slt v0,v0,s2
bne v0,zero,0x00118a64
_or a3,zero,zero
or a2,s4,zero
or a1,s6,zero
or t9,s0,zero
bal 0x00117a5c
_or a0,s1,zero
addiu s4,s4,0x1
lw v0,0x24(s1)
lw gp,0x10(sp)
bne v0,zero,0x001188ac
_lw a2,0x88(sp)
or a1,s4,zero
or t9,s3,zero
jalr t9
_or a0,s1,zero
lw v0,0x24(s1)
lw gp,0x10(sp)
beq v0,zero,0x001188b4
_lw a2,0x88(sp)
or s5,a2,zero
sw a2,0x60(sp)
beq s5,zero,0x00118940
_lw v0,0x54(sp)
lw v0,0x0(s5)
addiu v0,v0,-0x1
blez v0,0x00118a30
_sw v0,0x0(s5)
lw v0,0x54(sp)
lw v1,0xec(sp)
lw v0,0x0(v0)
bne v1,v0,0x00119154
_lw ra,0x114(sp)
lw s8,0x110(sp)
lw s7,0x10c(sp)
lw s6,0x108(sp)
lw s5,0x104(sp)
lw s4,0x100(sp)
lw s3,0xfc(sp)
lw s2,0xf8(sp)
lw s1,0xf4(sp)
lw s0,0xf0(sp)
jr ra
_addiu sp,sp,0x118
lw a0,0x48(v1)
blez a0,0x00118888
_lw t9,-0x7de0(gp)
lw v0,0x64(sp)
lw s2,0xc(s5)
lw s3,0x8(s5)
sra a0,v0,0x1f
lw s0,0x8(s1)
addu a1,v0,s2
addu a0,a0,s3
sltu v0,a1,v0
sw a1,0xc(s5)
addu a0,v0,a0
sra s4,s0,0x1f
sw a0,0x8(s5)
or a3,s0,zero
lw v0,0x0(s1)
or a2,s4,zero
bal 0x00134480
_lw s6,0x48(v0)
or a3,s0,zero
lw gp,0x10(sp)
or a2,s4,zero
or a0,s3,zero
or a1,s2,zero
lw t9,-0x7de0(gp)
bal 0x00134480
_or s0,v1,zero
addiu a1,sp,0x60
lw a0,0x8(s1)
subu v0,s0,v1
lw a2,0x14(s5)
or a3,s6,zero
lw gp,0x10(sp)
mul v0,v0,a0
or a0,s1,zero
lw t9,-0x7edc(gp)
addiu t9,t9,-0x79f0
bal 0x00118610
_mul a2,v0,a2
lw gp,0x10(sp)
lw v1,0x0(s1)
lw v0,0x24(s1)
b 0x00118888
_lw s5,0x60(sp)
lw t9,-0x7ef0(gp)
addiu t9,t9,0x124
jalr t9
_or a0,s5,zero
b 0x0011893c
_lw gp,0x10(sp)
lw v1,0x10(v0)
slti v1,v1,0x7d0
bne v1,zero,0x00118a88
_or a0,s0,zero
li v0,0xd
b 0x00118864
_sw v0,0x24(s1)
lw t9,-0x7ee0(gp)
or a1,a2,zero
or a0,s1,zero
addiu t9,t9,0x1d04
bal 0x00101d04
_sw a2,0x60(sp)
lw gp,0x10(sp)
b 0x00118924
_lw s5,0x60(sp)
lw t9,-0x7ef0(gp)
addiu t9,t9,0x444
jalr t9
_or a0,v0,zero
or a0,s0,zero
lw gp,0x10(sp)
or s0,v0,zero
lw t9,-0x7ef0(gp)
addiu t9,t9,0x1a0
jalr t9
_sw v0,0x5c(sp)
beq s0,zero,0x00118c00
_lw gp,0x10(sp)
addiu v0,sp,0x88
lw t9,-0x7d30(gp)
lw a2,0x5c(sp)
or a0,s1,zero
or a1,v0,zero
sw v0,0x2c(sp)
lw v0,0x0(s1)
addiu t9,t9,0x7a50
lw v1,0x44(v0)
lw v0,0x30(v0)
or s0,v1,zero
jalr t9
_sw v0,0x34(sp)
lw v0,0x24(s1)
beq v0,zero,0x00118c0c
_lw gp,0x10(sp)
lw t9,-0x7ed8(gp)
addiu s0,s1,0x24
addiu t9,t9,-0x3294
jalr t9
_lw a0,0x3c(sp)
addiu a2,sp,0x64
lw gp,0x10(sp)
or a0,s1,zero
lw t9,-0x7ee0(gp)
addiu t9,t9,0x2720
bal 0x00102720
_lw a1,0x2c(sp)
lw s5,0x60(sp)
lw v0,0x14(s5)
bne v0,zero,0x00118b60
_lw gp,0x10(sp)
lw v0,0x24(s1)
bne v0,zero,0x00118880
_lw t9,-0x7e94(gp)
addiu a1,sp,0x60
addiu t9,t9,-0x7650
jalr t9
_or a0,s0,zero
lw gp,0x10(sp)
lw s5,0x60(sp)
lw v0,0x24(s1)
bne v0,zero,0x00118880
_lw t9,-0x7e94(gp)
or a3,zero,zero
or a2,zero,zero
or a1,s5,zero
addiu t9,t9,0xad0
jalr t9
_or a0,s0,zero
lw v0,0x24(s1)
lw gp,0x10(sp)
bne v0,zero,0x00118880
_lw s5,0x60(sp)
lw a0,0x1c(s5)
lw v0,0x20(s5)
sll v1,a0,0x1
addiu a1,a0,0x1
addu v1,v1,a0
sw a1,0x1c(s5)
sll v1,v1,0x2
addu v0,v0,v1
lw v1,0x5c(sp)
sw v1,0x0(v0)
li v1,0x1
lw s5,0x60(sp)
sw v1,0x4(v0)
lw v1,0x64(sp)
sw v1,0x8(v0)
lw v0,0x10(s5)
addiu v0,v0,0x1
sw v0,0x10(s5)
lw v0,0x24(s1)
bne v0,zero,0x00118880
_lw t9,-0x7e94(gp)
or a1,zero,zero
or a2,s5,zero
addiu t9,t9,0xc48
jalr t9
_or a0,s1,zero
lw gp,0x10(sp)
lw v0,0x24(s1)
b 0x00118880
_lw s5,0x60(sp)
lw v0,0x3c(sp)
or a2,zero,zero
lw t9,-0x7eb0(gp)
or a1,zero,zero
addiu a3,v0,0x10
addiu t9,t9,0x2fcc
jalr t9
_or a0,v0,zero
lw gp,0x10(sp)
bne v0,zero,0x00118afc
_sw v0,0x24(s1)
lw v0,0x3c(sp)
lw v0,0x10(v0)
beq v0,zero,0x00118afc
_lw v0,-0x7ef0(gp)
addiu s6,sp,0x70
addiu s7,sp,0x6c
addiu s8,sp,0x68
sw s6,0x50(sp)
addiu v0,v0,0x3d7c
sw s7,0x4c(sp)
or s5,s0,zero
sw s8,0x48(sp)
sw v0,0x44(sp)
lw v0,-0x7ee0(gp)
addiu v0,v0,0x2384
sw v0,0x40(sp)
lw v0,-0x7f54(gp)
sw v0,0x58(sp)
lw v0,-0x7ee0(gp)
addiu v0,v0,0x19d0
sw v0,0x38(sp)
lw v0,-0x7ef0(gp)
addiu v0,v0,0x27e0
b 0x00118cec
_sw v0,0x20(sp)
lw a0,0x94(sp)
lw a1,0x6c(sp)
jalr t9
_addu a0,a0,v1
lw v0,0x98(sp)
lw a0,0x70(sp)
lw v1,0x24(s1)
lw gp,0x10(sp)
addu v0,v0,a0
bne v1,zero,0x00118afc
_sw v0,0x98(sp)
lw v1,0x3c(sp)
lw v0,0x10(v1)
lw v0,0x4(v0)
sw v0,0x10(v1)
lw v1,0x24(s1)
bne v1,zero,0x00118b00
_lw t9,-0x7ed8(gp)
beq v0,zero,0x00118b04
_addiu s0,s1,0x24
lw a3,0x50(sp)
lw a2,0x4c(sp)
lw a1,0x48(sp)
lw t9,0x44(sp)
jalr t9
_lw a0,0x3c(sp)
lw gp,0x10(sp)
lw s0,0x68(sp)
lw t9,-0x7bec(gp)
jalr t9
_or a0,s0,zero
or a3,s0,zero
lw a1,0x2c(sp)
or a2,v0,zero
lw t9,0x40(sp)
jalr t9
_or a0,s1,zero
lw v0,0x24(s1)
bne v0,zero,0x00118afc
_lw gp,0x10(sp)
lw v1,0x98(sp)
lw v0,0xa4(sp)
lw a2,0x70(sp)
addu v0,v1,v0
addu v0,v0,a2
slt v0,v0,s5
bne v0,zero,0x00118c9c
_lw t9,-0x7b80(gp)
or v0,zero,zero
sw zero,0x1c(sp)
or v1,zero,zero
sw zero,0x24(sp)
sw v0,0x80(sp)
or s0,zero,zero
lw v0,0x58(sp)
sw v1,0x84(sp)
addiu v0,v0,-0x2a88
sw v0,0x30(sp)
slt a2,s0,a2
beq a2,zero,0x00118cc8
_lw a0,0x6c(sp)
addiu a1,sp,0x80
lw t9,0x30(sp)
jalr t9
_addu a0,a0,s0
lw v1,0x24(sp)
addu s0,s0,v0
lw a3,0x84(sp)
lw a0,0x1c(sp)
lw a2,0x80(sp)
addu s2,v1,a3
lbu v0,0xc1(sp)
lw gp,0x10(sp)
addu s3,a0,a2
sw s2,0x24(sp)
sltu s4,s2,v1
addu a1,s4,s3
beq v0,zero,0x00118eec
_sw a1,0x1c(sp)
lw v1,0x98(sp)
lw v0,0x94(sp)
ext a0,v1,0x8,0x8
sb v1,0x1(v0)
sb a0,0x0(v0)
lw a0,0x94(sp)
lw v0,0x98(sp)
beq a1,zero,0x001190e0
_addu a0,a0,v0
lw t9,-0x7ed8(gp)
or a3,s2,zero
addiu t9,t9,0x54
jalr t9
_lw a2,0x1c(sp)
lw gp,0x10(sp)
lw v1,0x98(sp)
or a3,s2,zero
lw t9,-0x7ee0(gp)
or a0,s1,zero
lw a2,0x1c(sp)
addu v0,v1,v0
lw a1,0x2c(sp)
addiu t9,t9,0x1668
sb zero,0xc1(sp)
bal 0x00101668
_sw v0,0x98(sp)
lw v0,0x24(s1)
bne v0,zero,0x00118afc
_lw gp,0x10(sp)
lw v1,0x34(sp)
li v0,0x1
bne v1,v0,0x00118f30
_lw t9,-0x7ef0(gp)
lw v1,0x70(sp)
slt v1,s0,v1
beq v1,zero,0x00118eb0
_lw v0,0x98(sp)
lw v1,0x6c(sp)
addu v1,v1,s0
lbu v1,0x0(v1)
bne v1,zero,0x00118eb4
_lw v1,0xa4(sp)
addiu v1,v0,0x1
addiu a0,s0,0x1
sw v1,0x98(sp)
lw v1,0x94(sp)
addu v0,v1,v0
sb zero,0x0(v0)
lw v0,0x70(sp)
slt v0,a0,v0
bne v0,zero,0x0011911c
_lw v1,0x6c(sp)
lw v0,0x98(sp)
or s0,a0,zero
lw v1,0xa4(sp)
addu v0,v0,v1
slt v0,v0,s5
beq v0,zero,0x00118ed8
_lw a1,0x2c(sp)
lw v0,0x24(s1)
bne v0,zero,0x00118afc
_lw a2,0x70(sp)
b 0x00118d88
_slt a2,s0,a2
lw t9,0x38(sp)
jalr t9
_or a0,s1,zero
b 0x00118ec4
_lw gp,0x10(sp)
lw a0,0x94(sp)
lw v0,0x98(sp)
beq a2,zero,0x001190f8
_addu a0,a0,v0
lw t9,-0x7ed8(gp)
addiu t9,t9,0x54
jalr t9
_nop
lw gp,0x10(sp)
lw v1,0x98(sp)
addu v1,v1,v0
li v0,0x1
sw v1,0x98(sp)
lw v1,0x34(sp)
beq v1,v0,0x00118e60
_lw v1,0x70(sp)
lw t9,-0x7ef0(gp)
addiu a2,sp,0x74
lw a0,0x6c(sp)
addiu a1,sp,0x78
addiu t9,t9,0x28c4
jalr t9
_addu a0,a0,s0
lw s2,0x78(sp)
lw v1,0x98(sp)
addu s2,v0,s2
lw v0,0xa4(sp)
addu v0,v1,v0
addu v0,v0,s2
slt v0,s5,v0
bne v0,zero,0x00118fa4
_lw gp,0x10(sp)
lw a0,0x94(sp)
or a2,s2,zero
lw a1,0x6c(sp)
lw t9,-0x7b80(gp)
addu a0,a0,v1
jalr t9
_addu a1,a1,s0
lw v1,0x98(sp)
lw gp,0x10(sp)
lw v0,0x24(s1)
addu v1,v1,s2
sw v1,0x98(sp)
b 0x00118ec8
_addu s0,s0,s2
lw v0,0x6c(sp)
or s7,zero,zero
addiu s8,sp,0x7c
or s6,s7,zero
b 0x00119014
_sw v0,0x28(sp)
or a2,s7,zero
lw t9,-0x7b80(gp)
or a1,s3,zero
jalr t9
_addu a0,a0,v0
lw v0,0x98(sp)
lw gp,0x10(sp)
addu s7,s7,v0
lw v0,0xa4(sp)
addu v0,s7,v0
slt v0,v0,s5
bne v0,zero,0x00119110
_sw s7,0x98(sp)
or s6,s2,zero
lw a1,0x2c(sp)
lw t9,0x38(sp)
jalr t9
_or a0,s1,zero
lw gp,0x10(sp)
slt v0,s6,s2
beq v0,zero,0x00119110
_nop
lw v0,0x24(s1)
bne v0,zero,0x00118f9c
_lw a0,0x28(sp)
addu s3,s6,s0
lw v0,0x98(sp)
subu s7,s2,s6
addu s3,a0,s3
lw a0,0xa4(sp)
subu v1,s5,v0
subu s4,v1,a0
slt a0,s4,s7
beq a0,zero,0x00118fbc
_lw a0,0x94(sp)
lw t9,0x20(sp)
or a1,s8,zero
jalr t9
_or a0,s3,zero
or s7,v0,zero
slt v0,v0,s4
bne v0,zero,0x001190b8
_lw gp,0x10(sp)
lw a0,0x94(sp)
or a2,s7,zero
lw v0,0x98(sp)
or a1,s3,zero
lw t9,-0x7b80(gp)
addu s6,s6,s7
jalr t9
_addu a0,a0,v0
lw v0,0x98(sp)
lw v1,0xa4(sp)
lw gp,0x10(sp)
addu v0,s7,v0
addu v1,v0,v1
sw v0,0x98(sp)
slt v0,v1,s5
bne v0,zero,0x0011900c
_slt v0,s6,s2
b 0x00118ff8
_lw a1,0x2c(sp)
or s7,v0,zero
lw t9,0x20(sp)
addu a0,s3,s7
jalr t9
_or a1,s8,zero
addu v0,s7,v0
slt v1,s4,v0
beq v1,zero,0x001190b4
_lw gp,0x10(sp)
b 0x0011906c
_lw a0,0x94(sp)
sltiu v0,s2,0x80
beq v0,zero,0x00118e00
_lw t9,-0x7ed8(gp)
sb s2,0x0(a0)
b 0x00118e14
_li v0,0x1
sltiu v0,a3,0x80
beq v0,zero,0x00118f00
_lw t9,-0x7ed8(gp)
sb a3,0x0(a0)
b 0x00118f10
_li v0,0x1
lw v0,0x24(s1)
b 0x00118ec8
_addu s0,s0,s2
addu v1,v1,a0
lbu v1,0x0(v1)
bne v1,zero,0x0011914c
_lw v0,0x98(sp)
addiu v1,v0,0x1
addiu s0,s0,0x2
sw v1,0x98(sp)
lw v1,0x94(sp)
addu v0,v1,v0
sb zero,0x0(v0)
b 0x00118eb0
_lw v0,0x98(sp)
b 0x00118eb0
_or s0,a0,zero
lw t9,-0x7ba0(gp)
jalr t9
_nop
(translation_unit "int FUN_001187e0(int *param_1)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  code *pcVar6;\n  code *pcVar7;\n  code *pcVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar15;\n  int *piVar16;\n  uint uVar17;\n  code *pcVar18;\n  int iVar19;\n  int iVar20;\n  int iVar21;\n  undefined4 uVar22;\n  int iVar23;\n  int iVar24;\n  undefined *puVar25;\n  int local_fc;\n  uint local_f4;\n  int *local_b8;\n  uint local_b4;\n  undefined4 local_b0;\n  int local_ac;\n  int local_a8;\n  undefined1 auStack_a4 [4];\n  int local_a0;\n  undefined1 auStack_9c [4];\n  int local_98;\n  uint local_94;\n  int *local_90 [3];\n  undefined1 *local_84;\n  int local_80;\n  int local_74;\n  char local_57;\n  int local_2c;\n  \n  puVar25 = PTR___stack_chk_guard_0015ba2c;\n  piVar16 = param_1 + 0x14;\n  local_b4 = 0;\n  iVar13 = param_1[3];\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  local_b8 = (int *)FUN_001137dc();\n  if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }\n    iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    if (iVar14 == 0) {\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }\n    else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    iVar13 = param_1[9];\n  }\n  piVar4 = local_b8;\n  iVar14 = *param_1;\n  if ((iVar13 == 0) && (piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16)) {\n    iVar20 = local_b8[3];\n    iVar19 = local_b8[2];\n    iVar14 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19;\n    local_b8[2] = iVar13;\n    uVar22 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14);\n    FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14);\n    piVar16 = param_1;\n    FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22);\n    iVar14 = *param_1;\n    iVar13 = param_1[9];\n  }\n  iVar20 = 0;\n  iVar14 = *(int *)(iVar14 + 0x4c);\n  pcVar18 = (code *)(PTR_DAT_0015b71c + 0xc48);\n  local_90[0] = local_b8;\n  while (piVar4 = local_90[0], iVar13 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }\n  }\nLAB_00118924:\n  local_b8 = piVar4;\n  if ((local_b8 != (int *)0x0) && (iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1)) {\n    piVar16 = local_b8;\n    (*(code *)(PTR_LAB_0015b6c0 + 0x124))();\n  }\n  if (local_2c == *(int *)puVar25) {\n    return *(int *)puVar25;\n  }\n  puVar25 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  (**(code **)(puVar25 + 0x42590))(*(undefined4 *)*piVar16);\n  if (piVar16[2] != 0) {\n    iVar13 = FUN_00101508(piVar16);\n    piVar16[2] = 0;\n    if (iVar13 != 0) goto LAB_00119204;\n  }\n  iVar14 = piVar16[1];\n  if (*(int *)(iVar14 + 0x10) != 0) {\n    *(undefined4 *)(iVar14 + 0x10) = 0;\n    FUN_001187e0(iVar14);\n  }\n  pcVar18 = *(code **)(puVar25 + 0x42708);\n  if (*(int *)(iVar14 + 0x28) != 0) {\n    *(undefined4 *)(iVar14 + 0x28) = 0;\n    (*pcVar18)();\n  }\n  iVar13 = *(int *)(iVar14 + 0x24);\n  *(undefined4 *)(iVar14 + 0x24) = 0;\nLAB_00119204:\n  (**(code **)(puVar25 + 0x42778))(*(undefined4 *)*piVar16);\n  return iVar13;\n}\n\n" (function_definition "int FUN_001187e0(int *param_1)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  code *pcVar6;\n  code *pcVar7;\n  code *pcVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar15;\n  int *piVar16;\n  uint uVar17;\n  code *pcVar18;\n  int iVar19;\n  int iVar20;\n  int iVar21;\n  undefined4 uVar22;\n  int iVar23;\n  int iVar24;\n  undefined *puVar25;\n  int local_fc;\n  uint local_f4;\n  int *local_b8;\n  uint local_b4;\n  undefined4 local_b0;\n  int local_ac;\n  int local_a8;\n  undefined1 auStack_a4 [4];\n  int local_a0;\n  undefined1 auStack_9c [4];\n  int local_98;\n  uint local_94;\n  int *local_90 [3];\n  undefined1 *local_84;\n  int local_80;\n  int local_74;\n  char local_57;\n  int local_2c;\n  \n  puVar25 = PTR___stack_chk_guard_0015ba2c;\n  piVar16 = param_1 + 0x14;\n  local_b4 = 0;\n  iVar13 = param_1[3];\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  local_b8 = (int *)FUN_001137dc();\n  if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }\n    iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    if (iVar14 == 0) {\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }\n    else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    iVar13 = param_1[9];\n  }\n  piVar4 = local_b8;\n  iVar14 = *param_1;\n  if ((iVar13 == 0) && (piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16)) {\n    iVar20 = local_b8[3];\n    iVar19 = local_b8[2];\n    iVar14 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19;\n    local_b8[2] = iVar13;\n    uVar22 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14);\n    FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14);\n    piVar16 = param_1;\n    FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22);\n    iVar14 = *param_1;\n    iVar13 = param_1[9];\n  }\n  iVar20 = 0;\n  iVar14 = *(int *)(iVar14 + 0x4c);\n  pcVar18 = (code *)(PTR_DAT_0015b71c + 0xc48);\n  local_90[0] = local_b8;\n  while (piVar4 = local_90[0], iVar13 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }\n  }\nLAB_00118924:\n  local_b8 = piVar4;\n  if ((local_b8 != (int *)0x0) && (iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1)) {\n    piVar16 = local_b8;\n    (*(code *)(PTR_LAB_0015b6c0 + 0x124))();\n  }\n  if (local_2c == *(int *)puVar25) {\n    return *(int *)puVar25;\n  }\n  puVar25 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  (**(code **)(puVar25 + 0x42590))(*(undefined4 *)*piVar16);\n  if (piVar16[2] != 0) {\n    iVar13 = FUN_00101508(piVar16);\n    piVar16[2] = 0;\n    if (iVar13 != 0) goto LAB_00119204;\n  }\n  iVar14 = piVar16[1];\n  if (*(int *)(iVar14 + 0x10) != 0) {\n    *(undefined4 *)(iVar14 + 0x10) = 0;\n    FUN_001187e0(iVar14);\n  }\n  pcVar18 = *(code **)(puVar25 + 0x42708);\n  if (*(int *)(iVar14 + 0x28) != 0) {\n    *(undefined4 *)(iVar14 + 0x28) = 0;\n    (*pcVar18)();\n  }\n  iVar13 = *(int *)(iVar14 + 0x24);\n  *(undefined4 *)(iVar14 + 0x24) = 0;\nLAB_00119204:\n  (**(code **)(puVar25 + 0x42778))(*(undefined4 *)*piVar16);\n  return iVar13;\n}" primitive_type (function_declarator "FUN_001187e0(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  code *pcVar6;\n  code *pcVar7;\n  code *pcVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar15;\n  int *piVar16;\n  uint uVar17;\n  code *pcVar18;\n  int iVar19;\n  int iVar20;\n  int iVar21;\n  undefined4 uVar22;\n  int iVar23;\n  int iVar24;\n  undefined *puVar25;\n  int local_fc;\n  uint local_f4;\n  int *local_b8;\n  uint local_b4;\n  undefined4 local_b0;\n  int local_ac;\n  int local_a8;\n  undefined1 auStack_a4 [4];\n  int local_a0;\n  undefined1 auStack_9c [4];\n  int local_98;\n  uint local_94;\n  int *local_90 [3];\n  undefined1 *local_84;\n  int local_80;\n  int local_74;\n  char local_57;\n  int local_2c;\n  \n  puVar25 = PTR___stack_chk_guard_0015ba2c;\n  piVar16 = param_1 + 0x14;\n  local_b4 = 0;\n  iVar13 = param_1[3];\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  local_b8 = (int *)FUN_001137dc();\n  if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }\n    iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    if (iVar14 == 0) {\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }\n    else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    iVar13 = param_1[9];\n  }\n  piVar4 = local_b8;\n  iVar14 = *param_1;\n  if ((iVar13 == 0) && (piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16)) {\n    iVar20 = local_b8[3];\n    iVar19 = local_b8[2];\n    iVar14 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19;\n    local_b8[2] = iVar13;\n    uVar22 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14);\n    FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14);\n    piVar16 = param_1;\n    FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22);\n    iVar14 = *param_1;\n    iVar13 = param_1[9];\n  }\n  iVar20 = 0;\n  iVar14 = *(int *)(iVar14 + 0x4c);\n  pcVar18 = (code *)(PTR_DAT_0015b71c + 0xc48);\n  local_90[0] = local_b8;\n  while (piVar4 = local_90[0], iVar13 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }\n  }\nLAB_00118924:\n  local_b8 = piVar4;\n  if ((local_b8 != (int *)0x0) && (iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1)) {\n    piVar16 = local_b8;\n    (*(code *)(PTR_LAB_0015b6c0 + 0x124))();\n  }\n  if (local_2c == *(int *)puVar25) {\n    return *(int *)puVar25;\n  }\n  puVar25 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  (**(code **)(puVar25 + 0x42590))(*(undefined4 *)*piVar16);\n  if (piVar16[2] != 0) {\n    iVar13 = FUN_00101508(piVar16);\n    piVar16[2] = 0;\n    if (iVar13 != 0) goto LAB_00119204;\n  }\n  iVar14 = piVar16[1];\n  if (*(int *)(iVar14 + 0x10) != 0) {\n    *(undefined4 *)(iVar14 + 0x10) = 0;\n    FUN_001187e0(iVar14);\n  }\n  pcVar18 = *(code **)(puVar25 + 0x42708);\n  if (*(int *)(iVar14 + 0x28) != 0) {\n    *(undefined4 *)(iVar14 + 0x28) = 0;\n    (*pcVar18)();\n  }\n  iVar13 = *(int *)(iVar14 + 0x24);\n  *(undefined4 *)(iVar14 + 0x24) = 0;\nLAB_00119204:\n  (**(code **)(puVar25 + 0x42778))(*(undefined4 *)*piVar16);\n  return iVar13;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "code *pcVar8;" type_identifier (pointer_declarator "*pcVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int extraout_v1;" primitive_type identifier ;) (declaration "int extraout_v1_00;" primitive_type identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "code *pcVar18;" type_identifier (pointer_declarator "*pcVar18" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "undefined4 uVar22;" type_identifier identifier ;) (declaration "int iVar23;" primitive_type identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "undefined *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "int local_fc;" primitive_type identifier ;) (declaration "uint local_f4;" type_identifier identifier ;) (declaration "int *local_b8;" primitive_type (pointer_declarator "*local_b8" * identifier) ;) (declaration "uint local_b4;" type_identifier identifier ;) (declaration "undefined4 local_b0;" type_identifier identifier ;) (declaration "int local_ac;" primitive_type identifier ;) (declaration "int local_a8;" primitive_type identifier ;) (declaration "undefined1 auStack_a4 [4];" type_identifier (array_declarator "auStack_a4 [4]" identifier [ number_literal ]) ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "undefined1 auStack_9c [4];" type_identifier (array_declarator "auStack_9c [4]" identifier [ number_literal ]) ;) (declaration "int local_98;" primitive_type identifier ;) (declaration "uint local_94;" type_identifier identifier ;) (declaration "int *local_90 [3];" primitive_type (pointer_declarator "*local_90 [3]" * (array_declarator "local_90 [3]" identifier [ number_literal ])) ;) (declaration "undefined1 *local_84;" type_identifier (pointer_declarator "*local_84" * identifier) ;) (declaration "int local_80;" primitive_type identifier ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "char local_57;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar25 = PTR___stack_chk_guard_0015ba2c;" (assignment_expression "puVar25 = PTR___stack_chk_guard_0015ba2c" identifier = identifier) ;) (expression_statement "piVar16 = param_1 + 0x14;" (assignment_expression "piVar16 = param_1 + 0x14" identifier = (binary_expression "param_1 + 0x14" identifier + number_literal)) ;) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "iVar13 = param_1[3];" (assignment_expression "iVar13 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0015ba2c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0015ba2c" * (cast_expression "(int *)PTR___stack_chk_guard_0015ba2c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_b8 = (int *)FUN_001137dc();" (assignment_expression "local_b8 = (int *)FUN_001137dc()" identifier = (cast_expression "(int *)FUN_001137dc()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001137dc()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }\n    iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    if (iVar14 == 0) {\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }\n    else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    iVar13 = param_1[9];\n  }" if (parenthesized_expression "(param_1[9] == 0)" ( (binary_expression "param_1[9] == 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }\n    iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    if (iVar14 == 0) {\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }\n    else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }\n  }" { (if_statement "if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }" if (parenthesized_expression "(1999 < local_b8[4])" ( (binary_expression "1999 < local_b8[4]" number_literal < (subscript_expression "local_b8[4]" identifier [ number_literal ])) )) (compound_statement "{\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }" { (expression_statement "param_1[9] = 0xd;" (assignment_expression "param_1[9] = 0xd" (subscript_expression "param_1[9]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_00118864;" goto statement_identifier ;) })) (expression_statement "iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8);" (assignment_expression "iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x444))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x444)" * (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x444)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x444)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x444" identifier + number_literal) )))) )) (argument_list "(local_b8)" ( identifier )))) ;) (expression_statement "(*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();" (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x1a0))()" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x1a0))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x1a0)" * (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x1a0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x1a0)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x1a0" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;) (if_statement "if (iVar14 == 0) {\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }\n    else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }" { (labeled_statement "LAB_00118c00:\n      iVar13 = param_1[9];" statement_identifier : (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;)) }) (else_clause "else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }" else (compound_statement "{\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }" { (expression_statement "iVar19 = *(int *)(*param_1 + 0x44);" (assignment_expression "iVar19 = *(int *)(*param_1 + 0x44)" identifier = (pointer_expression "*(int *)(*param_1 + 0x44)" * (cast_expression "(int *)(*param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x44)" ( (binary_expression "*param_1 + 0x44" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "iVar20 = *(int *)(*param_1 + 0x30);" (assignment_expression "iVar20 = *(int *)(*param_1 + 0x30)" identifier = (pointer_expression "*(int *)(*param_1 + 0x30)" * (cast_expression "(int *)(*param_1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x30)" ( (binary_expression "*param_1 + 0x30" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "(*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);" (call_expression "(*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14)" (parenthesized_expression "(*(code *)(PTR_DAT_0015b880 + 0x7a50))" ( (pointer_expression "*(code *)(PTR_DAT_0015b880 + 0x7a50)" * (cast_expression "(code *)(PTR_DAT_0015b880 + 0x7a50)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b880 + 0x7a50)" ( (binary_expression "PTR_DAT_0015b880 + 0x7a50" identifier + number_literal) )))) )) (argument_list "(param_1,local_90,iVar14)" ( identifier , identifier , identifier ))) ;) (if_statement "if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }" if (parenthesized_expression "(param_1[9] == 0)" ( (binary_expression "param_1[9] == 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }" { (expression_statement "iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);" (assignment_expression "iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b700 + 0x2fcc))" ( (pointer_expression "*(code *)(PTR_LAB_0015b700 + 0x2fcc)" * (cast_expression "(code *)(PTR_LAB_0015b700 + 0x2fcc)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b700 + 0x2fcc)" ( (binary_expression "PTR_LAB_0015b700 + 0x2fcc" identifier + number_literal) )))) )) (argument_list "(iVar13,0,0,iVar13 + 0x10)" ( identifier , number_literal , number_literal , (binary_expression "iVar13 + 0x10" identifier + number_literal) )))) ;) (expression_statement "param_1[9] = iVar5;" (assignment_expression "param_1[9] = iVar5" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2 = PTR_LAB_0015b65c;" (assignment_expression "puVar2 = PTR_LAB_0015b65c" identifier = identifier) ;) (if_statement "if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }" if (parenthesized_expression "((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0))" ( (binary_expression "(iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)" (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) && (parenthesized_expression "(*(int *)(iVar13 + 0x10) != 0)" ( (binary_expression "*(int *)(iVar13 + 0x10) != 0" (pointer_expression "*(int *)(iVar13 + 0x10)" * (cast_expression "(int *)(iVar13 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x10)" ( (binary_expression "iVar13 + 0x10" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }" { (expression_statement "pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);" (assignment_expression "pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c)" identifier = (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x3d7c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x3d7c)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x3d7c" identifier + number_literal) )))) ;) (expression_statement "pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384)" identifier = (cast_expression "(code *)(PTR_LAB_0015b6d0 + 0x2384)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6d0 + 0x2384)" ( (binary_expression "PTR_LAB_0015b6d0 + 0x2384" identifier + number_literal) )))) ;) (expression_statement "pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);" (assignment_expression "pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0)" identifier = (cast_expression "(code *)(PTR_LAB_0015b6d0 + 0x19d0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6d0 + 0x19d0)" ( (binary_expression "PTR_LAB_0015b6d0 + 0x19d0" identifier + number_literal) )))) ;) (expression_statement "pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);" (assignment_expression "pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0)" identifier = (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x27e0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x27e0)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x27e0" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }" { (expression_statement "(*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);" (call_expression "(*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8)" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "(iVar13,&local_b0,&local_ac,&local_a8)" ( identifier , (pointer_expression "&local_b0" & identifier) , (pointer_expression "&local_ac" & identifier) , (pointer_expression "&local_a8" & identifier) ))) ;) (expression_statement "uVar22 = local_b0;" (assignment_expression "uVar22 = local_b0" identifier = identifier) ;) (expression_statement "uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);" (assignment_expression "uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0)" identifier = (call_expression "(*(code *)PTR_strlen_0015b9c4)(local_b0)" (parenthesized_expression "(*(code *)PTR_strlen_0015b9c4)" ( (pointer_expression "*(code *)PTR_strlen_0015b9c4" * (cast_expression "(code *)PTR_strlen_0015b9c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_b0)" ( identifier )))) ;) (expression_statement "(*pcVar6)(param_1,local_90,uVar9,uVar22);" (call_expression "(*pcVar6)(param_1,local_90,uVar9,uVar22)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(param_1,local_90,uVar9,uVar22)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if (param_1[9] != 0) break;" if (parenthesized_expression "(param_1[9] != 0)" ( (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }" if (parenthesized_expression "(local_80 + local_74 + local_a8 < iVar19)" ( (binary_expression "local_80 + local_74 + local_a8 < iVar19" (binary_expression "local_80 + local_74 + local_a8" (binary_expression "local_80 + local_74" identifier + identifier) + identifier) < identifier) )) (compound_statement "{\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }" { (expression_statement "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);" (call_expression "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac)" (parenthesized_expression "(*(code *)PTR_memcpy_0015ba30)" ( (pointer_expression "*(code *)PTR_memcpy_0015ba30" * (cast_expression "(code *)PTR_memcpy_0015ba30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_84 + local_80,local_ac)" ( (binary_expression "local_84 + local_80" identifier + identifier) , identifier ))) ;) (expression_statement "local_80 = local_80 + local_a8;" (assignment_expression "local_80 = local_80 + local_a8" identifier = (binary_expression "local_80 + local_a8" identifier + identifier)) ;) (if_statement "if (param_1[9] != 0) break;" if (parenthesized_expression "(param_1[9] != 0)" ( (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) )) (break_statement "break;" break ;)) }) (else_clause "else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }" else (compound_statement "{\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }" { (expression_statement "local_fc = 0;" (assignment_expression "local_fc = 0" identifier = number_literal) ;) (expression_statement "local_f4 = 0;" (assignment_expression "local_f4 = 0" identifier = number_literal) ;) (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" identifier = number_literal) ;) (expression_statement "bVar1 = 0 < local_a8;" (assignment_expression "bVar1 = 0 < local_a8" identifier = (binary_expression "0 < local_a8" number_literal < identifier)) ;) (while_statement "while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }" while (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }" { (expression_statement "iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);" (assignment_expression "iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98)" identifier = (call_expression "(*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98)" (parenthesized_expression "(*(code *)(puVar2 + -0x2a88))" ( (pointer_expression "*(code *)(puVar2 + -0x2a88)" * (cast_expression "(code *)(puVar2 + -0x2a88)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x2a88)" ( (binary_expression "puVar2 + -0x2a88" identifier + number_literal) )))) )) (argument_list "(local_ac + iVar5,&local_98)" ( (binary_expression "local_ac + iVar5" identifier + identifier) , (pointer_expression "&local_98" & identifier) )))) ;) (expression_statement "iVar10 = iVar5 + iVar10;" (assignment_expression "iVar10 = iVar5 + iVar10" identifier = (binary_expression "iVar5 + iVar10" identifier + identifier)) ;) (expression_statement "uVar17 = local_f4 + local_94;" (assignment_expression "uVar17 = local_f4 + local_94" identifier = (binary_expression "local_f4 + local_94" identifier + identifier)) ;) (expression_statement "local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;" (assignment_expression "local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98" identifier = (binary_expression "(uint)(uVar17 < local_f4) + local_fc + local_98" (binary_expression "(uint)(uVar17 < local_f4) + local_fc" (call_expression "(uint)(uVar17 < local_f4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar17 < local_f4)" ( (binary_expression "uVar17 < local_f4" identifier < identifier) ))) + identifier) + identifier)) ;) (if_statement "if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }" if (parenthesized_expression "(local_57 == '\0')" ( (binary_expression "local_57 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }" { (if_statement "if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }" if (parenthesized_expression "((local_98 == 0) && (local_94 < 0x80))" ( (binary_expression "(local_98 == 0) && (local_94 < 0x80)" (parenthesized_expression "(local_98 == 0)" ( (binary_expression "local_98 == 0" identifier == number_literal) )) && (parenthesized_expression "(local_94 < 0x80)" ( (binary_expression "local_94 < 0x80" identifier < number_literal) ))) )) (compound_statement "{\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }" { (expression_statement "local_84[local_80] = (char)local_94;" (assignment_expression "local_84[local_80] = (char)local_94" (subscript_expression "local_84[local_80]" identifier [ identifier ]) = (cast_expression "(char)local_94" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) }) (else_clause "else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }" else (compound_statement "{\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }" { (expression_statement "iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();" (assignment_expression "iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))()" identifier = (call_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x54))()" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x54))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6d8 + 0x54)" * (cast_expression "(code *)(PTR_LAB_0015b6d8 + 0x54)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6d8 + 0x54)" ( (binary_expression "PTR_LAB_0015b6d8 + 0x54" identifier + number_literal) )))) )) (argument_list "()" ( )))) ;) }))) (expression_statement "local_80 = local_80 + iVar5;" (assignment_expression "local_80 = local_80 + iVar5" identifier = (binary_expression "local_80 + iVar5" identifier + identifier)) ;) (if_statement "if (iVar20 == 1) goto LAB_00118e60;" if (parenthesized_expression "(iVar20 == 1)" ( (binary_expression "iVar20 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00118e60;" goto statement_identifier ;)) (labeled_statement "LAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);" statement_identifier : (expression_statement "iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);" (assignment_expression "iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x28c4))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x28c4)" * (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x28c4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x28c4)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x28c4" identifier + number_literal) )))) )) (argument_list "(local_ac + iVar10,&local_a0,auStack_a4)" ( (binary_expression "local_ac + iVar10" identifier + identifier) , (pointer_expression "&local_a0" & identifier) , identifier )))) ;)) (expression_statement "iVar3 = local_ac;" (assignment_expression "iVar3 = local_ac" identifier = identifier) ;) (expression_statement "iVar5 = iVar5 + local_a0;" (assignment_expression "iVar5 = iVar5 + local_a0" identifier = (binary_expression "iVar5 + local_a0" identifier + identifier)) ;) (if_statement "if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }" if (parenthesized_expression "(iVar19 < local_80 + local_74 + iVar5)" ( (binary_expression "iVar19 < local_80 + local_74 + iVar5" identifier < (binary_expression "local_80 + local_74 + iVar5" (binary_expression "local_80 + local_74" identifier + identifier) + identifier)) )) (compound_statement "{\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }" { (expression_statement "iVar23 = 0;" (assignment_expression "iVar23 = 0" identifier = number_literal) ;) (do_statement "do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);" do (compound_statement "{\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    }" { (expression_statement "iVar15 = param_1[9];" (assignment_expression "iVar15 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (if_statement "if (iVar15 != 0) goto LAB_00118f9c;" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00118f9c;" goto statement_identifier ;)) (expression_statement "iVar24 = iVar5 - iVar23;" (assignment_expression "iVar24 = iVar5 - iVar23" identifier = (binary_expression "iVar5 - iVar23" identifier - identifier)) ;) (expression_statement "iVar15 = iVar3 + iVar23 + iVar10;" (assignment_expression "iVar15 = iVar3 + iVar23 + iVar10" identifier = (binary_expression "iVar3 + iVar23 + iVar10" (binary_expression "iVar3 + iVar23" identifier + identifier) + identifier)) ;) (expression_statement "iVar21 = (iVar19 - local_80) - local_74;" (assignment_expression "iVar21 = (iVar19 - local_80) - local_74" identifier = (binary_expression "(iVar19 - local_80) - local_74" (parenthesized_expression "(iVar19 - local_80)" ( (binary_expression "iVar19 - local_80" identifier - identifier) )) - identifier)) ;) (if_statement "if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }" if (parenthesized_expression "(iVar21 < iVar24)" ( (binary_expression "iVar21 < iVar24" identifier < identifier) )) (compound_statement "{\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }" { (expression_statement "iVar11 = (*pcVar8)(iVar15,auStack_9c);" (assignment_expression "iVar11 = (*pcVar8)(iVar15,auStack_9c)" identifier = (call_expression "(*pcVar8)(iVar15,auStack_9c)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(iVar15,auStack_9c)" ( identifier , identifier )))) ;) (expression_statement "iVar24 = iVar11;" (assignment_expression "iVar24 = iVar11" identifier = identifier) ;) (if_statement "if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }" if (parenthesized_expression "(iVar11 < iVar21)" ( (binary_expression "iVar11 < iVar21" identifier < identifier) )) (compound_statement "{\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }" { (do_statement "do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);" do (compound_statement "{\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          }" { (expression_statement "iVar11 = iVar24;" (assignment_expression "iVar11 = iVar24" identifier = identifier) ;) (expression_statement "iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);" (assignment_expression "iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c)" identifier = (call_expression "(*pcVar8)(iVar15 + iVar11,auStack_9c)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(iVar15 + iVar11,auStack_9c)" ( (binary_expression "iVar15 + iVar11" identifier + identifier) , identifier )))) ;) (expression_statement "iVar24 = iVar11 + iVar12;" (assignment_expression "iVar24 = iVar11 + iVar12" identifier = (binary_expression "iVar11 + iVar12" identifier + identifier)) ;) }) while (parenthesized_expression "(iVar11 + iVar12 <= iVar21)" ( (binary_expression "iVar11 + iVar12 <= iVar21" (binary_expression "iVar11 + iVar12" identifier + identifier) <= identifier) )) ;) })) (expression_statement "iVar23 = iVar23 + iVar11;" (assignment_expression "iVar23 = iVar23 + iVar11" identifier = (binary_expression "iVar23 + iVar11" identifier + identifier)) ;) (expression_statement "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);" (call_expression "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11)" (parenthesized_expression "(*(code *)PTR_memcpy_0015ba30)" ( (pointer_expression "*(code *)PTR_memcpy_0015ba30" * (cast_expression "(code *)PTR_memcpy_0015ba30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_84 + local_80,iVar15,iVar11)" ( (binary_expression "local_84 + local_80" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "local_80 = iVar11 + local_80;" (assignment_expression "local_80 = iVar11 + local_80" identifier = (binary_expression "iVar11 + local_80" identifier + identifier)) ;) (if_statement "if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;" if (parenthesized_expression "(iVar19 <= local_80 + local_74)" ( (binary_expression "iVar19 <= local_80 + local_74" identifier <= (binary_expression "local_80 + local_74" identifier + identifier)) )) (goto_statement "goto LAB_00118ff8;" goto statement_identifier ;)) }) (else_clause "else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }" else (compound_statement "{\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }" { (expression_statement "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);" (call_expression "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24)" (parenthesized_expression "(*(code *)PTR_memcpy_0015ba30)" ( (pointer_expression "*(code *)PTR_memcpy_0015ba30" * (cast_expression "(code *)PTR_memcpy_0015ba30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_84 + local_80,iVar15,iVar24)" ( (binary_expression "local_84 + local_80" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "local_80 = iVar24 + local_80;" (assignment_expression "local_80 = iVar24 + local_80" identifier = (binary_expression "iVar24 + local_80" identifier + identifier)) ;) (expression_statement "iVar23 = iVar5;" (assignment_expression "iVar23 = iVar5" identifier = identifier) ;) (if_statement "if (local_80 + local_74 < iVar19) break;" if (parenthesized_expression "(local_80 + local_74 < iVar19)" ( (binary_expression "local_80 + local_74 < iVar19" (binary_expression "local_80 + local_74" identifier + identifier) < identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);" statement_identifier : (expression_statement "(*pcVar7)(param_1,local_90);" (call_expression "(*pcVar7)(param_1,local_90)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(param_1,local_90)" ( identifier , identifier ))) ;)) }))) }) while (parenthesized_expression "(iVar23 < iVar5)" ( (binary_expression "iVar23 < iVar5" identifier < identifier) )) ;) (expression_statement "iVar15 = param_1[9];" (assignment_expression "iVar15 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = iVar10 + iVar5;" (assignment_expression "iVar5 = iVar10 + iVar5" identifier = (binary_expression "iVar10 + iVar5" identifier + identifier)) ;) }) (else_clause "else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }" else (compound_statement "{\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }" { (expression_statement "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);" (call_expression "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5)" (parenthesized_expression "(*(code *)PTR_memcpy_0015ba30)" ( (pointer_expression "*(code *)PTR_memcpy_0015ba30" * (cast_expression "(code *)PTR_memcpy_0015ba30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_84 + local_80,local_ac + iVar10,iVar5)" ( (binary_expression "local_84 + local_80" identifier + identifier) , (binary_expression "local_ac + iVar10" identifier + identifier) , identifier ))) ;) (expression_statement "iVar15 = param_1[9];" (assignment_expression "iVar15 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "local_80 = local_80 + iVar5;" (assignment_expression "local_80 = local_80 + iVar5" identifier = (binary_expression "local_80 + iVar5" identifier + identifier)) ;) (labeled_statement "LAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;" statement_identifier : (expression_statement "iVar5 = iVar10 + iVar5;" (assignment_expression "iVar5 = iVar10 + iVar5" identifier = (binary_expression "iVar10 + iVar5" identifier + identifier)) ;)) }))) }) (else_clause "else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }" else (compound_statement "{\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }" { (expression_statement "local_84[1] = (char)local_80;" (assignment_expression "local_84[1] = (char)local_80" (subscript_expression "local_84[1]" identifier [ number_literal ]) = (cast_expression "(char)local_80" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*local_84 = (char)((uint)local_80 >> 8);" (assignment_expression "*local_84 = (char)((uint)local_80 >> 8)" (pointer_expression "*local_84" * identifier) = (cast_expression "(char)((uint)local_80 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)local_80 >> 8)" ( (binary_expression "(uint)local_80 >> 8" (cast_expression "(uint)local_80" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }" if (parenthesized_expression "((local_fc == 0) && (uVar17 < 0x80))" ( (binary_expression "(local_fc == 0) && (uVar17 < 0x80)" (parenthesized_expression "(local_fc == 0)" ( (binary_expression "local_fc == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar17 < 0x80)" ( (binary_expression "uVar17 < 0x80" identifier < number_literal) ))) )) (compound_statement "{\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }" { (expression_statement "local_84[local_80] = (char)uVar17;" (assignment_expression "local_84[local_80] = (char)uVar17" (subscript_expression "local_84[local_80]" identifier [ identifier ]) = (cast_expression "(char)uVar17" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) }) (else_clause "else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }" else (compound_statement "{\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }" { (expression_statement "iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);" (assignment_expression "iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x54))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6d8 + 0x54)" * (cast_expression "(code *)(PTR_LAB_0015b6d8 + 0x54)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6d8 + 0x54)" ( (binary_expression "PTR_LAB_0015b6d8 + 0x54" identifier + number_literal) )))) )) (argument_list "(local_84 + local_80,local_fc,local_fc,uVar17)" ( (binary_expression "local_84 + local_80" identifier + identifier) , identifier , identifier , identifier )))) ;) }))) (expression_statement "local_80 = local_80 + iVar5;" (assignment_expression "local_80 = local_80 + iVar5" identifier = (binary_expression "local_80 + iVar5" identifier + identifier)) ;) (expression_statement "local_57 = '\0';" (assignment_expression "local_57 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "FUN_00101668(param_1,local_90,local_fc,uVar17);" (call_expression "FUN_00101668(param_1,local_90,local_fc,uVar17)" identifier (argument_list "(param_1,local_90,local_fc,uVar17)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if (param_1[9] != 0) goto LAB_00118b04;" if (parenthesized_expression "(param_1[9] != 0)" ( (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_00118b04;" goto statement_identifier ;)) (if_statement "if (iVar20 != 1) goto LAB_00118f30;" if (parenthesized_expression "(iVar20 != 1)" ( (binary_expression "iVar20 != 1" identifier != number_literal) )) (goto_statement "goto LAB_00118f30;" goto statement_identifier ;)) (labeled_statement "LAB_00118e60:\n                  iVar5 = iVar10;" statement_identifier : (expression_statement "iVar5 = iVar10;" (assignment_expression "iVar5 = iVar10" identifier = identifier) ;)) (expression_statement "iVar15 = local_80;" (assignment_expression "iVar15 = local_80" identifier = identifier) ;) (if_statement "if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }" if (parenthesized_expression "((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0'))" ( (binary_expression "(iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')" (parenthesized_expression "(iVar10 < local_a8)" ( (binary_expression "iVar10 < local_a8" identifier < identifier) )) && (parenthesized_expression "(*(char *)(local_ac + iVar10) == '\0')" ( (binary_expression "*(char *)(local_ac + iVar10) == '\0'" (pointer_expression "*(char *)(local_ac + iVar10)" * (cast_expression "(char *)(local_ac + iVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_ac + iVar10)" ( (binary_expression "local_ac + iVar10" identifier + identifier) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }" { (expression_statement "iVar15 = local_80 + 1;" (assignment_expression "iVar15 = local_80 + 1" identifier = (binary_expression "local_80 + 1" identifier + number_literal)) ;) (expression_statement "iVar5 = iVar10 + 1;" (assignment_expression "iVar5 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "local_84[local_80] = 0;" (assignment_expression "local_84[local_80] = 0" (subscript_expression "local_84[local_80]" identifier [ identifier ]) = number_literal) ;) (if_statement "if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }" if (parenthesized_expression "((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0'))" ( (binary_expression "(iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')" (parenthesized_expression "(iVar5 < local_a8)" ( (binary_expression "iVar5 < local_a8" identifier < identifier) )) && (parenthesized_expression "(*(char *)(local_ac + iVar5) == '\0')" ( (binary_expression "*(char *)(local_ac + iVar5) == '\0'" (pointer_expression "*(char *)(local_ac + iVar5)" * (cast_expression "(char *)(local_ac + iVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_ac + iVar5)" ( (binary_expression "local_ac + iVar5" identifier + identifier) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }" { (expression_statement "iVar5 = iVar10 + 2;" (assignment_expression "iVar5 = iVar10 + 2" identifier = (binary_expression "iVar10 + 2" identifier + number_literal)) ;) (expression_statement "local_84[iVar15] = 0;" (assignment_expression "local_84[iVar15] = 0" (subscript_expression "local_84[iVar15]" identifier [ identifier ]) = number_literal) ;) (expression_statement "iVar15 = local_80 + 2;" (assignment_expression "iVar15 = local_80 + 2" identifier = (binary_expression "local_80 + 2" identifier + number_literal)) ;) })) })) (expression_statement "local_80 = iVar15;" (assignment_expression "local_80 = iVar15" identifier = identifier) ;) (if_statement "if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }" if (parenthesized_expression "(iVar19 <= local_80 + local_74)" ( (binary_expression "iVar19 <= local_80 + local_74" identifier <= (binary_expression "local_80 + local_74" identifier + identifier)) )) (compound_statement "{\n                    (*pcVar7)(param_1,local_90);\n                  }" { (expression_statement "(*pcVar7)(param_1,local_90);" (call_expression "(*pcVar7)(param_1,local_90)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(param_1,local_90)" ( identifier , identifier ))) ;) })) (expression_statement "iVar15 = param_1[9];" (assignment_expression "iVar15 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) }))) (if_statement "if (iVar15 != 0) goto LAB_00118b04;" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00118b04;" goto statement_identifier ;)) (expression_statement "bVar1 = iVar5 < local_a8;" (assignment_expression "bVar1 = iVar5 < local_a8" identifier = (binary_expression "iVar5 < local_a8" identifier < identifier)) ;) (expression_statement "local_f4 = uVar17;" (assignment_expression "local_f4 = uVar17" identifier = identifier) ;) })) }))) (expression_statement "iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);" (assignment_expression "iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar13 + 0x10) + 4)" * (cast_expression "(int *)(*(int *)(iVar13 + 0x10) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar13 + 0x10) + 4)" ( (binary_expression "*(int *)(iVar13 + 0x10) + 4" (pointer_expression "*(int *)(iVar13 + 0x10)" * (cast_expression "(int *)(iVar13 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x10)" ( (binary_expression "iVar13 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(int *)(iVar13 + 0x10) = iVar5;" (assignment_expression "*(int *)(iVar13 + 0x10) = iVar5" (pointer_expression "*(int *)(iVar13 + 0x10)" * (cast_expression "(int *)(iVar13 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x10)" ( (binary_expression "iVar13 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((param_1[9] != 0) || (iVar5 == 0)) break;" if (parenthesized_expression "((param_1[9] != 0) || (iVar5 == 0))" ( (binary_expression "(param_1[9] != 0) || (iVar5 == 0)" (parenthesized_expression "(param_1[9] != 0)" ( (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) ))) )) (break_statement "break;" break ;)) })) })) })) (labeled_statement "LAB_00118b04:\n      piVar4 = param_1 + 9;" statement_identifier : (expression_statement "piVar4 = param_1 + 9;" (assignment_expression "piVar4 = param_1 + 9" identifier = (binary_expression "param_1 + 9" identifier + number_literal)) ;)) (expression_statement "(*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);" (call_expression "(*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6d8 + -0x3294))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6d8 + -0x3294)" * (cast_expression "(code *)(PTR_LAB_0015b6d8 + -0x3294)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6d8 + -0x3294)" ( (binary_expression "PTR_LAB_0015b6d8 + -0x3294" identifier + number_literal) )))) )) (argument_list "(iVar13)" ( identifier ))) ;) (expression_statement "piVar16 = param_1;" (assignment_expression "piVar16 = param_1" identifier = identifier) ;) (expression_statement "FUN_00102720(param_1,local_90,&local_b4);" (call_expression "FUN_00102720(param_1,local_90,&local_b4)" identifier (argument_list "(param_1,local_90,&local_b4)" ( identifier , identifier , (pointer_expression "&local_b4" & identifier) ))) ;) (if_statement "if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(local_b8[5] == 0)" ( (binary_expression "local_b8[5] == 0" (subscript_expression "local_b8[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }" { (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (if_statement "if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }" { (expression_statement "piVar16 = piVar4;" (assignment_expression "piVar16 = piVar4" identifier = identifier) ;) (expression_statement "(*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);" (call_expression "(*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8)" (parenthesized_expression "(*(code *)(PTR_DAT_0015b71c + -0x7650))" ( (pointer_expression "*(code *)(PTR_DAT_0015b71c + -0x7650)" * (cast_expression "(code *)(PTR_DAT_0015b71c + -0x7650)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b71c + -0x7650)" ( (binary_expression "PTR_DAT_0015b71c + -0x7650" identifier + number_literal) )))) )) (argument_list "(piVar4,&local_b8)" ( identifier , (pointer_expression "&local_b8" & identifier) ))) ;) (goto_statement "goto LAB_00118b60;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }" else (compound_statement "{\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }" { (labeled_statement "LAB_00118b60:\n        iVar13 = param_1[9];" statement_identifier : (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;)) (if_statement "if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }" { (expression_statement "(*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);" (call_expression "(*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0)" (parenthesized_expression "(*(code *)(PTR_DAT_0015b71c + 0xad0))" ( (pointer_expression "*(code *)(PTR_DAT_0015b71c + 0xad0)" * (cast_expression "(code *)(PTR_DAT_0015b71c + 0xad0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b71c + 0xad0)" ( (binary_expression "PTR_DAT_0015b71c + 0xad0" identifier + number_literal) )))) )) (argument_list "(piVar4,local_b8,0,0)" ( identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "piVar16 = piVar4;" (assignment_expression "piVar16 = piVar4" identifier = identifier) ;) (if_statement "if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }" { (expression_statement "piVar16 = (int *)local_b8[7];" (assignment_expression "piVar16 = (int *)local_b8[7]" identifier = (cast_expression "(int *)local_b8[7]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b8[7]" identifier [ number_literal ]))) ;) (expression_statement "local_b8[7] = (int)piVar16 + 1;" (assignment_expression "local_b8[7] = (int)piVar16 + 1" (subscript_expression "local_b8[7]" identifier [ number_literal ]) = (binary_expression "(int)piVar16 + 1" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);" (assignment_expression "piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc)" identifier = (cast_expression "(int *)(local_b8[8] + (int)piVar16 * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b8[8] + (int)piVar16 * 0xc)" ( (binary_expression "local_b8[8] + (int)piVar16 * 0xc" (subscript_expression "local_b8[8]" identifier [ number_literal ]) + (binary_expression "(int)piVar16 * 0xc" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "*piVar4 = iVar14;" (assignment_expression "*piVar4 = iVar14" (pointer_expression "*piVar4" * identifier) = identifier) ;) (expression_statement "piVar4[1] = 1;" (assignment_expression "piVar4[1] = 1" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[2] = local_b4;" (assignment_expression "piVar4[2] = local_b4" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_b8[4] = local_b8[4] + 1;" (assignment_expression "local_b8[4] = local_b8[4] + 1" (subscript_expression "local_b8[4]" identifier [ number_literal ]) = (binary_expression "local_b8[4] + 1" (subscript_expression "local_b8[4]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (if_statement "if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }" { (expression_statement "piVar16 = param_1;" (assignment_expression "piVar16 = param_1" identifier = identifier) ;) (expression_statement "(*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);" (call_expression "(*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8)" (parenthesized_expression "(*(code *)(PTR_DAT_0015b71c + 0xc48))" ( (pointer_expression "*(code *)(PTR_DAT_0015b71c + 0xc48)" * (cast_expression "(code *)(PTR_DAT_0015b71c + 0xc48)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b71c + 0xc48)" ( (binary_expression "PTR_DAT_0015b71c + 0xc48" identifier + number_literal) )))) )) (argument_list "(param_1,0,local_b8)" ( identifier , number_literal , identifier ))) ;) (goto_statement "goto LAB_00118c00;" goto statement_identifier ;) })) })) })) }))) }))) }) (else_clause "else {\nLAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    iVar13 = param_1[9];\n  }" else (compound_statement "{\nLAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    iVar13 = param_1[9];\n  }" { (labeled_statement "LAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();" statement_identifier : (expression_statement "(*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();" (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x1a0))()" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x1a0))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x1a0)" * (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x1a0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x1a0)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x1a0" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;)) (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) }))) (expression_statement "piVar4 = local_b8;" (assignment_expression "piVar4 = local_b8" identifier = identifier) ;) (expression_statement "iVar14 = *param_1;" (assignment_expression "iVar14 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if ((iVar13 == 0) && (piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16)) {\n    iVar20 = local_b8[3];\n    iVar19 = local_b8[2];\n    iVar14 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19;\n    local_b8[2] = iVar13;\n    uVar22 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14);\n    FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14);\n    piVar16 = param_1;\n    FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22);\n    iVar14 = *param_1;\n    iVar13 = param_1[9];\n  }" if (parenthesized_expression "((iVar13 == 0) && (piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16))" ( (binary_expression "(iVar13 == 0) && (piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16)" (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) && (parenthesized_expression "(piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16)" ( (comma_expression "piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16" (assignment_expression "piVar16 = *(int **)(iVar14 + 0x48)" identifier = (pointer_expression "*(int **)(iVar14 + 0x48)" * (cast_expression "(int **)(iVar14 + 0x48)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + 0x48)" ( (binary_expression "iVar14 + 0x48" identifier + number_literal) ))))) , (binary_expression "0 < (int)piVar16" number_literal < (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (compound_statement "{\n    iVar20 = local_b8[3];\n    iVar19 = local_b8[2];\n    iVar14 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19;\n    local_b8[2] = iVar13;\n    uVar22 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14);\n    FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14);\n    piVar16 = param_1;\n    FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22);\n    iVar14 = *param_1;\n    iVar13 = param_1[9];\n  }" { (expression_statement "iVar20 = local_b8[3];" (assignment_expression "iVar20 = local_b8[3]" identifier = (subscript_expression "local_b8[3]" identifier [ number_literal ])) ;) (expression_statement "iVar19 = local_b8[2];" (assignment_expression "iVar19 = local_b8[2]" identifier = (subscript_expression "local_b8[2]" identifier [ number_literal ])) ;) (expression_statement "iVar14 = param_1[2];" (assignment_expression "iVar14 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar17 = local_b4 + iVar20;" (assignment_expression "uVar17 = local_b4 + iVar20" identifier = (binary_expression "local_b4 + iVar20" identifier + identifier)) ;) (expression_statement "local_b8[3] = uVar17;" (assignment_expression "local_b8[3] = uVar17" (subscript_expression "local_b8[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19;" (assignment_expression "iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19" identifier = (binary_expression "(uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19" (binary_expression "(uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f)" (call_expression "(uint)(uVar17 < local_b4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar17 < local_b4)" ( (binary_expression "uVar17 < local_b4" identifier < identifier) ))) + (parenthesized_expression "((int)local_b4 >> 0x1f)" ( (binary_expression "(int)local_b4 >> 0x1f" (cast_expression "(int)local_b4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + identifier)) ;) (expression_statement "local_b8[2] = iVar13;" (assignment_expression "local_b8[2] = iVar13" (subscript_expression "local_b8[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar22 = *(undefined4 *)(*param_1 + 0x48);" (assignment_expression "uVar22 = *(undefined4 *)(*param_1 + 0x48)" identifier = (pointer_expression "*(undefined4 *)(*param_1 + 0x48)" * (cast_expression "(undefined4 *)(*param_1 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x48)" ( (binary_expression "*param_1 + 0x48" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14);" (call_expression "FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14)" identifier (argument_list "(iVar13,uVar17,iVar14 >> 0x1f,iVar14)" ( identifier , identifier , (binary_expression "iVar14 >> 0x1f" identifier >> number_literal) , identifier ))) ;) (expression_statement "FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14);" (call_expression "FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14)" identifier (argument_list "(iVar19,iVar20,iVar14 >> 0x1f,iVar14)" ( identifier , identifier , (binary_expression "iVar14 >> 0x1f" identifier >> number_literal) , identifier ))) ;) (expression_statement "piVar16 = param_1;" (assignment_expression "piVar16 = param_1" identifier = identifier) ;) (expression_statement "FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22);" (call_expression "FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22)" identifier (argument_list "(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22)" ( identifier , (pointer_expression "&local_b8" & identifier) , (binary_expression "(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5]" (binary_expression "(extraout_v1 - extraout_v1_00) * param_1[2]" (parenthesized_expression "(extraout_v1 - extraout_v1_00)" ( (binary_expression "extraout_v1 - extraout_v1_00" identifier - identifier) )) * (subscript_expression "param_1[2]" identifier [ number_literal ])) * (subscript_expression "piVar4[5]" identifier [ number_literal ])) , identifier ))) ;) (expression_statement "iVar14 = *param_1;" (assignment_expression "iVar14 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) })) (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (expression_statement "iVar14 = *(int *)(iVar14 + 0x4c);" (assignment_expression "iVar14 = *(int *)(iVar14 + 0x4c)" identifier = (pointer_expression "*(int *)(iVar14 + 0x4c)" * (cast_expression "(int *)(iVar14 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x4c)" ( (binary_expression "iVar14 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "pcVar18 = (code *)(PTR_DAT_0015b71c + 0xc48);" (assignment_expression "pcVar18 = (code *)(PTR_DAT_0015b71c + 0xc48)" identifier = (cast_expression "(code *)(PTR_DAT_0015b71c + 0xc48)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b71c + 0xc48)" ( (binary_expression "PTR_DAT_0015b71c + 0xc48" identifier + number_literal) )))) ;) (expression_statement "local_90[0] = local_b8;" (assignment_expression "local_90[0] = local_b8" (subscript_expression "local_90[0]" identifier [ number_literal ]) = identifier) ;) (while_statement "while (piVar4 = local_90[0], iVar13 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }\n  }" while (parenthesized_expression "(piVar4 = local_90[0], iVar13 == 0)" ( (comma_expression "piVar4 = local_90[0], iVar13 == 0" (assignment_expression "piVar4 = local_90[0]" identifier = (subscript_expression "local_90[0]" identifier [ number_literal ])) , (binary_expression "iVar13 == 0" identifier == number_literal)) )) (compound_statement "{\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }\n  }" { (while_statement "while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }" { (if_statement "if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }" if (parenthesized_expression "(local_90[0][iVar20 * 3 + 7] < iVar14)" ( (binary_expression "local_90[0][iVar20 * 3 + 7] < iVar14" (subscript_expression "local_90[0][iVar20 * 3 + 7]" (subscript_expression "local_90[0]" identifier [ number_literal ]) [ (binary_expression "iVar20 * 3 + 7" (binary_expression "iVar20 * 3" identifier * number_literal) + number_literal) ]) < identifier) )) (compound_statement "{\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }" { (expression_statement "local_b8 = local_90[0];" (assignment_expression "local_b8 = local_90[0]" identifier = (subscript_expression "local_90[0]" identifier [ number_literal ])) ;) (expression_statement "FUN_00101d04(param_1,local_90[0],local_90[0],0);" (call_expression "FUN_00101d04(param_1,local_90[0],local_90[0],0)" identifier (argument_list "(param_1,local_90[0],local_90[0],0)" ( identifier , (subscript_expression "local_90[0]" identifier [ number_literal ]) , (subscript_expression "local_90[0]" identifier [ number_literal ]) , number_literal ))) ;) (expression_statement "piVar16 = param_1;" (assignment_expression "piVar16 = param_1" identifier = identifier) ;) (expression_statement "piVar4 = local_b8;" (assignment_expression "piVar4 = local_b8" identifier = identifier) ;) (goto_statement "goto LAB_00118924;" goto statement_identifier ;) })) (expression_statement "piVar16 = param_1;" (assignment_expression "piVar16 = param_1" identifier = identifier) ;) (expression_statement "FUN_00117a5c(param_1,local_90,iVar20);" (call_expression "FUN_00117a5c(param_1,local_90,iVar20)" identifier (argument_list "(param_1,local_90,iVar20)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (if_statement "if (iVar13 != 0) break;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "piVar16 = param_1;" (assignment_expression "piVar16 = param_1" identifier = identifier) ;) (expression_statement "(*pcVar18)(param_1,iVar20);" (call_expression "(*pcVar18)(param_1,iVar20)" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "(param_1,iVar20)" ( identifier , identifier ))) ;) (expression_statement "piVar4 = local_90[0];" (assignment_expression "piVar4 = local_90[0]" identifier = (subscript_expression "local_90[0]" identifier [ number_literal ])) ;) (if_statement "if (param_1[9] != 0) goto LAB_00118924;" if (parenthesized_expression "(param_1[9] != 0)" ( (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_00118924;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00118924:\n  local_b8 = piVar4;" statement_identifier : (expression_statement "local_b8 = piVar4;" (assignment_expression "local_b8 = piVar4" identifier = identifier) ;)) (if_statement "if ((local_b8 != (int *)0x0) && (iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1)) {\n    piVar16 = local_b8;\n    (*(code *)(PTR_LAB_0015b6c0 + 0x124))();\n  }" if (parenthesized_expression "((local_b8 != (int *)0x0) && (iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1))" ( (binary_expression "(local_b8 != (int *)0x0) && (iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1)" (parenthesized_expression "(local_b8 != (int *)0x0)" ( (binary_expression "local_b8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1)" ( (comma_expression "iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1" (assignment_expression "iVar13 = *local_b8" identifier = (pointer_expression "*local_b8" * identifier)) , (comma_expression "*local_b8 = iVar13 + -1, iVar13 + -1 < 1" (assignment_expression "*local_b8 = iVar13 + -1" (pointer_expression "*local_b8" * identifier) = (binary_expression "iVar13 + -1" identifier + number_literal)) , (binary_expression "iVar13 + -1 < 1" (binary_expression "iVar13 + -1" identifier + number_literal) < number_literal))) ))) )) (compound_statement "{\n    piVar16 = local_b8;\n    (*(code *)(PTR_LAB_0015b6c0 + 0x124))();\n  }" { (expression_statement "piVar16 = local_b8;" (assignment_expression "piVar16 = local_b8" identifier = identifier) ;) (expression_statement "(*(code *)(PTR_LAB_0015b6c0 + 0x124))();" (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x124))()" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x124))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x124)" * (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x124)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x124)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x124" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;) })) (if_statement "if (local_2c == *(int *)puVar25) {\n    return *(int *)puVar25;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar25)" ( (binary_expression "local_2c == *(int *)puVar25" identifier == (pointer_expression "*(int *)puVar25" * (cast_expression "(int *)puVar25" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return *(int *)puVar25;\n  }" { (return_statement "return *(int *)puVar25;" return (pointer_expression "*(int *)puVar25" * (cast_expression "(int *)puVar25" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "puVar25 = PTR___stack_chk_fail_0015ba10;" (assignment_expression "puVar25 = PTR___stack_chk_fail_0015ba10" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0015ba10)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ba10)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ba10)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0015ba10" * (cast_expression "(code *)PTR___stack_chk_fail_0015ba10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(puVar25 + 0x42590))(*(undefined4 *)*piVar16);" (call_expression "(**(code **)(puVar25 + 0x42590))(*(undefined4 *)*piVar16)" (parenthesized_expression "(**(code **)(puVar25 + 0x42590))" ( (pointer_expression "**(code **)(puVar25 + 0x42590)" * (pointer_expression "*(code **)(puVar25 + 0x42590)" * (cast_expression "(code **)(puVar25 + 0x42590)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x42590)" ( (binary_expression "puVar25 + 0x42590" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)*piVar16)" ( (pointer_expression "*(undefined4 *)*piVar16" * (cast_expression "(undefined4 *)*piVar16" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar16" * identifier))) ))) ;) (if_statement "if (piVar16[2] != 0) {\n    iVar13 = FUN_00101508(piVar16);\n    piVar16[2] = 0;\n    if (iVar13 != 0) goto LAB_00119204;\n  }" if (parenthesized_expression "(piVar16[2] != 0)" ( (binary_expression "piVar16[2] != 0" (subscript_expression "piVar16[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    iVar13 = FUN_00101508(piVar16);\n    piVar16[2] = 0;\n    if (iVar13 != 0) goto LAB_00119204;\n  }" { (expression_statement "iVar13 = FUN_00101508(piVar16);" (assignment_expression "iVar13 = FUN_00101508(piVar16)" identifier = (call_expression "FUN_00101508(piVar16)" identifier (argument_list "(piVar16)" ( identifier )))) ;) (expression_statement "piVar16[2] = 0;" (assignment_expression "piVar16[2] = 0" (subscript_expression "piVar16[2]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (iVar13 != 0) goto LAB_00119204;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00119204;" goto statement_identifier ;)) })) (expression_statement "iVar14 = piVar16[1];" (assignment_expression "iVar14 = piVar16[1]" identifier = (subscript_expression "piVar16[1]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(iVar14 + 0x10) != 0) {\n    *(undefined4 *)(iVar14 + 0x10) = 0;\n    FUN_001187e0(iVar14);\n  }" if (parenthesized_expression "(*(int *)(iVar14 + 0x10) != 0)" ( (binary_expression "*(int *)(iVar14 + 0x10) != 0" (pointer_expression "*(int *)(iVar14 + 0x10)" * (cast_expression "(int *)(iVar14 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x10)" ( (binary_expression "iVar14 + 0x10" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    *(undefined4 *)(iVar14 + 0x10) = 0;\n    FUN_001187e0(iVar14);\n  }" { (expression_statement "*(undefined4 *)(iVar14 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 0x10) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 0x10)" * (cast_expression "(undefined4 *)(iVar14 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x10)" ( (binary_expression "iVar14 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001187e0(iVar14);" (call_expression "FUN_001187e0(iVar14)" identifier (argument_list "(iVar14)" ( identifier ))) ;) })) (expression_statement "pcVar18 = *(code **)(puVar25 + 0x42708);" (assignment_expression "pcVar18 = *(code **)(puVar25 + 0x42708)" identifier = (pointer_expression "*(code **)(puVar25 + 0x42708)" * (cast_expression "(code **)(puVar25 + 0x42708)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x42708)" ( (binary_expression "puVar25 + 0x42708" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(iVar14 + 0x28) != 0) {\n    *(undefined4 *)(iVar14 + 0x28) = 0;\n    (*pcVar18)();\n  }" if (parenthesized_expression "(*(int *)(iVar14 + 0x28) != 0)" ( (binary_expression "*(int *)(iVar14 + 0x28) != 0" (pointer_expression "*(int *)(iVar14 + 0x28)" * (cast_expression "(int *)(iVar14 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x28)" ( (binary_expression "iVar14 + 0x28" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    *(undefined4 *)(iVar14 + 0x28) = 0;\n    (*pcVar18)();\n  }" { (expression_statement "*(undefined4 *)(iVar14 + 0x28) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 0x28) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 0x28)" * (cast_expression "(undefined4 *)(iVar14 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x28)" ( (binary_expression "iVar14 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "iVar13 = *(int *)(iVar14 + 0x24);" (assignment_expression "iVar13 = *(int *)(iVar14 + 0x24)" identifier = (pointer_expression "*(int *)(iVar14 + 0x24)" * (cast_expression "(int *)(iVar14 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x24)" ( (binary_expression "iVar14 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar14 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 0x24) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 0x24)" * (cast_expression "(undefined4 *)(iVar14 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x24)" ( (binary_expression "iVar14 + 0x24" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_00119204:\n  (**(code **)(puVar25 + 0x42778))(*(undefined4 *)*piVar16);" statement_identifier : (expression_statement "(**(code **)(puVar25 + 0x42778))(*(undefined4 *)*piVar16);" (call_expression "(**(code **)(puVar25 + 0x42778))(*(undefined4 *)*piVar16)" (parenthesized_expression "(**(code **)(puVar25 + 0x42778))" ( (pointer_expression "**(code **)(puVar25 + 0x42778)" * (pointer_expression "*(code **)(puVar25 + 0x42778)" * (cast_expression "(code **)(puVar25 + 0x42778)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x42778)" ( (binary_expression "puVar25 + 0x42778" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)*piVar16)" ( (pointer_expression "*(undefined4 *)*piVar16" * (cast_expression "(undefined4 *)*piVar16" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar16" * identifier))) ))) ;)) (return_statement "return iVar13;" return identifier ;) })))
(translation_unit "void fts5FlushOneHash(Fts5Index *p)\n\n{\n  bool bVar1;\n  char *pcVar2;\n  u8 *puVar3;\n  Fts5Structure *pFVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  Fts5StructureSegment *pFVar8;\n  int iVar9;\n  Fts5HashEntry *pFVar10;\n  undefined4 uVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  Fts5Hash *pFVar15;\n  Fts5Config *pFVar16;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar17;\n  Fts5Index *p_00;\n  uint uVar18;\n  Fts5Index *pFVar19;\n  int iVar20;\n  int iVar21;\n  u8 *puVar22;\n  int iVar23;\n  int iVar24;\n  int iVar25;\n  int iVar26;\n  int in_t9;\n  int iVar27;\n  code *pcVar28;\n  code *pcVar29;\n  int iVar30;\n  undefined4 in_stack_fffffefc;\n  int iStack_fc;\n  uint uStack_f4;\n  Fts5Structure *pStruct;\n  int pgnoLast;\n  char *zTerm;\n  u8 *pDoclist;\n  int nDoclist;\n  int bDummy;\n  int nPos;\n  u32 dummy;\n  i64 iDelta;\n  Fts5SegWriter writer;\n  \n  iVar30 = in_t9 + 0x4add0;\n  piVar5 = *(int **)(in_t9 + 0x4324c);\n  p_00 = (Fts5Index *)&p->pStruct;\n  pgnoLast = 0;\n  pFVar15 = p->pHash;\n  iVar6 = *piVar5;\n  pStruct = fts5StructureRead(p);\n  if (p->rc == 0) {\n    if (1999 < pStruct->nSegment) {\n      p->rc = 0xd;\n      goto LAB_00118864;\n    }\n    iVar20 = (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x444))(pStruct);\n    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))();\n    if (iVar20 == 0) {\nLAB_00118c00:\n      iVar7 = p->rc;\n    }\n    else {\n      iVar21 = p->pConfig->pgsz;\n      iVar7 = p->pConfig->eDetail;\n      (*(code *)(*(int *)(iVar30 + -0x7d30) + 0x7a50))(p,&writer,iVar20);\n      if (p->rc == 0) {\n        iVar23 = (*(code *)(*(int *)(iVar30 + -0x7eb0) + 0x2fcc))(pFVar15,0,0,&pFVar15->pScan);\n        p->rc = iVar23;\n        if ((iVar23 != 0) ||\n           (iVar23 = *(int *)(iVar30 + -0x7ef0), pFVar15->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00118afc;\n        iVar24 = *(int *)(iVar30 + -0x7ee0);\n        iVar9 = *(int *)(iVar30 + -0x7f54);\n        pcVar28 = (code *)(*(int *)(iVar30 + -0x7ee0) + 0x19d0);\n        pcVar29 = (code *)(*(int *)(iVar30 + -0x7ef0) + 0x27e0);\n        do {\n          (*(code *)(iVar23 + 0x3d7c))(pFVar15,&zTerm,&pDoclist,&nDoclist);\n          pcVar2 = zTerm;\n          uVar11 = (**(code **)(iVar30 + -0x7bec))(zTerm);\n          (*(code *)(iVar24 + 0x2384))(p,&writer,uVar11,pcVar2);\n          if (p->rc != 0) goto LAB_00118afc;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar21) {\n            (**(code **)(iVar30 + -0x7b80))(writer.writer.buf.p + writer.writer.buf.n,pDoclist);\n            writer.writer.buf.n = writer.writer.buf.n + nDoclist;\n            if (p->rc != 0) goto LAB_00118afc;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar27 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta);\n              iVar12 = iVar27 + iVar12;\n              uVar18 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                if (iVar7 == 1) goto LAB_00118e60;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\nLAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);\n                puVar3 = pDoclist;\n                iVar27 = iVar27 + nPos;\n                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }\n              }\n              else {\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }\n              if (iVar17 != 0) goto LAB_00118afc;\n              bVar1 = iVar27 < nDoclist;\n              uStack_f4 = uVar18;\n            }\n          }\n          pFVar10 = pFVar15->pScan->pScanNext;\n          pFVar15->pScan = pFVar10;\n          iVar27 = *(int *)(iVar30 + -0x7ed8);\n        } while ((p->rc == 0) && (pFVar10 != (Fts5HashEntry *)0x0));\n      }\n      else {\nLAB_00118afc:\n        iVar27 = *(int *)(iVar30 + -0x7ed8);\n      }\n      pFVar19 = (Fts5Index *)&p->rc;\n      (*(code *)(iVar27 + -0x3294))(pFVar15);\n      p_00 = p;\n      fts5WriteFinish(p,&writer,&pgnoLast);\n      if (pStruct->nLevel == 0) {\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          p_00 = pFVar19;\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + -0x7650))(pFVar19,&pStruct);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xad0))(pFVar19,pStruct,0,0);\n          iVar7 = p->rc;\n          p_00 = pFVar19;\n          if (iVar7 == 0) {\n            p_00 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&p_00->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)p_00;\n            pFVar8->iSegid = iVar20;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              p_00 = p;\n              (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00118864:\n    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))();\n    iVar7 = p->rc;\n  }\n  pFVar4 = pStruct;\n  pFVar16 = p->pConfig;\n  if ((iVar7 == 0) && (p_00 = (Fts5Index *)pFVar16->nAutomerge, 0 < (int)p_00)) {\n    iVar21 = (int)pStruct->nWriteCounter;\n    iVar23 = *(int *)&pStruct->nWriteCounter;\n    iVar7 = p->nWorkUnit;\n    uVar18 = pgnoLast + iVar21;\n    *(uint *)((int)&pStruct->nWriteCounter + 4) = uVar18;\n    iVar20 = (uint)(uVar18 < (uint)pgnoLast) + (pgnoLast >> 0x1f) + iVar23;\n    *(int *)&pStruct->nWriteCounter = iVar20;\n    iVar24 = p->pConfig->nAutomerge;\n    __udivdi3(iVar20,uVar18,iVar7 >> 0x1f,iVar7);\n    __udivdi3(iVar23,iVar21,iVar7 >> 0x1f,iVar7);\n    p_00 = p;\n    fts5IndexMerge(p,&pStruct,(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar4->nLevel,iVar24)\n    ;\n    pFVar16 = p->pConfig;\n    iVar7 = p->rc;\n  }\n  iVar23 = 0;\n  iVar21 = *(int *)(iVar30 + -0x7e94);\n  iVar20 = pFVar16->nCrisisMerge;\n  writer.iSegid = (int)pStruct;\n  while (pFVar4 = (Fts5Structure *)writer.iSegid, iVar7 == 0) {\n    while( true ) {\n      if (*(int *)(writer.iSegid + iVar23 * 0xc + 0x1c) < iVar20) {\n        pStruct = (Fts5Structure *)writer.iSegid;\n        fts5StructureWrite(p,(Fts5Structure *)writer.iSegid);\n        p_00 = p;\n        pFVar4 = pStruct;\n        goto LAB_00118924;\n      }\n      p_00 = p;\n      fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar23,(int *)0x0);\n      iVar23 = iVar23 + 1;\n      iVar7 = p->rc;\n      if (iVar7 != 0) break;\n      p_00 = p;\n      (*(code *)(iVar21 + 0xc48))(p,iVar23);\n      pFVar4 = (Fts5Structure *)writer.iSegid;\n      if (p->rc != 0) goto LAB_00118924;\n    }\n  }\nLAB_00118924:\n  pStruct = pFVar4;\n  if ((pStruct != (Fts5Structure *)0x0) &&\n     (iVar20 = pStruct->nRef + -1, pStruct->nRef = iVar20, iVar20 < 1)) {\n    p_00 = (Fts5Index *)pStruct;\n    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x124))();\n  }\n  if (iVar6 == *piVar5) {\n    return;\n  }\n  pcVar28 = *(code **)(iVar30 + -0x7ba0);\n  (*pcVar28)();\n  (**(code **)(pcVar28 + 0x42590))(p_00->pConfig->db);\n  if (p_00->nWorkUnit != 0) {\n    iVar6 = fts5StorageSaveTotals((Fts5Storage *)p_00);\n    p_00->nWorkUnit = 0;\n    if (iVar6 != 0) goto LAB_00119204;\n  }\n  pFVar19 = (Fts5Index *)p_00->zDataTbl;\n  if (pFVar19->nPendingData != 0) {\n    pFVar19->nPendingData = 0;\n    fts5FlushOneHash(pFVar19);\n  }\n  pcVar29 = *(code **)(pcVar28 + 0x42708);\n  if (pFVar19->pReader != (sqlite3_blob *)0x0) {\n    pFVar19->pReader = (sqlite3_blob *)0x0;\n    (*pcVar29)();\n  }\n  pFVar19->rc = 0;\nLAB_00119204:\n  (**(code **)(pcVar28 + 0x42778))(p_00->pConfig->db);\n  return;\n}\n\n" (function_definition "void fts5FlushOneHash(Fts5Index *p)\n\n{\n  bool bVar1;\n  char *pcVar2;\n  u8 *puVar3;\n  Fts5Structure *pFVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  Fts5StructureSegment *pFVar8;\n  int iVar9;\n  Fts5HashEntry *pFVar10;\n  undefined4 uVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  Fts5Hash *pFVar15;\n  Fts5Config *pFVar16;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar17;\n  Fts5Index *p_00;\n  uint uVar18;\n  Fts5Index *pFVar19;\n  int iVar20;\n  int iVar21;\n  u8 *puVar22;\n  int iVar23;\n  int iVar24;\n  int iVar25;\n  int iVar26;\n  int in_t9;\n  int iVar27;\n  code *pcVar28;\n  code *pcVar29;\n  int iVar30;\n  undefined4 in_stack_fffffefc;\n  int iStack_fc;\n  uint uStack_f4;\n  Fts5Structure *pStruct;\n  int pgnoLast;\n  char *zTerm;\n  u8 *pDoclist;\n  int nDoclist;\n  int bDummy;\n  int nPos;\n  u32 dummy;\n  i64 iDelta;\n  Fts5SegWriter writer;\n  \n  iVar30 = in_t9 + 0x4add0;\n  piVar5 = *(int **)(in_t9 + 0x4324c);\n  p_00 = (Fts5Index *)&p->pStruct;\n  pgnoLast = 0;\n  pFVar15 = p->pHash;\n  iVar6 = *piVar5;\n  pStruct = fts5StructureRead(p);\n  if (p->rc == 0) {\n    if (1999 < pStruct->nSegment) {\n      p->rc = 0xd;\n      goto LAB_00118864;\n    }\n    iVar20 = (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x444))(pStruct);\n    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))();\n    if (iVar20 == 0) {\nLAB_00118c00:\n      iVar7 = p->rc;\n    }\n    else {\n      iVar21 = p->pConfig->pgsz;\n      iVar7 = p->pConfig->eDetail;\n      (*(code *)(*(int *)(iVar30 + -0x7d30) + 0x7a50))(p,&writer,iVar20);\n      if (p->rc == 0) {\n        iVar23 = (*(code *)(*(int *)(iVar30 + -0x7eb0) + 0x2fcc))(pFVar15,0,0,&pFVar15->pScan);\n        p->rc = iVar23;\n        if ((iVar23 != 0) ||\n           (iVar23 = *(int *)(iVar30 + -0x7ef0), pFVar15->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00118afc;\n        iVar24 = *(int *)(iVar30 + -0x7ee0);\n        iVar9 = *(int *)(iVar30 + -0x7f54);\n        pcVar28 = (code *)(*(int *)(iVar30 + -0x7ee0) + 0x19d0);\n        pcVar29 = (code *)(*(int *)(iVar30 + -0x7ef0) + 0x27e0);\n        do {\n          (*(code *)(iVar23 + 0x3d7c))(pFVar15,&zTerm,&pDoclist,&nDoclist);\n          pcVar2 = zTerm;\n          uVar11 = (**(code **)(iVar30 + -0x7bec))(zTerm);\n          (*(code *)(iVar24 + 0x2384))(p,&writer,uVar11,pcVar2);\n          if (p->rc != 0) goto LAB_00118afc;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar21) {\n            (**(code **)(iVar30 + -0x7b80))(writer.writer.buf.p + writer.writer.buf.n,pDoclist);\n            writer.writer.buf.n = writer.writer.buf.n + nDoclist;\n            if (p->rc != 0) goto LAB_00118afc;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar27 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta);\n              iVar12 = iVar27 + iVar12;\n              uVar18 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                if (iVar7 == 1) goto LAB_00118e60;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\nLAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);\n                puVar3 = pDoclist;\n                iVar27 = iVar27 + nPos;\n                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }\n              }\n              else {\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }\n              if (iVar17 != 0) goto LAB_00118afc;\n              bVar1 = iVar27 < nDoclist;\n              uStack_f4 = uVar18;\n            }\n          }\n          pFVar10 = pFVar15->pScan->pScanNext;\n          pFVar15->pScan = pFVar10;\n          iVar27 = *(int *)(iVar30 + -0x7ed8);\n        } while ((p->rc == 0) && (pFVar10 != (Fts5HashEntry *)0x0));\n      }\n      else {\nLAB_00118afc:\n        iVar27 = *(int *)(iVar30 + -0x7ed8);\n      }\n      pFVar19 = (Fts5Index *)&p->rc;\n      (*(code *)(iVar27 + -0x3294))(pFVar15);\n      p_00 = p;\n      fts5WriteFinish(p,&writer,&pgnoLast);\n      if (pStruct->nLevel == 0) {\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          p_00 = pFVar19;\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + -0x7650))(pFVar19,&pStruct);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xad0))(pFVar19,pStruct,0,0);\n          iVar7 = p->rc;\n          p_00 = pFVar19;\n          if (iVar7 == 0) {\n            p_00 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&p_00->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)p_00;\n            pFVar8->iSegid = iVar20;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              p_00 = p;\n              (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00118864:\n    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))();\n    iVar7 = p->rc;\n  }\n  pFVar4 = pStruct;\n  pFVar16 = p->pConfig;\n  if ((iVar7 == 0) && (p_00 = (Fts5Index *)pFVar16->nAutomerge, 0 < (int)p_00)) {\n    iVar21 = (int)pStruct->nWriteCounter;\n    iVar23 = *(int *)&pStruct->nWriteCounter;\n    iVar7 = p->nWorkUnit;\n    uVar18 = pgnoLast + iVar21;\n    *(uint *)((int)&pStruct->nWriteCounter + 4) = uVar18;\n    iVar20 = (uint)(uVar18 < (uint)pgnoLast) + (pgnoLast >> 0x1f) + iVar23;\n    *(int *)&pStruct->nWriteCounter = iVar20;\n    iVar24 = p->pConfig->nAutomerge;\n    __udivdi3(iVar20,uVar18,iVar7 >> 0x1f,iVar7);\n    __udivdi3(iVar23,iVar21,iVar7 >> 0x1f,iVar7);\n    p_00 = p;\n    fts5IndexMerge(p,&pStruct,(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar4->nLevel,iVar24)\n    ;\n    pFVar16 = p->pConfig;\n    iVar7 = p->rc;\n  }\n  iVar23 = 0;\n  iVar21 = *(int *)(iVar30 + -0x7e94);\n  iVar20 = pFVar16->nCrisisMerge;\n  writer.iSegid = (int)pStruct;\n  while (pFVar4 = (Fts5Structure *)writer.iSegid, iVar7 == 0) {\n    while( true ) {\n      if (*(int *)(writer.iSegid + iVar23 * 0xc + 0x1c) < iVar20) {\n        pStruct = (Fts5Structure *)writer.iSegid;\n        fts5StructureWrite(p,(Fts5Structure *)writer.iSegid);\n        p_00 = p;\n        pFVar4 = pStruct;\n        goto LAB_00118924;\n      }\n      p_00 = p;\n      fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar23,(int *)0x0);\n      iVar23 = iVar23 + 1;\n      iVar7 = p->rc;\n      if (iVar7 != 0) break;\n      p_00 = p;\n      (*(code *)(iVar21 + 0xc48))(p,iVar23);\n      pFVar4 = (Fts5Structure *)writer.iSegid;\n      if (p->rc != 0) goto LAB_00118924;\n    }\n  }\nLAB_00118924:\n  pStruct = pFVar4;\n  if ((pStruct != (Fts5Structure *)0x0) &&\n     (iVar20 = pStruct->nRef + -1, pStruct->nRef = iVar20, iVar20 < 1)) {\n    p_00 = (Fts5Index *)pStruct;\n    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x124))();\n  }\n  if (iVar6 == *piVar5) {\n    return;\n  }\n  pcVar28 = *(code **)(iVar30 + -0x7ba0);\n  (*pcVar28)();\n  (**(code **)(pcVar28 + 0x42590))(p_00->pConfig->db);\n  if (p_00->nWorkUnit != 0) {\n    iVar6 = fts5StorageSaveTotals((Fts5Storage *)p_00);\n    p_00->nWorkUnit = 0;\n    if (iVar6 != 0) goto LAB_00119204;\n  }\n  pFVar19 = (Fts5Index *)p_00->zDataTbl;\n  if (pFVar19->nPendingData != 0) {\n    pFVar19->nPendingData = 0;\n    fts5FlushOneHash(pFVar19);\n  }\n  pcVar29 = *(code **)(pcVar28 + 0x42708);\n  if (pFVar19->pReader != (sqlite3_blob *)0x0) {\n    pFVar19->pReader = (sqlite3_blob *)0x0;\n    (*pcVar29)();\n  }\n  pFVar19->rc = 0;\nLAB_00119204:\n  (**(code **)(pcVar28 + 0x42778))(p_00->pConfig->db);\n  return;\n}" primitive_type (function_declarator "fts5FlushOneHash(Fts5Index *p)" identifier (parameter_list "(Fts5Index *p)" ( (parameter_declaration "Fts5Index *p" type_identifier (pointer_declarator "*p" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  char *pcVar2;\n  u8 *puVar3;\n  Fts5Structure *pFVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  Fts5StructureSegment *pFVar8;\n  int iVar9;\n  Fts5HashEntry *pFVar10;\n  undefined4 uVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  Fts5Hash *pFVar15;\n  Fts5Config *pFVar16;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar17;\n  Fts5Index *p_00;\n  uint uVar18;\n  Fts5Index *pFVar19;\n  int iVar20;\n  int iVar21;\n  u8 *puVar22;\n  int iVar23;\n  int iVar24;\n  int iVar25;\n  int iVar26;\n  int in_t9;\n  int iVar27;\n  code *pcVar28;\n  code *pcVar29;\n  int iVar30;\n  undefined4 in_stack_fffffefc;\n  int iStack_fc;\n  uint uStack_f4;\n  Fts5Structure *pStruct;\n  int pgnoLast;\n  char *zTerm;\n  u8 *pDoclist;\n  int nDoclist;\n  int bDummy;\n  int nPos;\n  u32 dummy;\n  i64 iDelta;\n  Fts5SegWriter writer;\n  \n  iVar30 = in_t9 + 0x4add0;\n  piVar5 = *(int **)(in_t9 + 0x4324c);\n  p_00 = (Fts5Index *)&p->pStruct;\n  pgnoLast = 0;\n  pFVar15 = p->pHash;\n  iVar6 = *piVar5;\n  pStruct = fts5StructureRead(p);\n  if (p->rc == 0) {\n    if (1999 < pStruct->nSegment) {\n      p->rc = 0xd;\n      goto LAB_00118864;\n    }\n    iVar20 = (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x444))(pStruct);\n    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))();\n    if (iVar20 == 0) {\nLAB_00118c00:\n      iVar7 = p->rc;\n    }\n    else {\n      iVar21 = p->pConfig->pgsz;\n      iVar7 = p->pConfig->eDetail;\n      (*(code *)(*(int *)(iVar30 + -0x7d30) + 0x7a50))(p,&writer,iVar20);\n      if (p->rc == 0) {\n        iVar23 = (*(code *)(*(int *)(iVar30 + -0x7eb0) + 0x2fcc))(pFVar15,0,0,&pFVar15->pScan);\n        p->rc = iVar23;\n        if ((iVar23 != 0) ||\n           (iVar23 = *(int *)(iVar30 + -0x7ef0), pFVar15->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00118afc;\n        iVar24 = *(int *)(iVar30 + -0x7ee0);\n        iVar9 = *(int *)(iVar30 + -0x7f54);\n        pcVar28 = (code *)(*(int *)(iVar30 + -0x7ee0) + 0x19d0);\n        pcVar29 = (code *)(*(int *)(iVar30 + -0x7ef0) + 0x27e0);\n        do {\n          (*(code *)(iVar23 + 0x3d7c))(pFVar15,&zTerm,&pDoclist,&nDoclist);\n          pcVar2 = zTerm;\n          uVar11 = (**(code **)(iVar30 + -0x7bec))(zTerm);\n          (*(code *)(iVar24 + 0x2384))(p,&writer,uVar11,pcVar2);\n          if (p->rc != 0) goto LAB_00118afc;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar21) {\n            (**(code **)(iVar30 + -0x7b80))(writer.writer.buf.p + writer.writer.buf.n,pDoclist);\n            writer.writer.buf.n = writer.writer.buf.n + nDoclist;\n            if (p->rc != 0) goto LAB_00118afc;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar27 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta);\n              iVar12 = iVar27 + iVar12;\n              uVar18 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                if (iVar7 == 1) goto LAB_00118e60;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\nLAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);\n                puVar3 = pDoclist;\n                iVar27 = iVar27 + nPos;\n                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }\n              }\n              else {\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }\n              if (iVar17 != 0) goto LAB_00118afc;\n              bVar1 = iVar27 < nDoclist;\n              uStack_f4 = uVar18;\n            }\n          }\n          pFVar10 = pFVar15->pScan->pScanNext;\n          pFVar15->pScan = pFVar10;\n          iVar27 = *(int *)(iVar30 + -0x7ed8);\n        } while ((p->rc == 0) && (pFVar10 != (Fts5HashEntry *)0x0));\n      }\n      else {\nLAB_00118afc:\n        iVar27 = *(int *)(iVar30 + -0x7ed8);\n      }\n      pFVar19 = (Fts5Index *)&p->rc;\n      (*(code *)(iVar27 + -0x3294))(pFVar15);\n      p_00 = p;\n      fts5WriteFinish(p,&writer,&pgnoLast);\n      if (pStruct->nLevel == 0) {\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          p_00 = pFVar19;\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + -0x7650))(pFVar19,&pStruct);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xad0))(pFVar19,pStruct,0,0);\n          iVar7 = p->rc;\n          p_00 = pFVar19;\n          if (iVar7 == 0) {\n            p_00 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&p_00->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)p_00;\n            pFVar8->iSegid = iVar20;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              p_00 = p;\n              (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00118864:\n    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))();\n    iVar7 = p->rc;\n  }\n  pFVar4 = pStruct;\n  pFVar16 = p->pConfig;\n  if ((iVar7 == 0) && (p_00 = (Fts5Index *)pFVar16->nAutomerge, 0 < (int)p_00)) {\n    iVar21 = (int)pStruct->nWriteCounter;\n    iVar23 = *(int *)&pStruct->nWriteCounter;\n    iVar7 = p->nWorkUnit;\n    uVar18 = pgnoLast + iVar21;\n    *(uint *)((int)&pStruct->nWriteCounter + 4) = uVar18;\n    iVar20 = (uint)(uVar18 < (uint)pgnoLast) + (pgnoLast >> 0x1f) + iVar23;\n    *(int *)&pStruct->nWriteCounter = iVar20;\n    iVar24 = p->pConfig->nAutomerge;\n    __udivdi3(iVar20,uVar18,iVar7 >> 0x1f,iVar7);\n    __udivdi3(iVar23,iVar21,iVar7 >> 0x1f,iVar7);\n    p_00 = p;\n    fts5IndexMerge(p,&pStruct,(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar4->nLevel,iVar24)\n    ;\n    pFVar16 = p->pConfig;\n    iVar7 = p->rc;\n  }\n  iVar23 = 0;\n  iVar21 = *(int *)(iVar30 + -0x7e94);\n  iVar20 = pFVar16->nCrisisMerge;\n  writer.iSegid = (int)pStruct;\n  while (pFVar4 = (Fts5Structure *)writer.iSegid, iVar7 == 0) {\n    while( true ) {\n      if (*(int *)(writer.iSegid + iVar23 * 0xc + 0x1c) < iVar20) {\n        pStruct = (Fts5Structure *)writer.iSegid;\n        fts5StructureWrite(p,(Fts5Structure *)writer.iSegid);\n        p_00 = p;\n        pFVar4 = pStruct;\n        goto LAB_00118924;\n      }\n      p_00 = p;\n      fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar23,(int *)0x0);\n      iVar23 = iVar23 + 1;\n      iVar7 = p->rc;\n      if (iVar7 != 0) break;\n      p_00 = p;\n      (*(code *)(iVar21 + 0xc48))(p,iVar23);\n      pFVar4 = (Fts5Structure *)writer.iSegid;\n      if (p->rc != 0) goto LAB_00118924;\n    }\n  }\nLAB_00118924:\n  pStruct = pFVar4;\n  if ((pStruct != (Fts5Structure *)0x0) &&\n     (iVar20 = pStruct->nRef + -1, pStruct->nRef = iVar20, iVar20 < 1)) {\n    p_00 = (Fts5Index *)pStruct;\n    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x124))();\n  }\n  if (iVar6 == *piVar5) {\n    return;\n  }\n  pcVar28 = *(code **)(iVar30 + -0x7ba0);\n  (*pcVar28)();\n  (**(code **)(pcVar28 + 0x42590))(p_00->pConfig->db);\n  if (p_00->nWorkUnit != 0) {\n    iVar6 = fts5StorageSaveTotals((Fts5Storage *)p_00);\n    p_00->nWorkUnit = 0;\n    if (iVar6 != 0) goto LAB_00119204;\n  }\n  pFVar19 = (Fts5Index *)p_00->zDataTbl;\n  if (pFVar19->nPendingData != 0) {\n    pFVar19->nPendingData = 0;\n    fts5FlushOneHash(pFVar19);\n  }\n  pcVar29 = *(code **)(pcVar28 + 0x42708);\n  if (pFVar19->pReader != (sqlite3_blob *)0x0) {\n    pFVar19->pReader = (sqlite3_blob *)0x0;\n    (*pcVar29)();\n  }\n  pFVar19->rc = 0;\nLAB_00119204:\n  (**(code **)(pcVar28 + 0x42778))(p_00->pConfig->db);\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "u8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "Fts5Structure *pFVar4;" type_identifier (pointer_declarator "*pFVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "Fts5StructureSegment *pFVar8;" type_identifier (pointer_declarator "*pFVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "Fts5HashEntry *pFVar10;" type_identifier (pointer_declarator "*pFVar10" * identifier) ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "Fts5Hash *pFVar15;" type_identifier (pointer_declarator "*pFVar15" * identifier) ;) (declaration "Fts5Config *pFVar16;" type_identifier (pointer_declarator "*pFVar16" * identifier) ;) (declaration "int extraout_v1;" primitive_type identifier ;) (declaration "int extraout_v1_00;" primitive_type identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "Fts5Index *p_00;" type_identifier (pointer_declarator "*p_00" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "Fts5Index *pFVar19;" type_identifier (pointer_declarator "*pFVar19" * identifier) ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "u8 *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "int iVar23;" primitive_type identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "int iVar26;" primitive_type identifier ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "code *pcVar28;" type_identifier (pointer_declarator "*pcVar28" * identifier) ;) (declaration "code *pcVar29;" type_identifier (pointer_declarator "*pcVar29" * identifier) ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "undefined4 in_stack_fffffefc;" type_identifier identifier ;) (declaration "int iStack_fc;" primitive_type identifier ;) (declaration "uint uStack_f4;" type_identifier identifier ;) (declaration "Fts5Structure *pStruct;" type_identifier (pointer_declarator "*pStruct" * identifier) ;) (declaration "int pgnoLast;" primitive_type identifier ;) (declaration "char *zTerm;" primitive_type (pointer_declarator "*zTerm" * identifier) ;) (declaration "u8 *pDoclist;" type_identifier (pointer_declarator "*pDoclist" * identifier) ;) (declaration "int nDoclist;" primitive_type identifier ;) (declaration "int bDummy;" primitive_type identifier ;) (declaration "int nPos;" primitive_type identifier ;) (declaration "u32 dummy;" type_identifier identifier ;) (declaration "i64 iDelta;" type_identifier identifier ;) (declaration "Fts5SegWriter writer;" type_identifier identifier ;) (expression_statement "iVar30 = in_t9 + 0x4add0;" (assignment_expression "iVar30 = in_t9 + 0x4add0" identifier = (binary_expression "in_t9 + 0x4add0" identifier + number_literal)) ;) (expression_statement "piVar5 = *(int **)(in_t9 + 0x4324c);" (assignment_expression "piVar5 = *(int **)(in_t9 + 0x4324c)" identifier = (pointer_expression "*(int **)(in_t9 + 0x4324c)" * (cast_expression "(int **)(in_t9 + 0x4324c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x4324c)" ( (binary_expression "in_t9 + 0x4324c" identifier + number_literal) ))))) ;) (expression_statement "p_00 = (Fts5Index *)&p->pStruct;" (assignment_expression "p_00 = (Fts5Index *)&p->pStruct" identifier = (cast_expression "(Fts5Index *)&p->pStruct" ( (type_descriptor "Fts5Index *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p->pStruct" & (field_expression "p->pStruct" identifier -> field_identifier)))) ;) (expression_statement "pgnoLast = 0;" (assignment_expression "pgnoLast = 0" identifier = number_literal) ;) (expression_statement "pFVar15 = p->pHash;" (assignment_expression "pFVar15 = p->pHash" identifier = (field_expression "p->pHash" identifier -> field_identifier)) ;) (expression_statement "iVar6 = *piVar5;" (assignment_expression "iVar6 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "pStruct = fts5StructureRead(p);" (assignment_expression "pStruct = fts5StructureRead(p)" identifier = (call_expression "fts5StructureRead(p)" identifier (argument_list "(p)" ( identifier )))) ;) (if_statement "if (p->rc == 0) {\n    if (1999 < pStruct->nSegment) {\n      p->rc = 0xd;\n      goto LAB_00118864;\n    }\n    iVar20 = (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x444))(pStruct);\n    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))();\n    if (iVar20 == 0) {\nLAB_00118c00:\n      iVar7 = p->rc;\n    }\n    else {\n      iVar21 = p->pConfig->pgsz;\n      iVar7 = p->pConfig->eDetail;\n      (*(code *)(*(int *)(iVar30 + -0x7d30) + 0x7a50))(p,&writer,iVar20);\n      if (p->rc == 0) {\n        iVar23 = (*(code *)(*(int *)(iVar30 + -0x7eb0) + 0x2fcc))(pFVar15,0,0,&pFVar15->pScan);\n        p->rc = iVar23;\n        if ((iVar23 != 0) ||\n           (iVar23 = *(int *)(iVar30 + -0x7ef0), pFVar15->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00118afc;\n        iVar24 = *(int *)(iVar30 + -0x7ee0);\n        iVar9 = *(int *)(iVar30 + -0x7f54);\n        pcVar28 = (code *)(*(int *)(iVar30 + -0x7ee0) + 0x19d0);\n        pcVar29 = (code *)(*(int *)(iVar30 + -0x7ef0) + 0x27e0);\n        do {\n          (*(code *)(iVar23 + 0x3d7c))(pFVar15,&zTerm,&pDoclist,&nDoclist);\n          pcVar2 = zTerm;\n          uVar11 = (**(code **)(iVar30 + -0x7bec))(zTerm);\n          (*(code *)(iVar24 + 0x2384))(p,&writer,uVar11,pcVar2);\n          if (p->rc != 0) goto LAB_00118afc;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar21) {\n            (**(code **)(iVar30 + -0x7b80))(writer.writer.buf.p + writer.writer.buf.n,pDoclist);\n            writer.writer.buf.n = writer.writer.buf.n + nDoclist;\n            if (p->rc != 0) goto LAB_00118afc;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar27 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta);\n              iVar12 = iVar27 + iVar12;\n              uVar18 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                if (iVar7 == 1) goto LAB_00118e60;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\nLAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);\n                puVar3 = pDoclist;\n                iVar27 = iVar27 + nPos;\n                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }\n              }\n              else {\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }\n              if (iVar17 != 0) goto LAB_00118afc;\n              bVar1 = iVar27 < nDoclist;\n              uStack_f4 = uVar18;\n            }\n          }\n          pFVar10 = pFVar15->pScan->pScanNext;\n          pFVar15->pScan = pFVar10;\n          iVar27 = *(int *)(iVar30 + -0x7ed8);\n        } while ((p->rc == 0) && (pFVar10 != (Fts5HashEntry *)0x0));\n      }\n      else {\nLAB_00118afc:\n        iVar27 = *(int *)(iVar30 + -0x7ed8);\n      }\n      pFVar19 = (Fts5Index *)&p->rc;\n      (*(code *)(iVar27 + -0x3294))(pFVar15);\n      p_00 = p;\n      fts5WriteFinish(p,&writer,&pgnoLast);\n      if (pStruct->nLevel == 0) {\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          p_00 = pFVar19;\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + -0x7650))(pFVar19,&pStruct);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xad0))(pFVar19,pStruct,0,0);\n          iVar7 = p->rc;\n          p_00 = pFVar19;\n          if (iVar7 == 0) {\n            p_00 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&p_00->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)p_00;\n            pFVar8->iSegid = iVar20;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              p_00 = p;\n              (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00118864:\n    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))();\n    iVar7 = p->rc;\n  }" if (parenthesized_expression "(p->rc == 0)" ( (binary_expression "p->rc == 0" (field_expression "p->rc" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    if (1999 < pStruct->nSegment) {\n      p->rc = 0xd;\n      goto LAB_00118864;\n    }\n    iVar20 = (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x444))(pStruct);\n    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))();\n    if (iVar20 == 0) {\nLAB_00118c00:\n      iVar7 = p->rc;\n    }\n    else {\n      iVar21 = p->pConfig->pgsz;\n      iVar7 = p->pConfig->eDetail;\n      (*(code *)(*(int *)(iVar30 + -0x7d30) + 0x7a50))(p,&writer,iVar20);\n      if (p->rc == 0) {\n        iVar23 = (*(code *)(*(int *)(iVar30 + -0x7eb0) + 0x2fcc))(pFVar15,0,0,&pFVar15->pScan);\n        p->rc = iVar23;\n        if ((iVar23 != 0) ||\n           (iVar23 = *(int *)(iVar30 + -0x7ef0), pFVar15->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00118afc;\n        iVar24 = *(int *)(iVar30 + -0x7ee0);\n        iVar9 = *(int *)(iVar30 + -0x7f54);\n        pcVar28 = (code *)(*(int *)(iVar30 + -0x7ee0) + 0x19d0);\n        pcVar29 = (code *)(*(int *)(iVar30 + -0x7ef0) + 0x27e0);\n        do {\n          (*(code *)(iVar23 + 0x3d7c))(pFVar15,&zTerm,&pDoclist,&nDoclist);\n          pcVar2 = zTerm;\n          uVar11 = (**(code **)(iVar30 + -0x7bec))(zTerm);\n          (*(code *)(iVar24 + 0x2384))(p,&writer,uVar11,pcVar2);\n          if (p->rc != 0) goto LAB_00118afc;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar21) {\n            (**(code **)(iVar30 + -0x7b80))(writer.writer.buf.p + writer.writer.buf.n,pDoclist);\n            writer.writer.buf.n = writer.writer.buf.n + nDoclist;\n            if (p->rc != 0) goto LAB_00118afc;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar27 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta);\n              iVar12 = iVar27 + iVar12;\n              uVar18 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                if (iVar7 == 1) goto LAB_00118e60;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\nLAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);\n                puVar3 = pDoclist;\n                iVar27 = iVar27 + nPos;\n                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }\n              }\n              else {\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }\n              if (iVar17 != 0) goto LAB_00118afc;\n              bVar1 = iVar27 < nDoclist;\n              uStack_f4 = uVar18;\n            }\n          }\n          pFVar10 = pFVar15->pScan->pScanNext;\n          pFVar15->pScan = pFVar10;\n          iVar27 = *(int *)(iVar30 + -0x7ed8);\n        } while ((p->rc == 0) && (pFVar10 != (Fts5HashEntry *)0x0));\n      }\n      else {\nLAB_00118afc:\n        iVar27 = *(int *)(iVar30 + -0x7ed8);\n      }\n      pFVar19 = (Fts5Index *)&p->rc;\n      (*(code *)(iVar27 + -0x3294))(pFVar15);\n      p_00 = p;\n      fts5WriteFinish(p,&writer,&pgnoLast);\n      if (pStruct->nLevel == 0) {\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          p_00 = pFVar19;\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + -0x7650))(pFVar19,&pStruct);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xad0))(pFVar19,pStruct,0,0);\n          iVar7 = p->rc;\n          p_00 = pFVar19;\n          if (iVar7 == 0) {\n            p_00 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&p_00->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)p_00;\n            pFVar8->iSegid = iVar20;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              p_00 = p;\n              (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }\n  }" { (if_statement "if (1999 < pStruct->nSegment) {\n      p->rc = 0xd;\n      goto LAB_00118864;\n    }" if (parenthesized_expression "(1999 < pStruct->nSegment)" ( (binary_expression "1999 < pStruct->nSegment" number_literal < (field_expression "pStruct->nSegment" identifier -> field_identifier)) )) (compound_statement "{\n      p->rc = 0xd;\n      goto LAB_00118864;\n    }" { (expression_statement "p->rc = 0xd;" (assignment_expression "p->rc = 0xd" (field_expression "p->rc" identifier -> field_identifier) = number_literal) ;) (goto_statement "goto LAB_00118864;" goto statement_identifier ;) })) (expression_statement "iVar20 = (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x444))(pStruct);" (assignment_expression "iVar20 = (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x444))(pStruct)" identifier = (call_expression "(*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x444))(pStruct)" (parenthesized_expression "(*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x444))" ( (pointer_expression "*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x444)" * (cast_expression "(code *)(*(int *)(iVar30 + -0x7ef0) + 0x444)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar30 + -0x7ef0) + 0x444)" ( (binary_expression "*(int *)(iVar30 + -0x7ef0) + 0x444" (pointer_expression "*(int *)(iVar30 + -0x7ef0)" * (cast_expression "(int *)(iVar30 + -0x7ef0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7ef0)" ( (binary_expression "iVar30 + -0x7ef0" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(pStruct)" ( identifier )))) ;) (expression_statement "(*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))();" (call_expression "(*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))()" (parenthesized_expression "(*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))" ( (pointer_expression "*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0)" * (cast_expression "(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar30 + -0x7ef0) + 0x1a0)" ( (binary_expression "*(int *)(iVar30 + -0x7ef0) + 0x1a0" (pointer_expression "*(int *)(iVar30 + -0x7ef0)" * (cast_expression "(int *)(iVar30 + -0x7ef0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7ef0)" ( (binary_expression "iVar30 + -0x7ef0" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "()" ( ))) ;) (if_statement "if (iVar20 == 0) {\nLAB_00118c00:\n      iVar7 = p->rc;\n    }\n    else {\n      iVar21 = p->pConfig->pgsz;\n      iVar7 = p->pConfig->eDetail;\n      (*(code *)(*(int *)(iVar30 + -0x7d30) + 0x7a50))(p,&writer,iVar20);\n      if (p->rc == 0) {\n        iVar23 = (*(code *)(*(int *)(iVar30 + -0x7eb0) + 0x2fcc))(pFVar15,0,0,&pFVar15->pScan);\n        p->rc = iVar23;\n        if ((iVar23 != 0) ||\n           (iVar23 = *(int *)(iVar30 + -0x7ef0), pFVar15->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00118afc;\n        iVar24 = *(int *)(iVar30 + -0x7ee0);\n        iVar9 = *(int *)(iVar30 + -0x7f54);\n        pcVar28 = (code *)(*(int *)(iVar30 + -0x7ee0) + 0x19d0);\n        pcVar29 = (code *)(*(int *)(iVar30 + -0x7ef0) + 0x27e0);\n        do {\n          (*(code *)(iVar23 + 0x3d7c))(pFVar15,&zTerm,&pDoclist,&nDoclist);\n          pcVar2 = zTerm;\n          uVar11 = (**(code **)(iVar30 + -0x7bec))(zTerm);\n          (*(code *)(iVar24 + 0x2384))(p,&writer,uVar11,pcVar2);\n          if (p->rc != 0) goto LAB_00118afc;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar21) {\n            (**(code **)(iVar30 + -0x7b80))(writer.writer.buf.p + writer.writer.buf.n,pDoclist);\n            writer.writer.buf.n = writer.writer.buf.n + nDoclist;\n            if (p->rc != 0) goto LAB_00118afc;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar27 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta);\n              iVar12 = iVar27 + iVar12;\n              uVar18 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                if (iVar7 == 1) goto LAB_00118e60;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\nLAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);\n                puVar3 = pDoclist;\n                iVar27 = iVar27 + nPos;\n                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }\n              }\n              else {\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }\n              if (iVar17 != 0) goto LAB_00118afc;\n              bVar1 = iVar27 < nDoclist;\n              uStack_f4 = uVar18;\n            }\n          }\n          pFVar10 = pFVar15->pScan->pScanNext;\n          pFVar15->pScan = pFVar10;\n          iVar27 = *(int *)(iVar30 + -0x7ed8);\n        } while ((p->rc == 0) && (pFVar10 != (Fts5HashEntry *)0x0));\n      }\n      else {\nLAB_00118afc:\n        iVar27 = *(int *)(iVar30 + -0x7ed8);\n      }\n      pFVar19 = (Fts5Index *)&p->rc;\n      (*(code *)(iVar27 + -0x3294))(pFVar15);\n      p_00 = p;\n      fts5WriteFinish(p,&writer,&pgnoLast);\n      if (pStruct->nLevel == 0) {\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          p_00 = pFVar19;\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + -0x7650))(pFVar19,&pStruct);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xad0))(pFVar19,pStruct,0,0);\n          iVar7 = p->rc;\n          p_00 = pFVar19;\n          if (iVar7 == 0) {\n            p_00 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&p_00->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)p_00;\n            pFVar8->iSegid = iVar20;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              p_00 = p;\n              (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "(iVar20 == 0)" ( (binary_expression "iVar20 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00118c00:\n      iVar7 = p->rc;\n    }" { (labeled_statement "LAB_00118c00:\n      iVar7 = p->rc;" statement_identifier : (expression_statement "iVar7 = p->rc;" (assignment_expression "iVar7 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;)) }) (else_clause "else {\n      iVar21 = p->pConfig->pgsz;\n      iVar7 = p->pConfig->eDetail;\n      (*(code *)(*(int *)(iVar30 + -0x7d30) + 0x7a50))(p,&writer,iVar20);\n      if (p->rc == 0) {\n        iVar23 = (*(code *)(*(int *)(iVar30 + -0x7eb0) + 0x2fcc))(pFVar15,0,0,&pFVar15->pScan);\n        p->rc = iVar23;\n        if ((iVar23 != 0) ||\n           (iVar23 = *(int *)(iVar30 + -0x7ef0), pFVar15->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00118afc;\n        iVar24 = *(int *)(iVar30 + -0x7ee0);\n        iVar9 = *(int *)(iVar30 + -0x7f54);\n        pcVar28 = (code *)(*(int *)(iVar30 + -0x7ee0) + 0x19d0);\n        pcVar29 = (code *)(*(int *)(iVar30 + -0x7ef0) + 0x27e0);\n        do {\n          (*(code *)(iVar23 + 0x3d7c))(pFVar15,&zTerm,&pDoclist,&nDoclist);\n          pcVar2 = zTerm;\n          uVar11 = (**(code **)(iVar30 + -0x7bec))(zTerm);\n          (*(code *)(iVar24 + 0x2384))(p,&writer,uVar11,pcVar2);\n          if (p->rc != 0) goto LAB_00118afc;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar21) {\n            (**(code **)(iVar30 + -0x7b80))(writer.writer.buf.p + writer.writer.buf.n,pDoclist);\n            writer.writer.buf.n = writer.writer.buf.n + nDoclist;\n            if (p->rc != 0) goto LAB_00118afc;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar27 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta);\n              iVar12 = iVar27 + iVar12;\n              uVar18 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                if (iVar7 == 1) goto LAB_00118e60;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\nLAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);\n                puVar3 = pDoclist;\n                iVar27 = iVar27 + nPos;\n                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }\n              }\n              else {\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }\n              if (iVar17 != 0) goto LAB_00118afc;\n              bVar1 = iVar27 < nDoclist;\n              uStack_f4 = uVar18;\n            }\n          }\n          pFVar10 = pFVar15->pScan->pScanNext;\n          pFVar15->pScan = pFVar10;\n          iVar27 = *(int *)(iVar30 + -0x7ed8);\n        } while ((p->rc == 0) && (pFVar10 != (Fts5HashEntry *)0x0));\n      }\n      else {\nLAB_00118afc:\n        iVar27 = *(int *)(iVar30 + -0x7ed8);\n      }\n      pFVar19 = (Fts5Index *)&p->rc;\n      (*(code *)(iVar27 + -0x3294))(pFVar15);\n      p_00 = p;\n      fts5WriteFinish(p,&writer,&pgnoLast);\n      if (pStruct->nLevel == 0) {\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          p_00 = pFVar19;\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + -0x7650))(pFVar19,&pStruct);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xad0))(pFVar19,pStruct,0,0);\n          iVar7 = p->rc;\n          p_00 = pFVar19;\n          if (iVar7 == 0) {\n            p_00 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&p_00->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)p_00;\n            pFVar8->iSegid = iVar20;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              p_00 = p;\n              (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }" else (compound_statement "{\n      iVar21 = p->pConfig->pgsz;\n      iVar7 = p->pConfig->eDetail;\n      (*(code *)(*(int *)(iVar30 + -0x7d30) + 0x7a50))(p,&writer,iVar20);\n      if (p->rc == 0) {\n        iVar23 = (*(code *)(*(int *)(iVar30 + -0x7eb0) + 0x2fcc))(pFVar15,0,0,&pFVar15->pScan);\n        p->rc = iVar23;\n        if ((iVar23 != 0) ||\n           (iVar23 = *(int *)(iVar30 + -0x7ef0), pFVar15->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00118afc;\n        iVar24 = *(int *)(iVar30 + -0x7ee0);\n        iVar9 = *(int *)(iVar30 + -0x7f54);\n        pcVar28 = (code *)(*(int *)(iVar30 + -0x7ee0) + 0x19d0);\n        pcVar29 = (code *)(*(int *)(iVar30 + -0x7ef0) + 0x27e0);\n        do {\n          (*(code *)(iVar23 + 0x3d7c))(pFVar15,&zTerm,&pDoclist,&nDoclist);\n          pcVar2 = zTerm;\n          uVar11 = (**(code **)(iVar30 + -0x7bec))(zTerm);\n          (*(code *)(iVar24 + 0x2384))(p,&writer,uVar11,pcVar2);\n          if (p->rc != 0) goto LAB_00118afc;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar21) {\n            (**(code **)(iVar30 + -0x7b80))(writer.writer.buf.p + writer.writer.buf.n,pDoclist);\n            writer.writer.buf.n = writer.writer.buf.n + nDoclist;\n            if (p->rc != 0) goto LAB_00118afc;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar27 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta);\n              iVar12 = iVar27 + iVar12;\n              uVar18 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                if (iVar7 == 1) goto LAB_00118e60;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\nLAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);\n                puVar3 = pDoclist;\n                iVar27 = iVar27 + nPos;\n                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }\n              }\n              else {\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }\n              if (iVar17 != 0) goto LAB_00118afc;\n              bVar1 = iVar27 < nDoclist;\n              uStack_f4 = uVar18;\n            }\n          }\n          pFVar10 = pFVar15->pScan->pScanNext;\n          pFVar15->pScan = pFVar10;\n          iVar27 = *(int *)(iVar30 + -0x7ed8);\n        } while ((p->rc == 0) && (pFVar10 != (Fts5HashEntry *)0x0));\n      }\n      else {\nLAB_00118afc:\n        iVar27 = *(int *)(iVar30 + -0x7ed8);\n      }\n      pFVar19 = (Fts5Index *)&p->rc;\n      (*(code *)(iVar27 + -0x3294))(pFVar15);\n      p_00 = p;\n      fts5WriteFinish(p,&writer,&pgnoLast);\n      if (pStruct->nLevel == 0) {\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          p_00 = pFVar19;\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + -0x7650))(pFVar19,&pStruct);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xad0))(pFVar19,pStruct,0,0);\n          iVar7 = p->rc;\n          p_00 = pFVar19;\n          if (iVar7 == 0) {\n            p_00 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&p_00->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)p_00;\n            pFVar8->iSegid = iVar20;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              p_00 = p;\n              (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }" { (expression_statement "iVar21 = p->pConfig->pgsz;" (assignment_expression "iVar21 = p->pConfig->pgsz" identifier = (field_expression "p->pConfig->pgsz" (field_expression "p->pConfig" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "iVar7 = p->pConfig->eDetail;" (assignment_expression "iVar7 = p->pConfig->eDetail" identifier = (field_expression "p->pConfig->eDetail" (field_expression "p->pConfig" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "(*(code *)(*(int *)(iVar30 + -0x7d30) + 0x7a50))(p,&writer,iVar20);" (call_expression "(*(code *)(*(int *)(iVar30 + -0x7d30) + 0x7a50))(p,&writer,iVar20)" (parenthesized_expression "(*(code *)(*(int *)(iVar30 + -0x7d30) + 0x7a50))" ( (pointer_expression "*(code *)(*(int *)(iVar30 + -0x7d30) + 0x7a50)" * (cast_expression "(code *)(*(int *)(iVar30 + -0x7d30) + 0x7a50)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar30 + -0x7d30) + 0x7a50)" ( (binary_expression "*(int *)(iVar30 + -0x7d30) + 0x7a50" (pointer_expression "*(int *)(iVar30 + -0x7d30)" * (cast_expression "(int *)(iVar30 + -0x7d30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7d30)" ( (binary_expression "iVar30 + -0x7d30" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(p,&writer,iVar20)" ( identifier , (pointer_expression "&writer" & identifier) , identifier ))) ;) (if_statement "if (p->rc == 0) {\n        iVar23 = (*(code *)(*(int *)(iVar30 + -0x7eb0) + 0x2fcc))(pFVar15,0,0,&pFVar15->pScan);\n        p->rc = iVar23;\n        if ((iVar23 != 0) ||\n           (iVar23 = *(int *)(iVar30 + -0x7ef0), pFVar15->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00118afc;\n        iVar24 = *(int *)(iVar30 + -0x7ee0);\n        iVar9 = *(int *)(iVar30 + -0x7f54);\n        pcVar28 = (code *)(*(int *)(iVar30 + -0x7ee0) + 0x19d0);\n        pcVar29 = (code *)(*(int *)(iVar30 + -0x7ef0) + 0x27e0);\n        do {\n          (*(code *)(iVar23 + 0x3d7c))(pFVar15,&zTerm,&pDoclist,&nDoclist);\n          pcVar2 = zTerm;\n          uVar11 = (**(code **)(iVar30 + -0x7bec))(zTerm);\n          (*(code *)(iVar24 + 0x2384))(p,&writer,uVar11,pcVar2);\n          if (p->rc != 0) goto LAB_00118afc;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar21) {\n            (**(code **)(iVar30 + -0x7b80))(writer.writer.buf.p + writer.writer.buf.n,pDoclist);\n            writer.writer.buf.n = writer.writer.buf.n + nDoclist;\n            if (p->rc != 0) goto LAB_00118afc;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar27 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta);\n              iVar12 = iVar27 + iVar12;\n              uVar18 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                if (iVar7 == 1) goto LAB_00118e60;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\nLAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);\n                puVar3 = pDoclist;\n                iVar27 = iVar27 + nPos;\n                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }\n              }\n              else {\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }\n              if (iVar17 != 0) goto LAB_00118afc;\n              bVar1 = iVar27 < nDoclist;\n              uStack_f4 = uVar18;\n            }\n          }\n          pFVar10 = pFVar15->pScan->pScanNext;\n          pFVar15->pScan = pFVar10;\n          iVar27 = *(int *)(iVar30 + -0x7ed8);\n        } while ((p->rc == 0) && (pFVar10 != (Fts5HashEntry *)0x0));\n      }\n      else {\nLAB_00118afc:\n        iVar27 = *(int *)(iVar30 + -0x7ed8);\n      }" if (parenthesized_expression "(p->rc == 0)" ( (binary_expression "p->rc == 0" (field_expression "p->rc" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n        iVar23 = (*(code *)(*(int *)(iVar30 + -0x7eb0) + 0x2fcc))(pFVar15,0,0,&pFVar15->pScan);\n        p->rc = iVar23;\n        if ((iVar23 != 0) ||\n           (iVar23 = *(int *)(iVar30 + -0x7ef0), pFVar15->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00118afc;\n        iVar24 = *(int *)(iVar30 + -0x7ee0);\n        iVar9 = *(int *)(iVar30 + -0x7f54);\n        pcVar28 = (code *)(*(int *)(iVar30 + -0x7ee0) + 0x19d0);\n        pcVar29 = (code *)(*(int *)(iVar30 + -0x7ef0) + 0x27e0);\n        do {\n          (*(code *)(iVar23 + 0x3d7c))(pFVar15,&zTerm,&pDoclist,&nDoclist);\n          pcVar2 = zTerm;\n          uVar11 = (**(code **)(iVar30 + -0x7bec))(zTerm);\n          (*(code *)(iVar24 + 0x2384))(p,&writer,uVar11,pcVar2);\n          if (p->rc != 0) goto LAB_00118afc;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar21) {\n            (**(code **)(iVar30 + -0x7b80))(writer.writer.buf.p + writer.writer.buf.n,pDoclist);\n            writer.writer.buf.n = writer.writer.buf.n + nDoclist;\n            if (p->rc != 0) goto LAB_00118afc;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar27 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta);\n              iVar12 = iVar27 + iVar12;\n              uVar18 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                if (iVar7 == 1) goto LAB_00118e60;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\nLAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);\n                puVar3 = pDoclist;\n                iVar27 = iVar27 + nPos;\n                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }\n              }\n              else {\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }\n              if (iVar17 != 0) goto LAB_00118afc;\n              bVar1 = iVar27 < nDoclist;\n              uStack_f4 = uVar18;\n            }\n          }\n          pFVar10 = pFVar15->pScan->pScanNext;\n          pFVar15->pScan = pFVar10;\n          iVar27 = *(int *)(iVar30 + -0x7ed8);\n        } while ((p->rc == 0) && (pFVar10 != (Fts5HashEntry *)0x0));\n      }" { (expression_statement "iVar23 = (*(code *)(*(int *)(iVar30 + -0x7eb0) + 0x2fcc))(pFVar15,0,0,&pFVar15->pScan);" (assignment_expression "iVar23 = (*(code *)(*(int *)(iVar30 + -0x7eb0) + 0x2fcc))(pFVar15,0,0,&pFVar15->pScan)" identifier = (call_expression "(*(code *)(*(int *)(iVar30 + -0x7eb0) + 0x2fcc))(pFVar15,0,0,&pFVar15->pScan)" (parenthesized_expression "(*(code *)(*(int *)(iVar30 + -0x7eb0) + 0x2fcc))" ( (pointer_expression "*(code *)(*(int *)(iVar30 + -0x7eb0) + 0x2fcc)" * (cast_expression "(code *)(*(int *)(iVar30 + -0x7eb0) + 0x2fcc)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar30 + -0x7eb0) + 0x2fcc)" ( (binary_expression "*(int *)(iVar30 + -0x7eb0) + 0x2fcc" (pointer_expression "*(int *)(iVar30 + -0x7eb0)" * (cast_expression "(int *)(iVar30 + -0x7eb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7eb0)" ( (binary_expression "iVar30 + -0x7eb0" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(pFVar15,0,0,&pFVar15->pScan)" ( identifier , number_literal , number_literal , (pointer_expression "&pFVar15->pScan" & (field_expression "pFVar15->pScan" identifier -> field_identifier)) )))) ;) (expression_statement "p->rc = iVar23;" (assignment_expression "p->rc = iVar23" (field_expression "p->rc" identifier -> field_identifier) = identifier) ;) (if_statement "if ((iVar23 != 0) ||\n           (iVar23 = *(int *)(iVar30 + -0x7ef0), pFVar15->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00118afc;" if (parenthesized_expression "((iVar23 != 0) ||\n           (iVar23 = *(int *)(iVar30 + -0x7ef0), pFVar15->pScan == (Fts5HashEntry *)0x0))" ( (binary_expression "(iVar23 != 0) ||\n           (iVar23 = *(int *)(iVar30 + -0x7ef0), pFVar15->pScan == (Fts5HashEntry *)0x0)" (parenthesized_expression "(iVar23 != 0)" ( (binary_expression "iVar23 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar23 = *(int *)(iVar30 + -0x7ef0), pFVar15->pScan == (Fts5HashEntry *)0x0)" ( (comma_expression "iVar23 = *(int *)(iVar30 + -0x7ef0), pFVar15->pScan == (Fts5HashEntry *)0x0" (assignment_expression "iVar23 = *(int *)(iVar30 + -0x7ef0)" identifier = (pointer_expression "*(int *)(iVar30 + -0x7ef0)" * (cast_expression "(int *)(iVar30 + -0x7ef0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7ef0)" ( (binary_expression "iVar30 + -0x7ef0" identifier + number_literal) ))))) , (binary_expression "pFVar15->pScan == (Fts5HashEntry *)0x0" (field_expression "pFVar15->pScan" identifier -> field_identifier) == (cast_expression "(Fts5HashEntry *)0x0" ( (type_descriptor "Fts5HashEntry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_00118afc;" goto statement_identifier ;)) (expression_statement "iVar24 = *(int *)(iVar30 + -0x7ee0);" (assignment_expression "iVar24 = *(int *)(iVar30 + -0x7ee0)" identifier = (pointer_expression "*(int *)(iVar30 + -0x7ee0)" * (cast_expression "(int *)(iVar30 + -0x7ee0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7ee0)" ( (binary_expression "iVar30 + -0x7ee0" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *(int *)(iVar30 + -0x7f54);" (assignment_expression "iVar9 = *(int *)(iVar30 + -0x7f54)" identifier = (pointer_expression "*(int *)(iVar30 + -0x7f54)" * (cast_expression "(int *)(iVar30 + -0x7f54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7f54)" ( (binary_expression "iVar30 + -0x7f54" identifier + number_literal) ))))) ;) (expression_statement "pcVar28 = (code *)(*(int *)(iVar30 + -0x7ee0) + 0x19d0);" (assignment_expression "pcVar28 = (code *)(*(int *)(iVar30 + -0x7ee0) + 0x19d0)" identifier = (cast_expression "(code *)(*(int *)(iVar30 + -0x7ee0) + 0x19d0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar30 + -0x7ee0) + 0x19d0)" ( (binary_expression "*(int *)(iVar30 + -0x7ee0) + 0x19d0" (pointer_expression "*(int *)(iVar30 + -0x7ee0)" * (cast_expression "(int *)(iVar30 + -0x7ee0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7ee0)" ( (binary_expression "iVar30 + -0x7ee0" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pcVar29 = (code *)(*(int *)(iVar30 + -0x7ef0) + 0x27e0);" (assignment_expression "pcVar29 = (code *)(*(int *)(iVar30 + -0x7ef0) + 0x27e0)" identifier = (cast_expression "(code *)(*(int *)(iVar30 + -0x7ef0) + 0x27e0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar30 + -0x7ef0) + 0x27e0)" ( (binary_expression "*(int *)(iVar30 + -0x7ef0) + 0x27e0" (pointer_expression "*(int *)(iVar30 + -0x7ef0)" * (cast_expression "(int *)(iVar30 + -0x7ef0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7ef0)" ( (binary_expression "iVar30 + -0x7ef0" identifier + number_literal) )))) + number_literal) )))) ;) (do_statement "do {\n          (*(code *)(iVar23 + 0x3d7c))(pFVar15,&zTerm,&pDoclist,&nDoclist);\n          pcVar2 = zTerm;\n          uVar11 = (**(code **)(iVar30 + -0x7bec))(zTerm);\n          (*(code *)(iVar24 + 0x2384))(p,&writer,uVar11,pcVar2);\n          if (p->rc != 0) goto LAB_00118afc;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar21) {\n            (**(code **)(iVar30 + -0x7b80))(writer.writer.buf.p + writer.writer.buf.n,pDoclist);\n            writer.writer.buf.n = writer.writer.buf.n + nDoclist;\n            if (p->rc != 0) goto LAB_00118afc;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar27 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta);\n              iVar12 = iVar27 + iVar12;\n              uVar18 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                if (iVar7 == 1) goto LAB_00118e60;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\nLAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);\n                puVar3 = pDoclist;\n                iVar27 = iVar27 + nPos;\n                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }\n              }\n              else {\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }\n              if (iVar17 != 0) goto LAB_00118afc;\n              bVar1 = iVar27 < nDoclist;\n              uStack_f4 = uVar18;\n            }\n          }\n          pFVar10 = pFVar15->pScan->pScanNext;\n          pFVar15->pScan = pFVar10;\n          iVar27 = *(int *)(iVar30 + -0x7ed8);\n        } while ((p->rc == 0) && (pFVar10 != (Fts5HashEntry *)0x0));" do (compound_statement "{\n          (*(code *)(iVar23 + 0x3d7c))(pFVar15,&zTerm,&pDoclist,&nDoclist);\n          pcVar2 = zTerm;\n          uVar11 = (**(code **)(iVar30 + -0x7bec))(zTerm);\n          (*(code *)(iVar24 + 0x2384))(p,&writer,uVar11,pcVar2);\n          if (p->rc != 0) goto LAB_00118afc;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar21) {\n            (**(code **)(iVar30 + -0x7b80))(writer.writer.buf.p + writer.writer.buf.n,pDoclist);\n            writer.writer.buf.n = writer.writer.buf.n + nDoclist;\n            if (p->rc != 0) goto LAB_00118afc;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar27 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta);\n              iVar12 = iVar27 + iVar12;\n              uVar18 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                if (iVar7 == 1) goto LAB_00118e60;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\nLAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);\n                puVar3 = pDoclist;\n                iVar27 = iVar27 + nPos;\n                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }\n              }\n              else {\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }\n              if (iVar17 != 0) goto LAB_00118afc;\n              bVar1 = iVar27 < nDoclist;\n              uStack_f4 = uVar18;\n            }\n          }\n          pFVar10 = pFVar15->pScan->pScanNext;\n          pFVar15->pScan = pFVar10;\n          iVar27 = *(int *)(iVar30 + -0x7ed8);\n        }" { (expression_statement "(*(code *)(iVar23 + 0x3d7c))(pFVar15,&zTerm,&pDoclist,&nDoclist);" (call_expression "(*(code *)(iVar23 + 0x3d7c))(pFVar15,&zTerm,&pDoclist,&nDoclist)" (parenthesized_expression "(*(code *)(iVar23 + 0x3d7c))" ( (pointer_expression "*(code *)(iVar23 + 0x3d7c)" * (cast_expression "(code *)(iVar23 + 0x3d7c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x3d7c)" ( (binary_expression "iVar23 + 0x3d7c" identifier + number_literal) )))) )) (argument_list "(pFVar15,&zTerm,&pDoclist,&nDoclist)" ( identifier , (pointer_expression "&zTerm" & identifier) , (pointer_expression "&pDoclist" & identifier) , (pointer_expression "&nDoclist" & identifier) ))) ;) (expression_statement "pcVar2 = zTerm;" (assignment_expression "pcVar2 = zTerm" identifier = identifier) ;) (expression_statement "uVar11 = (**(code **)(iVar30 + -0x7bec))(zTerm);" (assignment_expression "uVar11 = (**(code **)(iVar30 + -0x7bec))(zTerm)" identifier = (call_expression "(**(code **)(iVar30 + -0x7bec))(zTerm)" (parenthesized_expression "(**(code **)(iVar30 + -0x7bec))" ( (pointer_expression "**(code **)(iVar30 + -0x7bec)" * (pointer_expression "*(code **)(iVar30 + -0x7bec)" * (cast_expression "(code **)(iVar30 + -0x7bec)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar30 + -0x7bec)" ( (binary_expression "iVar30 + -0x7bec" identifier + number_literal) ))))) )) (argument_list "(zTerm)" ( identifier )))) ;) (expression_statement "(*(code *)(iVar24 + 0x2384))(p,&writer,uVar11,pcVar2);" (call_expression "(*(code *)(iVar24 + 0x2384))(p,&writer,uVar11,pcVar2)" (parenthesized_expression "(*(code *)(iVar24 + 0x2384))" ( (pointer_expression "*(code *)(iVar24 + 0x2384)" * (cast_expression "(code *)(iVar24 + 0x2384)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 0x2384)" ( (binary_expression "iVar24 + 0x2384" identifier + number_literal) )))) )) (argument_list "(p,&writer,uVar11,pcVar2)" ( identifier , (pointer_expression "&writer" & identifier) , identifier , identifier ))) ;) (if_statement "if (p->rc != 0) goto LAB_00118afc;" if (parenthesized_expression "(p->rc != 0)" ( (binary_expression "p->rc != 0" (field_expression "p->rc" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_00118afc;" goto statement_identifier ;)) (if_statement "if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar21) {\n            (**(code **)(iVar30 + -0x7b80))(writer.writer.buf.p + writer.writer.buf.n,pDoclist);\n            writer.writer.buf.n = writer.writer.buf.n + nDoclist;\n            if (p->rc != 0) goto LAB_00118afc;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar27 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta);\n              iVar12 = iVar27 + iVar12;\n              uVar18 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                if (iVar7 == 1) goto LAB_00118e60;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\nLAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);\n                puVar3 = pDoclist;\n                iVar27 = iVar27 + nPos;\n                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }\n              }\n              else {\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }\n              if (iVar17 != 0) goto LAB_00118afc;\n              bVar1 = iVar27 < nDoclist;\n              uStack_f4 = uVar18;\n            }\n          }" if (parenthesized_expression "(writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar21)" ( (binary_expression "writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar21" (binary_expression "writer.writer.buf.n + writer.writer.pgidx.n + nDoclist" (binary_expression "writer.writer.buf.n + writer.writer.pgidx.n" (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) + (field_expression "writer.writer.pgidx.n" (field_expression "writer.writer.pgidx" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier)) + identifier) < identifier) )) (compound_statement "{\n            (**(code **)(iVar30 + -0x7b80))(writer.writer.buf.p + writer.writer.buf.n,pDoclist);\n            writer.writer.buf.n = writer.writer.buf.n + nDoclist;\n            if (p->rc != 0) goto LAB_00118afc;\n          }" { (expression_statement "(**(code **)(iVar30 + -0x7b80))(writer.writer.buf.p + writer.writer.buf.n,pDoclist);" (call_expression "(**(code **)(iVar30 + -0x7b80))(writer.writer.buf.p + writer.writer.buf.n,pDoclist)" (parenthesized_expression "(**(code **)(iVar30 + -0x7b80))" ( (pointer_expression "**(code **)(iVar30 + -0x7b80)" * (pointer_expression "*(code **)(iVar30 + -0x7b80)" * (cast_expression "(code **)(iVar30 + -0x7b80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar30 + -0x7b80)" ( (binary_expression "iVar30 + -0x7b80" identifier + number_literal) ))))) )) (argument_list "(writer.writer.buf.p + writer.writer.buf.n,pDoclist)" ( (binary_expression "writer.writer.buf.p + writer.writer.buf.n" (field_expression "writer.writer.buf.p" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) + (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier)) , identifier ))) ;) (expression_statement "writer.writer.buf.n = writer.writer.buf.n + nDoclist;" (assignment_expression "writer.writer.buf.n = writer.writer.buf.n + nDoclist" (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) = (binary_expression "writer.writer.buf.n + nDoclist" (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) + identifier)) ;) (if_statement "if (p->rc != 0) goto LAB_00118afc;" if (parenthesized_expression "(p->rc != 0)" ( (binary_expression "p->rc != 0" (field_expression "p->rc" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_00118afc;" goto statement_identifier ;)) }) (else_clause "else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar27 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta);\n              iVar12 = iVar27 + iVar12;\n              uVar18 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                if (iVar7 == 1) goto LAB_00118e60;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\nLAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);\n                puVar3 = pDoclist;\n                iVar27 = iVar27 + nPos;\n                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }\n              }\n              else {\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }\n              if (iVar17 != 0) goto LAB_00118afc;\n              bVar1 = iVar27 < nDoclist;\n              uStack_f4 = uVar18;\n            }\n          }" else (compound_statement "{\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar27 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta);\n              iVar12 = iVar27 + iVar12;\n              uVar18 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                if (iVar7 == 1) goto LAB_00118e60;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\nLAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);\n                puVar3 = pDoclist;\n                iVar27 = iVar27 + nPos;\n                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }\n              }\n              else {\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }\n              if (iVar17 != 0) goto LAB_00118afc;\n              bVar1 = iVar27 < nDoclist;\n              uStack_f4 = uVar18;\n            }\n          }" { (expression_statement "iStack_fc = 0;" (assignment_expression "iStack_fc = 0" identifier = number_literal) ;) (expression_statement "uStack_f4 = 0;" (assignment_expression "uStack_f4 = 0" identifier = number_literal) ;) (expression_statement "iDelta._0_4_ = 0;" (assignment_expression "iDelta._0_4_ = 0" (field_expression "iDelta._0_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (expression_statement "iDelta._4_4_ = 0;" (assignment_expression "iDelta._4_4_ = 0" (field_expression "iDelta._4_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "bVar1 = 0 < nDoclist;" (assignment_expression "bVar1 = 0 < nDoclist" identifier = (binary_expression "0 < nDoclist" number_literal < identifier)) ;) (while_statement "while (bVar1) {\n              iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta);\n              iVar12 = iVar27 + iVar12;\n              uVar18 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                if (iVar7 == 1) goto LAB_00118e60;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\nLAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);\n                puVar3 = pDoclist;\n                iVar27 = iVar27 + nPos;\n                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }\n              }\n              else {\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }\n              if (iVar17 != 0) goto LAB_00118afc;\n              bVar1 = iVar27 < nDoclist;\n              uStack_f4 = uVar18;\n            }" while (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n              iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta);\n              iVar12 = iVar27 + iVar12;\n              uVar18 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                if (iVar7 == 1) goto LAB_00118e60;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\nLAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);\n                puVar3 = pDoclist;\n                iVar27 = iVar27 + nPos;\n                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }\n              }\n              else {\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }\n              if (iVar17 != 0) goto LAB_00118afc;\n              bVar1 = iVar27 < nDoclist;\n              uStack_f4 = uVar18;\n            }" { (expression_statement "iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta);" (assignment_expression "iVar12 = (*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta)" identifier = (call_expression "(*(code *)(iVar9 + -0x2a88))(pDoclist + iVar27,&iDelta)" (parenthesized_expression "(*(code *)(iVar9 + -0x2a88))" ( (pointer_expression "*(code *)(iVar9 + -0x2a88)" * (cast_expression "(code *)(iVar9 + -0x2a88)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + -0x2a88)" ( (binary_expression "iVar9 + -0x2a88" identifier + number_literal) )))) )) (argument_list "(pDoclist + iVar27,&iDelta)" ( (binary_expression "pDoclist + iVar27" identifier + identifier) , (pointer_expression "&iDelta" & identifier) )))) ;) (expression_statement "iVar12 = iVar27 + iVar12;" (assignment_expression "iVar12 = iVar27 + iVar12" identifier = (binary_expression "iVar27 + iVar12" identifier + identifier)) ;) (expression_statement "uVar18 = uStack_f4 + iDelta._4_4_;" (assignment_expression "uVar18 = uStack_f4 + iDelta._4_4_" identifier = (binary_expression "uStack_f4 + iDelta._4_4_" identifier + (field_expression "iDelta._4_4_" identifier . field_identifier))) ;) (expression_statement "iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_;" (assignment_expression "iStack_fc = (uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_" identifier = (binary_expression "(uint)(uVar18 < uStack_f4) + iStack_fc + iDelta._0_4_" (binary_expression "(uint)(uVar18 < uStack_f4) + iStack_fc" (call_expression "(uint)(uVar18 < uStack_f4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar18 < uStack_f4)" ( (binary_expression "uVar18 < uStack_f4" identifier < identifier) ))) + identifier) + (field_expression "iDelta._0_4_" identifier . field_identifier))) ;) (if_statement "if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                if (iVar7 == 1) goto LAB_00118e60;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\nLAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);\n                puVar3 = pDoclist;\n                iVar27 = iVar27 + nPos;\n                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }\n              }\n              else {\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }" if (parenthesized_expression "(writer.bFirstRowidInPage == '\0')" ( (binary_expression "writer.bFirstRowidInPage == '\0'" (field_expression "writer.bFirstRowidInPage" identifier . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                if (iVar7 == 1) goto LAB_00118e60;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\nLAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);\n                puVar3 = pDoclist;\n                iVar27 = iVar27 + nPos;\n                if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }\n              }" { (if_statement "if (iDelta._0_4_ == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }" if (parenthesized_expression "(iDelta._0_4_ == 0)" ( (binary_expression "iDelta._0_4_ == 0" (field_expression "iDelta._0_4_" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar27 = 1;\n                }" { (expression_statement "iVar27 = *(int *)(iVar30 + -0x7ed8);" (assignment_expression "iVar27 = *(int *)(iVar30 + -0x7ed8)" identifier = (pointer_expression "*(int *)(iVar30 + -0x7ed8)" * (cast_expression "(int *)(iVar30 + -0x7ed8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7ed8)" ( (binary_expression "iVar30 + -0x7ed8" identifier + number_literal) ))))) ;) (if_statement "if (0x7f < iDelta._4_4_) goto LAB_00118f00;" if (parenthesized_expression "(0x7f < iDelta._4_4_)" ( (binary_expression "0x7f < iDelta._4_4_" number_literal < (field_expression "iDelta._4_4_" identifier . field_identifier)) )) (goto_statement "goto LAB_00118f00;" goto statement_identifier ;)) (expression_statement "writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;" (assignment_expression "writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_" (subscript_expression "writer.writer.buf.p[writer.writer.buf.n]" (field_expression "writer.writer.buf.p" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) [ (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) ]) = (cast_expression "(u8)iDelta._4_4_" ( (type_descriptor "u8" type_identifier) ) (field_expression "iDelta._4_4_" identifier . field_identifier))) ;) (expression_statement "iVar27 = 1;" (assignment_expression "iVar27 = 1" identifier = number_literal) ;) }) (else_clause "else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }" else (compound_statement "{\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();\n                }" { (expression_statement "iVar27 = *(int *)(iVar30 + -0x7ed8);" (assignment_expression "iVar27 = *(int *)(iVar30 + -0x7ed8)" identifier = (pointer_expression "*(int *)(iVar30 + -0x7ed8)" * (cast_expression "(int *)(iVar30 + -0x7ed8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7ed8)" ( (binary_expression "iVar30 + -0x7ed8" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00118f00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))();" statement_identifier : (expression_statement "iVar27 = (*(code *)(iVar27 + 0x54))();" (assignment_expression "iVar27 = (*(code *)(iVar27 + 0x54))()" identifier = (call_expression "(*(code *)(iVar27 + 0x54))()" (parenthesized_expression "(*(code *)(iVar27 + 0x54))" ( (pointer_expression "*(code *)(iVar27 + 0x54)" * (cast_expression "(code *)(iVar27 + 0x54)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x54)" ( (binary_expression "iVar27 + 0x54" identifier + number_literal) )))) )) (argument_list "()" ( )))) ;)) }))) (expression_statement "writer.writer.buf.n = writer.writer.buf.n + iVar27;" (assignment_expression "writer.writer.buf.n = writer.writer.buf.n + iVar27" (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) = (binary_expression "writer.writer.buf.n + iVar27" (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) + identifier)) ;) (if_statement "if (iVar7 == 1) goto LAB_00118e60;" if (parenthesized_expression "(iVar7 == 1)" ( (binary_expression "iVar7 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00118e60;" goto statement_identifier ;)) (expression_statement "iVar27 = *(int *)(iVar30 + -0x7ef0);" (assignment_expression "iVar27 = *(int *)(iVar30 + -0x7ef0)" identifier = (pointer_expression "*(int *)(iVar30 + -0x7ef0)" * (cast_expression "(int *)(iVar30 + -0x7ef0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7ef0)" ( (binary_expression "iVar30 + -0x7ef0" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00118f30:\n                iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);" statement_identifier : (expression_statement "iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy);" (assignment_expression "iVar27 = (*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy)" identifier = (call_expression "(*(code *)(iVar27 + 0x28c4))(pDoclist + iVar12,&nPos,&bDummy)" (parenthesized_expression "(*(code *)(iVar27 + 0x28c4))" ( (pointer_expression "*(code *)(iVar27 + 0x28c4)" * (cast_expression "(code *)(iVar27 + 0x28c4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x28c4)" ( (binary_expression "iVar27 + 0x28c4" identifier + number_literal) )))) )) (argument_list "(pDoclist + iVar12,&nPos,&bDummy)" ( (binary_expression "pDoclist + iVar12" identifier + identifier) , (pointer_expression "&nPos" & identifier) , (pointer_expression "&bDummy" & identifier) )))) ;)) (expression_statement "puVar3 = pDoclist;" (assignment_expression "puVar3 = pDoclist" identifier = identifier) ;) (expression_statement "iVar27 = iVar27 + nPos;" (assignment_expression "iVar27 = iVar27 + nPos" identifier = (binary_expression "iVar27 + nPos" identifier + identifier)) ;) (if_statement "if (iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27) {\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }\n                else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }" if (parenthesized_expression "(iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27)" ( (binary_expression "iVar21 < writer.writer.buf.n + writer.writer.pgidx.n + iVar27" identifier < (binary_expression "writer.writer.buf.n + writer.writer.pgidx.n + iVar27" (binary_expression "writer.writer.buf.n + writer.writer.pgidx.n" (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) + (field_expression "writer.writer.pgidx.n" (field_expression "writer.writer.pgidx" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier)) + identifier)) )) (compound_statement "{\n                  iVar25 = 0;\n                  do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);\n                  iVar17 = p->rc;\n                  iVar27 = iVar12 + iVar27;\n                }" { (expression_statement "iVar25 = 0;" (assignment_expression "iVar25 = 0" identifier = number_literal) ;) (do_statement "do {\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  } while (iVar25 < iVar27);" do (compound_statement "{\n                    iVar17 = p->rc;\n                    if (iVar17 != 0) goto LAB_00118f9c;\n                    iVar26 = iVar27 - iVar25;\n                    puVar22 = puVar3 + iVar25 + iVar12;\n                    iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }\n                  }" { (expression_statement "iVar17 = p->rc;" (assignment_expression "iVar17 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;) (if_statement "if (iVar17 != 0) goto LAB_00118f9c;" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00118f9c;" goto statement_identifier ;)) (expression_statement "iVar26 = iVar27 - iVar25;" (assignment_expression "iVar26 = iVar27 - iVar25" identifier = (binary_expression "iVar27 - iVar25" identifier - identifier)) ;) (expression_statement "puVar22 = puVar3 + iVar25 + iVar12;" (assignment_expression "puVar22 = puVar3 + iVar25 + iVar12" identifier = (binary_expression "puVar3 + iVar25 + iVar12" (binary_expression "puVar3 + iVar25" identifier + identifier) + identifier)) ;) (expression_statement "iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n;" (assignment_expression "iVar17 = (iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n" identifier = (binary_expression "(iVar21 - writer.writer.buf.n) - writer.writer.pgidx.n" (parenthesized_expression "(iVar21 - writer.writer.buf.n)" ( (binary_expression "iVar21 - writer.writer.buf.n" identifier - (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier)) )) - (field_expression "writer.writer.pgidx.n" (field_expression "writer.writer.pgidx" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier))) ;) (if_statement "if (iVar17 < iVar26) {\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }\n                    else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }" if (parenthesized_expression "(iVar17 < iVar26)" ( (binary_expression "iVar17 < iVar26" identifier < identifier) )) (compound_statement "{\n                      iVar13 = (*pcVar29)(puVar22,&dummy);\n                      iVar26 = iVar13;\n                      if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }\n                      iVar25 = iVar25 + iVar13;\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);\n                      writer.writer.buf.n = iVar13 + writer.writer.buf.n;\n                      if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;\n                    }" { (expression_statement "iVar13 = (*pcVar29)(puVar22,&dummy);" (assignment_expression "iVar13 = (*pcVar29)(puVar22,&dummy)" identifier = (call_expression "(*pcVar29)(puVar22,&dummy)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(puVar22,&dummy)" ( identifier , (pointer_expression "&dummy" & identifier) )))) ;) (expression_statement "iVar26 = iVar13;" (assignment_expression "iVar26 = iVar13" identifier = identifier) ;) (if_statement "if (iVar13 < iVar17) {\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }" if (parenthesized_expression "(iVar13 < iVar17)" ( (binary_expression "iVar13 < iVar17" identifier < identifier) )) (compound_statement "{\n                        do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);\n                      }" { (do_statement "do {\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        } while (iVar13 + iVar14 <= iVar17);" do (compound_statement "{\n                          iVar13 = iVar26;\n                          iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);\n                          iVar26 = iVar13 + iVar14;\n                        }" { (expression_statement "iVar13 = iVar26;" (assignment_expression "iVar13 = iVar26" identifier = identifier) ;) (expression_statement "iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy);" (assignment_expression "iVar14 = (*pcVar29)(puVar22 + iVar13,&dummy)" identifier = (call_expression "(*pcVar29)(puVar22 + iVar13,&dummy)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(puVar22 + iVar13,&dummy)" ( (binary_expression "puVar22 + iVar13" identifier + identifier) , (pointer_expression "&dummy" & identifier) )))) ;) (expression_statement "iVar26 = iVar13 + iVar14;" (assignment_expression "iVar26 = iVar13 + iVar14" identifier = (binary_expression "iVar13 + iVar14" identifier + identifier)) ;) }) while (parenthesized_expression "(iVar13 + iVar14 <= iVar17)" ( (binary_expression "iVar13 + iVar14 <= iVar17" (binary_expression "iVar13 + iVar14" identifier + identifier) <= identifier) )) ;) })) (expression_statement "iVar25 = iVar25 + iVar13;" (assignment_expression "iVar25 = iVar25 + iVar13" identifier = (binary_expression "iVar25 + iVar13" identifier + identifier)) ;) (expression_statement "(**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13);" (call_expression "(**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13)" (parenthesized_expression "(**(code **)(iVar30 + -0x7b80))" ( (pointer_expression "**(code **)(iVar30 + -0x7b80)" * (pointer_expression "*(code **)(iVar30 + -0x7b80)" * (cast_expression "(code **)(iVar30 + -0x7b80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar30 + -0x7b80)" ( (binary_expression "iVar30 + -0x7b80" identifier + number_literal) ))))) )) (argument_list "(writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar13)" ( (binary_expression "writer.writer.buf.p + writer.writer.buf.n" (field_expression "writer.writer.buf.p" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) + (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier)) , identifier , identifier ))) ;) (expression_statement "writer.writer.buf.n = iVar13 + writer.writer.buf.n;" (assignment_expression "writer.writer.buf.n = iVar13 + writer.writer.buf.n" (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) = (binary_expression "iVar13 + writer.writer.buf.n" identifier + (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier))) ;) (if_statement "if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;" if (parenthesized_expression "(iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n)" ( (binary_expression "iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n" identifier <= (binary_expression "writer.writer.buf.n + writer.writer.pgidx.n" (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) + (field_expression "writer.writer.pgidx.n" (field_expression "writer.writer.pgidx" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier))) )) (goto_statement "goto LAB_00118ff8;" goto statement_identifier ;)) }) (else_clause "else {\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }" else (compound_statement "{\n                      (**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);\n                      writer.writer.buf.n = iVar26 + writer.writer.buf.n;\n                      iVar25 = iVar27;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;\nLAB_00118ff8:\n                      (*pcVar28)(p,&writer);\n                    }" { (expression_statement "(**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26);" (call_expression "(**(code **)(iVar30 + -0x7b80))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26)" (parenthesized_expression "(**(code **)(iVar30 + -0x7b80))" ( (pointer_expression "**(code **)(iVar30 + -0x7b80)" * (pointer_expression "*(code **)(iVar30 + -0x7b80)" * (cast_expression "(code **)(iVar30 + -0x7b80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar30 + -0x7b80)" ( (binary_expression "iVar30 + -0x7b80" identifier + number_literal) ))))) )) (argument_list "(writer.writer.buf.p + writer.writer.buf.n,puVar22,iVar26)" ( (binary_expression "writer.writer.buf.p + writer.writer.buf.n" (field_expression "writer.writer.buf.p" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) + (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier)) , identifier , identifier ))) ;) (expression_statement "writer.writer.buf.n = iVar26 + writer.writer.buf.n;" (assignment_expression "writer.writer.buf.n = iVar26 + writer.writer.buf.n" (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) = (binary_expression "iVar26 + writer.writer.buf.n" identifier + (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier))) ;) (expression_statement "iVar25 = iVar27;" (assignment_expression "iVar25 = iVar27" identifier = identifier) ;) (if_statement "if (writer.writer.buf.n + writer.writer.pgidx.n < iVar21) break;" if (parenthesized_expression "(writer.writer.buf.n + writer.writer.pgidx.n < iVar21)" ( (binary_expression "writer.writer.buf.n + writer.writer.pgidx.n < iVar21" (binary_expression "writer.writer.buf.n + writer.writer.pgidx.n" (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) + (field_expression "writer.writer.pgidx.n" (field_expression "writer.writer.pgidx" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier)) < identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00118ff8:\n                      (*pcVar28)(p,&writer);" statement_identifier : (expression_statement "(*pcVar28)(p,&writer);" (call_expression "(*pcVar28)(p,&writer)" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "(p,&writer)" ( identifier , (pointer_expression "&writer" & identifier) ))) ;)) }))) }) while (parenthesized_expression "(iVar25 < iVar27)" ( (binary_expression "iVar25 < iVar27" identifier < identifier) )) ;) (expression_statement "iVar17 = p->rc;" (assignment_expression "iVar17 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;) (expression_statement "iVar27 = iVar12 + iVar27;" (assignment_expression "iVar27 = iVar12 + iVar27" identifier = (binary_expression "iVar12 + iVar27" identifier + identifier)) ;) }) (else_clause "else {\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }" else (compound_statement "{\n                  (**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);\n                  iVar17 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar27;\nLAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;\n                }" { (expression_statement "(**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27);" (call_expression "(**(code **)(iVar30 + -0x7b80))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27)" (parenthesized_expression "(**(code **)(iVar30 + -0x7b80))" ( (pointer_expression "**(code **)(iVar30 + -0x7b80)" * (pointer_expression "*(code **)(iVar30 + -0x7b80)" * (cast_expression "(code **)(iVar30 + -0x7b80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar30 + -0x7b80)" ( (binary_expression "iVar30 + -0x7b80" identifier + number_literal) ))))) )) (argument_list "(writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar12,iVar27)" ( (binary_expression "writer.writer.buf.p + writer.writer.buf.n" (field_expression "writer.writer.buf.p" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) + (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier)) , (binary_expression "pDoclist + iVar12" identifier + identifier) , identifier ))) ;) (expression_statement "iVar17 = p->rc;" (assignment_expression "iVar17 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;) (expression_statement "writer.writer.buf.n = writer.writer.buf.n + iVar27;" (assignment_expression "writer.writer.buf.n = writer.writer.buf.n + iVar27" (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) = (binary_expression "writer.writer.buf.n + iVar27" (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) + identifier)) ;) (labeled_statement "LAB_00118f9c:\n                  iVar27 = iVar12 + iVar27;" statement_identifier : (expression_statement "iVar27 = iVar12 + iVar27;" (assignment_expression "iVar27 = iVar12 + iVar27" identifier = (binary_expression "iVar12 + iVar27" identifier + identifier)) ;)) }))) }) (else_clause "else {\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }" else (compound_statement "{\n                writer.writer.buf.p[1] = (u8)writer.writer.buf.n;\n                *writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);\n                if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar27;\n                writer.bFirstRowidInPage = '\0';\n                fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));\n                if (p->rc != 0) goto LAB_00118afc;\n                iVar27 = *(int *)(iVar30 + -0x7ef0);\n                if (iVar7 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                iVar27 = iVar12;\n                iVar17 = writer.writer.buf.n;\n                if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar17;\n                if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }\n                iVar17 = p->rc;\n              }" { (expression_statement "writer.writer.buf.p[1] = (u8)writer.writer.buf.n;" (assignment_expression "writer.writer.buf.p[1] = (u8)writer.writer.buf.n" (subscript_expression "writer.writer.buf.p[1]" (field_expression "writer.writer.buf.p" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) [ number_literal ]) = (cast_expression "(u8)writer.writer.buf.n" ( (type_descriptor "u8" type_identifier) ) (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier))) ;) (expression_statement "*writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8);" (assignment_expression "*writer.writer.buf.p = (u8)((uint)writer.writer.buf.n >> 8)" (pointer_expression "*writer.writer.buf.p" * (field_expression "writer.writer.buf.p" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier)) = (call_expression "(u8)((uint)writer.writer.buf.n >> 8)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "((uint)writer.writer.buf.n >> 8)" ( (binary_expression "(uint)writer.writer.buf.n >> 8" (cast_expression "(uint)writer.writer.buf.n" ( (type_descriptor "uint" type_identifier) ) (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier)) >> number_literal) )))) ;) (if_statement "if (iStack_fc == 0) {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }\n                else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }" if (parenthesized_expression "(iStack_fc == 0)" ( (binary_expression "iStack_fc == 0" identifier == number_literal) )) (compound_statement "{\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\n                  if (0x7f < uVar18) goto LAB_00118e00;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;\n                  iVar27 = 1;\n                }" { (expression_statement "iVar27 = *(int *)(iVar30 + -0x7ed8);" (assignment_expression "iVar27 = *(int *)(iVar30 + -0x7ed8)" identifier = (pointer_expression "*(int *)(iVar30 + -0x7ed8)" * (cast_expression "(int *)(iVar30 + -0x7ed8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7ed8)" ( (binary_expression "iVar30 + -0x7ed8" identifier + number_literal) ))))) ;) (if_statement "if (0x7f < uVar18) goto LAB_00118e00;" if (parenthesized_expression "(0x7f < uVar18)" ( (binary_expression "0x7f < uVar18" number_literal < identifier) )) (goto_statement "goto LAB_00118e00;" goto statement_identifier ;)) (expression_statement "writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18;" (assignment_expression "writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar18" (subscript_expression "writer.writer.buf.p[writer.writer.buf.n]" (field_expression "writer.writer.buf.p" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) [ (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) ]) = (cast_expression "(u8)uVar18" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (expression_statement "iVar27 = 1;" (assignment_expression "iVar27 = 1" identifier = number_literal) ;) }) (else_clause "else {\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }" else (compound_statement "{\n                  iVar27 = *(int *)(iVar30 + -0x7ed8);\nLAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);\n                }" { (expression_statement "iVar27 = *(int *)(iVar30 + -0x7ed8);" (assignment_expression "iVar27 = *(int *)(iVar30 + -0x7ed8)" identifier = (pointer_expression "*(int *)(iVar30 + -0x7ed8)" * (cast_expression "(int *)(iVar30 + -0x7ed8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7ed8)" ( (binary_expression "iVar30 + -0x7ed8" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00118e00:\n                  iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);" statement_identifier : (expression_statement "iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18);" (assignment_expression "iVar27 = (*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18)" identifier = (call_expression "(*(code *)(iVar27 + 0x54))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18)" (parenthesized_expression "(*(code *)(iVar27 + 0x54))" ( (pointer_expression "*(code *)(iVar27 + 0x54)" * (cast_expression "(code *)(iVar27 + 0x54)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x54)" ( (binary_expression "iVar27 + 0x54" identifier + number_literal) )))) )) (argument_list "(writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar18)" ( (binary_expression "writer.writer.buf.p + writer.writer.buf.n" (field_expression "writer.writer.buf.p" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) + (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier)) , identifier , identifier , identifier )))) ;)) }))) (expression_statement "writer.writer.buf.n = writer.writer.buf.n + iVar27;" (assignment_expression "writer.writer.buf.n = writer.writer.buf.n + iVar27" (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) = (binary_expression "writer.writer.buf.n + iVar27" (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) + identifier)) ;) (expression_statement "writer.bFirstRowidInPage = '\0';" (assignment_expression "writer.bFirstRowidInPage = '\0'" (field_expression "writer.bFirstRowidInPage" identifier . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc));" (call_expression "fts5WriteDlidxAppend(p,&writer,CONCAT44(iVar30,in_stack_fffffefc))" identifier (argument_list "(p,&writer,CONCAT44(iVar30,in_stack_fffffefc))" ( identifier , (pointer_expression "&writer" & identifier) , (call_expression "CONCAT44(iVar30,in_stack_fffffefc)" identifier (argument_list "(iVar30,in_stack_fffffefc)" ( identifier , identifier ))) ))) ;) (if_statement "if (p->rc != 0) goto LAB_00118afc;" if (parenthesized_expression "(p->rc != 0)" ( (binary_expression "p->rc != 0" (field_expression "p->rc" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_00118afc;" goto statement_identifier ;)) (expression_statement "iVar27 = *(int *)(iVar30 + -0x7ef0);" (assignment_expression "iVar27 = *(int *)(iVar30 + -0x7ef0)" identifier = (pointer_expression "*(int *)(iVar30 + -0x7ef0)" * (cast_expression "(int *)(iVar30 + -0x7ef0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7ef0)" ( (binary_expression "iVar30 + -0x7ef0" identifier + number_literal) ))))) ;) (if_statement "if (iVar7 != 1) goto LAB_00118f30;" if (parenthesized_expression "(iVar7 != 1)" ( (binary_expression "iVar7 != 1" identifier != number_literal) )) (goto_statement "goto LAB_00118f30;" goto statement_identifier ;)) (labeled_statement "LAB_00118e60:\n                iVar27 = iVar12;" statement_identifier : (expression_statement "iVar27 = iVar12;" (assignment_expression "iVar27 = iVar12" identifier = identifier) ;)) (expression_statement "iVar17 = writer.writer.buf.n;" (assignment_expression "iVar17 = writer.writer.buf.n" identifier = (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if ((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')) {\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }" if (parenthesized_expression "((iVar12 < nDoclist) && (pDoclist[iVar12] == '\0'))" ( (binary_expression "(iVar12 < nDoclist) && (pDoclist[iVar12] == '\0')" (parenthesized_expression "(iVar12 < nDoclist)" ( (binary_expression "iVar12 < nDoclist" identifier < identifier) )) && (parenthesized_expression "(pDoclist[iVar12] == '\0')" ( (binary_expression "pDoclist[iVar12] == '\0'" (subscript_expression "pDoclist[iVar12]" identifier [ identifier ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                  iVar17 = writer.writer.buf.n + 1;\n                  iVar27 = iVar12 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }\n                }" { (expression_statement "iVar17 = writer.writer.buf.n + 1;" (assignment_expression "iVar17 = writer.writer.buf.n + 1" identifier = (binary_expression "writer.writer.buf.n + 1" (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) + number_literal)) ;) (expression_statement "iVar27 = iVar12 + 1;" (assignment_expression "iVar27 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "writer.writer.buf.p[writer.writer.buf.n] = '\0';" (assignment_expression "writer.writer.buf.p[writer.writer.buf.n] = '\0'" (subscript_expression "writer.writer.buf.p[writer.writer.buf.n]" (field_expression "writer.writer.buf.p" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) [ (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if ((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')) {\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }" if (parenthesized_expression "((iVar27 < nDoclist) && (pDoclist[iVar27] == '\0'))" ( (binary_expression "(iVar27 < nDoclist) && (pDoclist[iVar27] == '\0')" (parenthesized_expression "(iVar27 < nDoclist)" ( (binary_expression "iVar27 < nDoclist" identifier < identifier) )) && (parenthesized_expression "(pDoclist[iVar27] == '\0')" ( (binary_expression "pDoclist[iVar27] == '\0'" (subscript_expression "pDoclist[iVar27]" identifier [ identifier ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                    iVar27 = iVar12 + 2;\n                    writer.writer.buf.p[iVar17] = '\0';\n                    iVar17 = writer.writer.buf.n + 2;\n                  }" { (expression_statement "iVar27 = iVar12 + 2;" (assignment_expression "iVar27 = iVar12 + 2" identifier = (binary_expression "iVar12 + 2" identifier + number_literal)) ;) (expression_statement "writer.writer.buf.p[iVar17] = '\0';" (assignment_expression "writer.writer.buf.p[iVar17] = '\0'" (subscript_expression "writer.writer.buf.p[iVar17]" (field_expression "writer.writer.buf.p" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar17 = writer.writer.buf.n + 2;" (assignment_expression "iVar17 = writer.writer.buf.n + 2" identifier = (binary_expression "writer.writer.buf.n + 2" (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) + number_literal)) ;) })) })) (expression_statement "writer.writer.buf.n = iVar17;" (assignment_expression "writer.writer.buf.n = iVar17" (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) = identifier) ;) (if_statement "if (iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*pcVar28)(p,&writer);\n                }" if (parenthesized_expression "(iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n)" ( (binary_expression "iVar21 <= writer.writer.buf.n + writer.writer.pgidx.n" identifier <= (binary_expression "writer.writer.buf.n + writer.writer.pgidx.n" (field_expression "writer.writer.buf.n" (field_expression "writer.writer.buf" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier) + (field_expression "writer.writer.pgidx.n" (field_expression "writer.writer.pgidx" (field_expression "writer.writer" identifier . field_identifier) . field_identifier) . field_identifier))) )) (compound_statement "{\n                  (*pcVar28)(p,&writer);\n                }" { (expression_statement "(*pcVar28)(p,&writer);" (call_expression "(*pcVar28)(p,&writer)" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "(p,&writer)" ( identifier , (pointer_expression "&writer" & identifier) ))) ;) })) (expression_statement "iVar17 = p->rc;" (assignment_expression "iVar17 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;) }))) (if_statement "if (iVar17 != 0) goto LAB_00118afc;" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00118afc;" goto statement_identifier ;)) (expression_statement "bVar1 = iVar27 < nDoclist;" (assignment_expression "bVar1 = iVar27 < nDoclist" identifier = (binary_expression "iVar27 < nDoclist" identifier < identifier)) ;) (expression_statement "uStack_f4 = uVar18;" (assignment_expression "uStack_f4 = uVar18" identifier = identifier) ;) })) }))) (expression_statement "pFVar10 = pFVar15->pScan->pScanNext;" (assignment_expression "pFVar10 = pFVar15->pScan->pScanNext" identifier = (field_expression "pFVar15->pScan->pScanNext" (field_expression "pFVar15->pScan" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pFVar15->pScan = pFVar10;" (assignment_expression "pFVar15->pScan = pFVar10" (field_expression "pFVar15->pScan" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar27 = *(int *)(iVar30 + -0x7ed8);" (assignment_expression "iVar27 = *(int *)(iVar30 + -0x7ed8)" identifier = (pointer_expression "*(int *)(iVar30 + -0x7ed8)" * (cast_expression "(int *)(iVar30 + -0x7ed8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7ed8)" ( (binary_expression "iVar30 + -0x7ed8" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "((p->rc == 0) && (pFVar10 != (Fts5HashEntry *)0x0))" ( (binary_expression "(p->rc == 0) && (pFVar10 != (Fts5HashEntry *)0x0)" (parenthesized_expression "(p->rc == 0)" ( (binary_expression "p->rc == 0" (field_expression "p->rc" identifier -> field_identifier) == number_literal) )) && (parenthesized_expression "(pFVar10 != (Fts5HashEntry *)0x0)" ( (binary_expression "pFVar10 != (Fts5HashEntry *)0x0" identifier != (cast_expression "(Fts5HashEntry *)0x0" ( (type_descriptor "Fts5HashEntry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) ;) }) (else_clause "else {\nLAB_00118afc:\n        iVar27 = *(int *)(iVar30 + -0x7ed8);\n      }" else (compound_statement "{\nLAB_00118afc:\n        iVar27 = *(int *)(iVar30 + -0x7ed8);\n      }" { (labeled_statement "LAB_00118afc:\n        iVar27 = *(int *)(iVar30 + -0x7ed8);" statement_identifier : (expression_statement "iVar27 = *(int *)(iVar30 + -0x7ed8);" (assignment_expression "iVar27 = *(int *)(iVar30 + -0x7ed8)" identifier = (pointer_expression "*(int *)(iVar30 + -0x7ed8)" * (cast_expression "(int *)(iVar30 + -0x7ed8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7ed8)" ( (binary_expression "iVar30 + -0x7ed8" identifier + number_literal) ))))) ;)) }))) (expression_statement "pFVar19 = (Fts5Index *)&p->rc;" (assignment_expression "pFVar19 = (Fts5Index *)&p->rc" identifier = (cast_expression "(Fts5Index *)&p->rc" ( (type_descriptor "Fts5Index *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p->rc" & (field_expression "p->rc" identifier -> field_identifier)))) ;) (expression_statement "(*(code *)(iVar27 + -0x3294))(pFVar15);" (call_expression "(*(code *)(iVar27 + -0x3294))(pFVar15)" (parenthesized_expression "(*(code *)(iVar27 + -0x3294))" ( (pointer_expression "*(code *)(iVar27 + -0x3294)" * (cast_expression "(code *)(iVar27 + -0x3294)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + -0x3294)" ( (binary_expression "iVar27 + -0x3294" identifier + number_literal) )))) )) (argument_list "(pFVar15)" ( identifier ))) ;) (expression_statement "p_00 = p;" (assignment_expression "p_00 = p" identifier = identifier) ;) (expression_statement "fts5WriteFinish(p,&writer,&pgnoLast);" (call_expression "fts5WriteFinish(p,&writer,&pgnoLast)" identifier (argument_list "(p,&writer,&pgnoLast)" ( identifier , (pointer_expression "&writer" & identifier) , (pointer_expression "&pgnoLast" & identifier) ))) ;) (if_statement "if (pStruct->nLevel == 0) {\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          p_00 = pFVar19;\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + -0x7650))(pFVar19,&pStruct);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xad0))(pFVar19,pStruct,0,0);\n          iVar7 = p->rc;\n          p_00 = pFVar19;\n          if (iVar7 == 0) {\n            p_00 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&p_00->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)p_00;\n            pFVar8->iSegid = iVar20;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              p_00 = p;\n              (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(pStruct->nLevel == 0)" ( (binary_expression "pStruct->nLevel == 0" (field_expression "pStruct->nLevel" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          p_00 = pFVar19;\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + -0x7650))(pFVar19,&pStruct);\n          goto LAB_00118b60;\n        }\n      }" { (expression_statement "iVar7 = p->rc;" (assignment_expression "iVar7 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;) (if_statement "if (iVar7 == 0) {\n          p_00 = pFVar19;\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + -0x7650))(pFVar19,&pStruct);\n          goto LAB_00118b60;\n        }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          p_00 = pFVar19;\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + -0x7650))(pFVar19,&pStruct);\n          goto LAB_00118b60;\n        }" { (expression_statement "p_00 = pFVar19;" (assignment_expression "p_00 = pFVar19" identifier = identifier) ;) (expression_statement "(*(code *)(*(int *)(iVar30 + -0x7e94) + -0x7650))(pFVar19,&pStruct);" (call_expression "(*(code *)(*(int *)(iVar30 + -0x7e94) + -0x7650))(pFVar19,&pStruct)" (parenthesized_expression "(*(code *)(*(int *)(iVar30 + -0x7e94) + -0x7650))" ( (pointer_expression "*(code *)(*(int *)(iVar30 + -0x7e94) + -0x7650)" * (cast_expression "(code *)(*(int *)(iVar30 + -0x7e94) + -0x7650)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar30 + -0x7e94) + -0x7650)" ( (binary_expression "*(int *)(iVar30 + -0x7e94) + -0x7650" (pointer_expression "*(int *)(iVar30 + -0x7e94)" * (cast_expression "(int *)(iVar30 + -0x7e94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7e94)" ( (binary_expression "iVar30 + -0x7e94" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(pFVar19,&pStruct)" ( identifier , (pointer_expression "&pStruct" & identifier) ))) ;) (goto_statement "goto LAB_00118b60;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_00118b60:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xad0))(pFVar19,pStruct,0,0);\n          iVar7 = p->rc;\n          p_00 = pFVar19;\n          if (iVar7 == 0) {\n            p_00 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&p_00->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)p_00;\n            pFVar8->iSegid = iVar20;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              p_00 = p;\n              (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }" else (compound_statement "{\nLAB_00118b60:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xad0))(pFVar19,pStruct,0,0);\n          iVar7 = p->rc;\n          p_00 = pFVar19;\n          if (iVar7 == 0) {\n            p_00 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&p_00->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)p_00;\n            pFVar8->iSegid = iVar20;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              p_00 = p;\n              (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }" { (labeled_statement "LAB_00118b60:\n        iVar7 = p->rc;" statement_identifier : (expression_statement "iVar7 = p->rc;" (assignment_expression "iVar7 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;)) (if_statement "if (iVar7 == 0) {\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xad0))(pFVar19,pStruct,0,0);\n          iVar7 = p->rc;\n          p_00 = pFVar19;\n          if (iVar7 == 0) {\n            p_00 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&p_00->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)p_00;\n            pFVar8->iSegid = iVar20;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              p_00 = p;\n              (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct);\n              goto LAB_00118c00;\n            }\n          }\n        }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xad0))(pFVar19,pStruct,0,0);\n          iVar7 = p->rc;\n          p_00 = pFVar19;\n          if (iVar7 == 0) {\n            p_00 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&p_00->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)p_00;\n            pFVar8->iSegid = iVar20;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              p_00 = p;\n              (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct);\n              goto LAB_00118c00;\n            }\n          }\n        }" { (expression_statement "(*(code *)(*(int *)(iVar30 + -0x7e94) + 0xad0))(pFVar19,pStruct,0,0);" (call_expression "(*(code *)(*(int *)(iVar30 + -0x7e94) + 0xad0))(pFVar19,pStruct,0,0)" (parenthesized_expression "(*(code *)(*(int *)(iVar30 + -0x7e94) + 0xad0))" ( (pointer_expression "*(code *)(*(int *)(iVar30 + -0x7e94) + 0xad0)" * (cast_expression "(code *)(*(int *)(iVar30 + -0x7e94) + 0xad0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar30 + -0x7e94) + 0xad0)" ( (binary_expression "*(int *)(iVar30 + -0x7e94) + 0xad0" (pointer_expression "*(int *)(iVar30 + -0x7e94)" * (cast_expression "(int *)(iVar30 + -0x7e94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7e94)" ( (binary_expression "iVar30 + -0x7e94" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(pFVar19,pStruct,0,0)" ( identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "iVar7 = p->rc;" (assignment_expression "iVar7 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;) (expression_statement "p_00 = pFVar19;" (assignment_expression "p_00 = pFVar19" identifier = identifier) ;) (if_statement "if (iVar7 == 0) {\n            p_00 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&p_00->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)p_00;\n            pFVar8->iSegid = iVar20;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              p_00 = p;\n              (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct);\n              goto LAB_00118c00;\n            }\n          }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n            p_00 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&p_00->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)p_00;\n            pFVar8->iSegid = iVar20;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              p_00 = p;\n              (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct);\n              goto LAB_00118c00;\n            }\n          }" { (expression_statement "p_00 = (Fts5Index *)pStruct->aLevel[0].nSeg;" (assignment_expression "p_00 = (Fts5Index *)pStruct->aLevel[0].nSeg" identifier = (cast_expression "(Fts5Index *)pStruct->aLevel[0].nSeg" ( (type_descriptor "Fts5Index *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pStruct->aLevel[0].nSeg" (subscript_expression "pStruct->aLevel[0]" (field_expression "pStruct->aLevel" identifier -> field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "pStruct->aLevel[0].nSeg = (int)((int)&p_00->pConfig + 1);" (assignment_expression "pStruct->aLevel[0].nSeg = (int)((int)&p_00->pConfig + 1)" (field_expression "pStruct->aLevel[0].nSeg" (subscript_expression "pStruct->aLevel[0]" (field_expression "pStruct->aLevel" identifier -> field_identifier) [ number_literal ]) . field_identifier) = (cast_expression "(int)((int)&p_00->pConfig + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&p_00->pConfig + 1)" ( (binary_expression "(int)&p_00->pConfig + 1" (cast_expression "(int)&p_00->pConfig" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_00->pConfig" & (field_expression "p_00->pConfig" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "pFVar8 = pStruct->aLevel[0].aSeg + (int)p_00;" (assignment_expression "pFVar8 = pStruct->aLevel[0].aSeg + (int)p_00" identifier = (binary_expression "pStruct->aLevel[0].aSeg + (int)p_00" (field_expression "pStruct->aLevel[0].aSeg" (subscript_expression "pStruct->aLevel[0]" (field_expression "pStruct->aLevel" identifier -> field_identifier) [ number_literal ]) . field_identifier) + (cast_expression "(int)p_00" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pFVar8->iSegid = iVar20;" (assignment_expression "pFVar8->iSegid = iVar20" (field_expression "pFVar8->iSegid" identifier -> field_identifier) = identifier) ;) (expression_statement "pFVar8->pgnoFirst = 1;" (assignment_expression "pFVar8->pgnoFirst = 1" (field_expression "pFVar8->pgnoFirst" identifier -> field_identifier) = number_literal) ;) (expression_statement "pFVar8->pgnoLast = pgnoLast;" (assignment_expression "pFVar8->pgnoLast = pgnoLast" (field_expression "pFVar8->pgnoLast" identifier -> field_identifier) = identifier) ;) (expression_statement "pStruct->nSegment = pStruct->nSegment + 1;" (assignment_expression "pStruct->nSegment = pStruct->nSegment + 1" (field_expression "pStruct->nSegment" identifier -> field_identifier) = (binary_expression "pStruct->nSegment + 1" (field_expression "pStruct->nSegment" identifier -> field_identifier) + number_literal)) ;) (expression_statement "iVar7 = p->rc;" (assignment_expression "iVar7 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;) (if_statement "if (iVar7 == 0) {\n              p_00 = p;\n              (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct);\n              goto LAB_00118c00;\n            }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n              p_00 = p;\n              (*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct);\n              goto LAB_00118c00;\n            }" { (expression_statement "p_00 = p;" (assignment_expression "p_00 = p" identifier = identifier) ;) (expression_statement "(*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct);" (call_expression "(*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))(p,0,pStruct)" (parenthesized_expression "(*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48))" ( (pointer_expression "*(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48)" * (cast_expression "(code *)(*(int *)(iVar30 + -0x7e94) + 0xc48)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar30 + -0x7e94) + 0xc48)" ( (binary_expression "*(int *)(iVar30 + -0x7e94) + 0xc48" (pointer_expression "*(int *)(iVar30 + -0x7e94)" * (cast_expression "(int *)(iVar30 + -0x7e94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7e94)" ( (binary_expression "iVar30 + -0x7e94" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(p,0,pStruct)" ( identifier , number_literal , identifier ))) ;) (goto_statement "goto LAB_00118c00;" goto statement_identifier ;) })) })) })) }))) }))) }) (else_clause "else {\nLAB_00118864:\n    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))();\n    iVar7 = p->rc;\n  }" else (compound_statement "{\nLAB_00118864:\n    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))();\n    iVar7 = p->rc;\n  }" { (labeled_statement "LAB_00118864:\n    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))();" statement_identifier : (expression_statement "(*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))();" (call_expression "(*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))()" (parenthesized_expression "(*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0))" ( (pointer_expression "*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0)" * (cast_expression "(code *)(*(int *)(iVar30 + -0x7ef0) + 0x1a0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar30 + -0x7ef0) + 0x1a0)" ( (binary_expression "*(int *)(iVar30 + -0x7ef0) + 0x1a0" (pointer_expression "*(int *)(iVar30 + -0x7ef0)" * (cast_expression "(int *)(iVar30 + -0x7ef0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7ef0)" ( (binary_expression "iVar30 + -0x7ef0" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "()" ( ))) ;)) (expression_statement "iVar7 = p->rc;" (assignment_expression "iVar7 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;) }))) (expression_statement "pFVar4 = pStruct;" (assignment_expression "pFVar4 = pStruct" identifier = identifier) ;) (expression_statement "pFVar16 = p->pConfig;" (assignment_expression "pFVar16 = p->pConfig" identifier = (field_expression "p->pConfig" identifier -> field_identifier)) ;) (if_statement "if ((iVar7 == 0) && (p_00 = (Fts5Index *)pFVar16->nAutomerge, 0 < (int)p_00)) {\n    iVar21 = (int)pStruct->nWriteCounter;\n    iVar23 = *(int *)&pStruct->nWriteCounter;\n    iVar7 = p->nWorkUnit;\n    uVar18 = pgnoLast + iVar21;\n    *(uint *)((int)&pStruct->nWriteCounter + 4) = uVar18;\n    iVar20 = (uint)(uVar18 < (uint)pgnoLast) + (pgnoLast >> 0x1f) + iVar23;\n    *(int *)&pStruct->nWriteCounter = iVar20;\n    iVar24 = p->pConfig->nAutomerge;\n    __udivdi3(iVar20,uVar18,iVar7 >> 0x1f,iVar7);\n    __udivdi3(iVar23,iVar21,iVar7 >> 0x1f,iVar7);\n    p_00 = p;\n    fts5IndexMerge(p,&pStruct,(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar4->nLevel,iVar24)\n    ;\n    pFVar16 = p->pConfig;\n    iVar7 = p->rc;\n  }" if (parenthesized_expression "((iVar7 == 0) && (p_00 = (Fts5Index *)pFVar16->nAutomerge, 0 < (int)p_00))" ( (binary_expression "(iVar7 == 0) && (p_00 = (Fts5Index *)pFVar16->nAutomerge, 0 < (int)p_00)" (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) && (parenthesized_expression "(p_00 = (Fts5Index *)pFVar16->nAutomerge, 0 < (int)p_00)" ( (comma_expression "p_00 = (Fts5Index *)pFVar16->nAutomerge, 0 < (int)p_00" (assignment_expression "p_00 = (Fts5Index *)pFVar16->nAutomerge" identifier = (cast_expression "(Fts5Index *)pFVar16->nAutomerge" ( (type_descriptor "Fts5Index *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar16->nAutomerge" identifier -> field_identifier))) , (binary_expression "0 < (int)p_00" number_literal < (cast_expression "(int)p_00" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (compound_statement "{\n    iVar21 = (int)pStruct->nWriteCounter;\n    iVar23 = *(int *)&pStruct->nWriteCounter;\n    iVar7 = p->nWorkUnit;\n    uVar18 = pgnoLast + iVar21;\n    *(uint *)((int)&pStruct->nWriteCounter + 4) = uVar18;\n    iVar20 = (uint)(uVar18 < (uint)pgnoLast) + (pgnoLast >> 0x1f) + iVar23;\n    *(int *)&pStruct->nWriteCounter = iVar20;\n    iVar24 = p->pConfig->nAutomerge;\n    __udivdi3(iVar20,uVar18,iVar7 >> 0x1f,iVar7);\n    __udivdi3(iVar23,iVar21,iVar7 >> 0x1f,iVar7);\n    p_00 = p;\n    fts5IndexMerge(p,&pStruct,(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar4->nLevel,iVar24)\n    ;\n    pFVar16 = p->pConfig;\n    iVar7 = p->rc;\n  }" { (expression_statement "iVar21 = (int)pStruct->nWriteCounter;" (assignment_expression "iVar21 = (int)pStruct->nWriteCounter" identifier = (cast_expression "(int)pStruct->nWriteCounter" ( (type_descriptor "int" primitive_type) ) (field_expression "pStruct->nWriteCounter" identifier -> field_identifier))) ;) (expression_statement "iVar23 = *(int *)&pStruct->nWriteCounter;" (assignment_expression "iVar23 = *(int *)&pStruct->nWriteCounter" identifier = (pointer_expression "*(int *)&pStruct->nWriteCounter" * (cast_expression "(int *)&pStruct->nWriteCounter" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pStruct->nWriteCounter" & (field_expression "pStruct->nWriteCounter" identifier -> field_identifier))))) ;) (expression_statement "iVar7 = p->nWorkUnit;" (assignment_expression "iVar7 = p->nWorkUnit" identifier = (field_expression "p->nWorkUnit" identifier -> field_identifier)) ;) (expression_statement "uVar18 = pgnoLast + iVar21;" (assignment_expression "uVar18 = pgnoLast + iVar21" identifier = (binary_expression "pgnoLast + iVar21" identifier + identifier)) ;) (expression_statement "*(uint *)((int)&pStruct->nWriteCounter + 4) = uVar18;" (assignment_expression "*(uint *)((int)&pStruct->nWriteCounter + 4) = uVar18" (pointer_expression "*(uint *)((int)&pStruct->nWriteCounter + 4)" * (cast_expression "(uint *)((int)&pStruct->nWriteCounter + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pStruct->nWriteCounter + 4)" ( (binary_expression "(int)&pStruct->nWriteCounter + 4" (cast_expression "(int)&pStruct->nWriteCounter" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pStruct->nWriteCounter" & (field_expression "pStruct->nWriteCounter" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "iVar20 = (uint)(uVar18 < (uint)pgnoLast) + (pgnoLast >> 0x1f) + iVar23;" (assignment_expression "iVar20 = (uint)(uVar18 < (uint)pgnoLast) + (pgnoLast >> 0x1f) + iVar23" identifier = (binary_expression "(uint)(uVar18 < (uint)pgnoLast) + (pgnoLast >> 0x1f) + iVar23" (binary_expression "(uint)(uVar18 < (uint)pgnoLast) + (pgnoLast >> 0x1f)" (call_expression "(uint)(uVar18 < (uint)pgnoLast)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar18 < (uint)pgnoLast)" ( (binary_expression "uVar18 < (uint)pgnoLast" identifier < (cast_expression "(uint)pgnoLast" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) + (parenthesized_expression "(pgnoLast >> 0x1f)" ( (binary_expression "pgnoLast >> 0x1f" identifier >> number_literal) ))) + identifier)) ;) (expression_statement "*(int *)&pStruct->nWriteCounter = iVar20;" (assignment_expression "*(int *)&pStruct->nWriteCounter = iVar20" (pointer_expression "*(int *)&pStruct->nWriteCounter" * (cast_expression "(int *)&pStruct->nWriteCounter" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pStruct->nWriteCounter" & (field_expression "pStruct->nWriteCounter" identifier -> field_identifier)))) = identifier) ;) (expression_statement "iVar24 = p->pConfig->nAutomerge;" (assignment_expression "iVar24 = p->pConfig->nAutomerge" identifier = (field_expression "p->pConfig->nAutomerge" (field_expression "p->pConfig" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "__udivdi3(iVar20,uVar18,iVar7 >> 0x1f,iVar7);" (call_expression "__udivdi3(iVar20,uVar18,iVar7 >> 0x1f,iVar7)" identifier (argument_list "(iVar20,uVar18,iVar7 >> 0x1f,iVar7)" ( identifier , identifier , (binary_expression "iVar7 >> 0x1f" identifier >> number_literal) , identifier ))) ;) (expression_statement "__udivdi3(iVar23,iVar21,iVar7 >> 0x1f,iVar7);" (call_expression "__udivdi3(iVar23,iVar21,iVar7 >> 0x1f,iVar7)" identifier (argument_list "(iVar23,iVar21,iVar7 >> 0x1f,iVar7)" ( identifier , identifier , (binary_expression "iVar7 >> 0x1f" identifier >> number_literal) , identifier ))) ;) (expression_statement "p_00 = p;" (assignment_expression "p_00 = p" identifier = identifier) ;) (expression_statement "fts5IndexMerge(p,&pStruct,(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar4->nLevel,iVar24)\n    ;" (call_expression "fts5IndexMerge(p,&pStruct,(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar4->nLevel,iVar24)" identifier (argument_list "(p,&pStruct,(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar4->nLevel,iVar24)" ( identifier , (pointer_expression "&pStruct" & identifier) , (binary_expression "(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar4->nLevel" (binary_expression "(extraout_v1 - extraout_v1_00) * p->nWorkUnit" (parenthesized_expression "(extraout_v1 - extraout_v1_00)" ( (binary_expression "extraout_v1 - extraout_v1_00" identifier - identifier) )) * (field_expression "p->nWorkUnit" identifier -> field_identifier)) * (field_expression "pFVar4->nLevel" identifier -> field_identifier)) , identifier ))) ;) (expression_statement "pFVar16 = p->pConfig;" (assignment_expression "pFVar16 = p->pConfig" identifier = (field_expression "p->pConfig" identifier -> field_identifier)) ;) (expression_statement "iVar7 = p->rc;" (assignment_expression "iVar7 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;) })) (expression_statement "iVar23 = 0;" (assignment_expression "iVar23 = 0" identifier = number_literal) ;) (expression_statement "iVar21 = *(int *)(iVar30 + -0x7e94);" (assignment_expression "iVar21 = *(int *)(iVar30 + -0x7e94)" identifier = (pointer_expression "*(int *)(iVar30 + -0x7e94)" * (cast_expression "(int *)(iVar30 + -0x7e94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7e94)" ( (binary_expression "iVar30 + -0x7e94" identifier + number_literal) ))))) ;) (expression_statement "iVar20 = pFVar16->nCrisisMerge;" (assignment_expression "iVar20 = pFVar16->nCrisisMerge" identifier = (field_expression "pFVar16->nCrisisMerge" identifier -> field_identifier)) ;) (expression_statement "writer.iSegid = (int)pStruct;" (assignment_expression "writer.iSegid = (int)pStruct" (field_expression "writer.iSegid" identifier . field_identifier) = (cast_expression "(int)pStruct" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (while_statement "while (pFVar4 = (Fts5Structure *)writer.iSegid, iVar7 == 0) {\n    while( true ) {\n      if (*(int *)(writer.iSegid + iVar23 * 0xc + 0x1c) < iVar20) {\n        pStruct = (Fts5Structure *)writer.iSegid;\n        fts5StructureWrite(p,(Fts5Structure *)writer.iSegid);\n        p_00 = p;\n        pFVar4 = pStruct;\n        goto LAB_00118924;\n      }\n      p_00 = p;\n      fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar23,(int *)0x0);\n      iVar23 = iVar23 + 1;\n      iVar7 = p->rc;\n      if (iVar7 != 0) break;\n      p_00 = p;\n      (*(code *)(iVar21 + 0xc48))(p,iVar23);\n      pFVar4 = (Fts5Structure *)writer.iSegid;\n      if (p->rc != 0) goto LAB_00118924;\n    }\n  }" while (parenthesized_expression "(pFVar4 = (Fts5Structure *)writer.iSegid, iVar7 == 0)" ( (comma_expression "pFVar4 = (Fts5Structure *)writer.iSegid, iVar7 == 0" (assignment_expression "pFVar4 = (Fts5Structure *)writer.iSegid" identifier = (cast_expression "(Fts5Structure *)writer.iSegid" ( (type_descriptor "Fts5Structure *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "writer.iSegid" identifier . field_identifier))) , (binary_expression "iVar7 == 0" identifier == number_literal)) )) (compound_statement "{\n    while( true ) {\n      if (*(int *)(writer.iSegid + iVar23 * 0xc + 0x1c) < iVar20) {\n        pStruct = (Fts5Structure *)writer.iSegid;\n        fts5StructureWrite(p,(Fts5Structure *)writer.iSegid);\n        p_00 = p;\n        pFVar4 = pStruct;\n        goto LAB_00118924;\n      }\n      p_00 = p;\n      fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar23,(int *)0x0);\n      iVar23 = iVar23 + 1;\n      iVar7 = p->rc;\n      if (iVar7 != 0) break;\n      p_00 = p;\n      (*(code *)(iVar21 + 0xc48))(p,iVar23);\n      pFVar4 = (Fts5Structure *)writer.iSegid;\n      if (p->rc != 0) goto LAB_00118924;\n    }\n  }" { (while_statement "while( true ) {\n      if (*(int *)(writer.iSegid + iVar23 * 0xc + 0x1c) < iVar20) {\n        pStruct = (Fts5Structure *)writer.iSegid;\n        fts5StructureWrite(p,(Fts5Structure *)writer.iSegid);\n        p_00 = p;\n        pFVar4 = pStruct;\n        goto LAB_00118924;\n      }\n      p_00 = p;\n      fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar23,(int *)0x0);\n      iVar23 = iVar23 + 1;\n      iVar7 = p->rc;\n      if (iVar7 != 0) break;\n      p_00 = p;\n      (*(code *)(iVar21 + 0xc48))(p,iVar23);\n      pFVar4 = (Fts5Structure *)writer.iSegid;\n      if (p->rc != 0) goto LAB_00118924;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if (*(int *)(writer.iSegid + iVar23 * 0xc + 0x1c) < iVar20) {\n        pStruct = (Fts5Structure *)writer.iSegid;\n        fts5StructureWrite(p,(Fts5Structure *)writer.iSegid);\n        p_00 = p;\n        pFVar4 = pStruct;\n        goto LAB_00118924;\n      }\n      p_00 = p;\n      fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar23,(int *)0x0);\n      iVar23 = iVar23 + 1;\n      iVar7 = p->rc;\n      if (iVar7 != 0) break;\n      p_00 = p;\n      (*(code *)(iVar21 + 0xc48))(p,iVar23);\n      pFVar4 = (Fts5Structure *)writer.iSegid;\n      if (p->rc != 0) goto LAB_00118924;\n    }" { (if_statement "if (*(int *)(writer.iSegid + iVar23 * 0xc + 0x1c) < iVar20) {\n        pStruct = (Fts5Structure *)writer.iSegid;\n        fts5StructureWrite(p,(Fts5Structure *)writer.iSegid);\n        p_00 = p;\n        pFVar4 = pStruct;\n        goto LAB_00118924;\n      }" if (parenthesized_expression "(*(int *)(writer.iSegid + iVar23 * 0xc + 0x1c) < iVar20)" ( (binary_expression "*(int *)(writer.iSegid + iVar23 * 0xc + 0x1c) < iVar20" (pointer_expression "*(int *)(writer.iSegid + iVar23 * 0xc + 0x1c)" * (cast_expression "(int *)(writer.iSegid + iVar23 * 0xc + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(writer.iSegid + iVar23 * 0xc + 0x1c)" ( (binary_expression "writer.iSegid + iVar23 * 0xc + 0x1c" (binary_expression "writer.iSegid + iVar23 * 0xc" (field_expression "writer.iSegid" identifier . field_identifier) + (binary_expression "iVar23 * 0xc" identifier * number_literal)) + number_literal) )))) < identifier) )) (compound_statement "{\n        pStruct = (Fts5Structure *)writer.iSegid;\n        fts5StructureWrite(p,(Fts5Structure *)writer.iSegid);\n        p_00 = p;\n        pFVar4 = pStruct;\n        goto LAB_00118924;\n      }" { (expression_statement "pStruct = (Fts5Structure *)writer.iSegid;" (assignment_expression "pStruct = (Fts5Structure *)writer.iSegid" identifier = (cast_expression "(Fts5Structure *)writer.iSegid" ( (type_descriptor "Fts5Structure *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "writer.iSegid" identifier . field_identifier))) ;) (expression_statement "fts5StructureWrite(p,(Fts5Structure *)writer.iSegid);" (call_expression "fts5StructureWrite(p,(Fts5Structure *)writer.iSegid)" identifier (argument_list "(p,(Fts5Structure *)writer.iSegid)" ( identifier , (cast_expression "(Fts5Structure *)writer.iSegid" ( (type_descriptor "Fts5Structure *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "writer.iSegid" identifier . field_identifier)) ))) ;) (expression_statement "p_00 = p;" (assignment_expression "p_00 = p" identifier = identifier) ;) (expression_statement "pFVar4 = pStruct;" (assignment_expression "pFVar4 = pStruct" identifier = identifier) ;) (goto_statement "goto LAB_00118924;" goto statement_identifier ;) })) (expression_statement "p_00 = p;" (assignment_expression "p_00 = p" identifier = identifier) ;) (expression_statement "fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar23,(int *)0x0);" (call_expression "fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar23,(int *)0x0)" identifier (argument_list "(p,(Fts5Structure **)&writer,iVar23,(int *)0x0)" ( identifier , (cast_expression "(Fts5Structure **)&writer" ( (type_descriptor "Fts5Structure **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&writer" & identifier)) , identifier , (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "iVar23 = iVar23 + 1;" (assignment_expression "iVar23 = iVar23 + 1" identifier = (binary_expression "iVar23 + 1" identifier + number_literal)) ;) (expression_statement "iVar7 = p->rc;" (assignment_expression "iVar7 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;) (if_statement "if (iVar7 != 0) break;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "p_00 = p;" (assignment_expression "p_00 = p" identifier = identifier) ;) (expression_statement "(*(code *)(iVar21 + 0xc48))(p,iVar23);" (call_expression "(*(code *)(iVar21 + 0xc48))(p,iVar23)" (parenthesized_expression "(*(code *)(iVar21 + 0xc48))" ( (pointer_expression "*(code *)(iVar21 + 0xc48)" * (cast_expression "(code *)(iVar21 + 0xc48)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0xc48)" ( (binary_expression "iVar21 + 0xc48" identifier + number_literal) )))) )) (argument_list "(p,iVar23)" ( identifier , identifier ))) ;) (expression_statement "pFVar4 = (Fts5Structure *)writer.iSegid;" (assignment_expression "pFVar4 = (Fts5Structure *)writer.iSegid" identifier = (cast_expression "(Fts5Structure *)writer.iSegid" ( (type_descriptor "Fts5Structure *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "writer.iSegid" identifier . field_identifier))) ;) (if_statement "if (p->rc != 0) goto LAB_00118924;" if (parenthesized_expression "(p->rc != 0)" ( (binary_expression "p->rc != 0" (field_expression "p->rc" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_00118924;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00118924:\n  pStruct = pFVar4;" statement_identifier : (expression_statement "pStruct = pFVar4;" (assignment_expression "pStruct = pFVar4" identifier = identifier) ;)) (if_statement "if ((pStruct != (Fts5Structure *)0x0) &&\n     (iVar20 = pStruct->nRef + -1, pStruct->nRef = iVar20, iVar20 < 1)) {\n    p_00 = (Fts5Index *)pStruct;\n    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x124))();\n  }" if (parenthesized_expression "((pStruct != (Fts5Structure *)0x0) &&\n     (iVar20 = pStruct->nRef + -1, pStruct->nRef = iVar20, iVar20 < 1))" ( (binary_expression "(pStruct != (Fts5Structure *)0x0) &&\n     (iVar20 = pStruct->nRef + -1, pStruct->nRef = iVar20, iVar20 < 1)" (parenthesized_expression "(pStruct != (Fts5Structure *)0x0)" ( (binary_expression "pStruct != (Fts5Structure *)0x0" identifier != (cast_expression "(Fts5Structure *)0x0" ( (type_descriptor "Fts5Structure *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar20 = pStruct->nRef + -1, pStruct->nRef = iVar20, iVar20 < 1)" ( (comma_expression "iVar20 = pStruct->nRef + -1, pStruct->nRef = iVar20, iVar20 < 1" (assignment_expression "iVar20 = pStruct->nRef + -1" identifier = (binary_expression "pStruct->nRef + -1" (field_expression "pStruct->nRef" identifier -> field_identifier) + number_literal)) , (comma_expression "pStruct->nRef = iVar20, iVar20 < 1" (assignment_expression "pStruct->nRef = iVar20" (field_expression "pStruct->nRef" identifier -> field_identifier) = identifier) , (binary_expression "iVar20 < 1" identifier < number_literal))) ))) )) (compound_statement "{\n    p_00 = (Fts5Index *)pStruct;\n    (*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x124))();\n  }" { (expression_statement "p_00 = (Fts5Index *)pStruct;" (assignment_expression "p_00 = (Fts5Index *)pStruct" identifier = (cast_expression "(Fts5Index *)pStruct" ( (type_descriptor "Fts5Index *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "(*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x124))();" (call_expression "(*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x124))()" (parenthesized_expression "(*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x124))" ( (pointer_expression "*(code *)(*(int *)(iVar30 + -0x7ef0) + 0x124)" * (cast_expression "(code *)(*(int *)(iVar30 + -0x7ef0) + 0x124)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar30 + -0x7ef0) + 0x124)" ( (binary_expression "*(int *)(iVar30 + -0x7ef0) + 0x124" (pointer_expression "*(int *)(iVar30 + -0x7ef0)" * (cast_expression "(int *)(iVar30 + -0x7ef0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 + -0x7ef0)" ( (binary_expression "iVar30 + -0x7ef0" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "()" ( ))) ;) })) (if_statement "if (iVar6 == *piVar5) {\n    return;\n  }" if (parenthesized_expression "(iVar6 == *piVar5)" ( (binary_expression "iVar6 == *piVar5" identifier == (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar28 = *(code **)(iVar30 + -0x7ba0);" (assignment_expression "pcVar28 = *(code **)(iVar30 + -0x7ba0)" identifier = (pointer_expression "*(code **)(iVar30 + -0x7ba0)" * (cast_expression "(code **)(iVar30 + -0x7ba0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar30 + -0x7ba0)" ( (binary_expression "iVar30 + -0x7ba0" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar28)();" (call_expression "(*pcVar28)()" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(pcVar28 + 0x42590))(p_00->pConfig->db);" (call_expression "(**(code **)(pcVar28 + 0x42590))(p_00->pConfig->db)" (parenthesized_expression "(**(code **)(pcVar28 + 0x42590))" ( (pointer_expression "**(code **)(pcVar28 + 0x42590)" * (pointer_expression "*(code **)(pcVar28 + 0x42590)" * (cast_expression "(code **)(pcVar28 + 0x42590)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar28 + 0x42590)" ( (binary_expression "pcVar28 + 0x42590" identifier + number_literal) ))))) )) (argument_list "(p_00->pConfig->db)" ( (field_expression "p_00->pConfig->db" (field_expression "p_00->pConfig" identifier -> field_identifier) -> field_identifier) ))) ;) (if_statement "if (p_00->nWorkUnit != 0) {\n    iVar6 = fts5StorageSaveTotals((Fts5Storage *)p_00);\n    p_00->nWorkUnit = 0;\n    if (iVar6 != 0) goto LAB_00119204;\n  }" if (parenthesized_expression "(p_00->nWorkUnit != 0)" ( (binary_expression "p_00->nWorkUnit != 0" (field_expression "p_00->nWorkUnit" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n    iVar6 = fts5StorageSaveTotals((Fts5Storage *)p_00);\n    p_00->nWorkUnit = 0;\n    if (iVar6 != 0) goto LAB_00119204;\n  }" { (expression_statement "iVar6 = fts5StorageSaveTotals((Fts5Storage *)p_00);" (assignment_expression "iVar6 = fts5StorageSaveTotals((Fts5Storage *)p_00)" identifier = (call_expression "fts5StorageSaveTotals((Fts5Storage *)p_00)" identifier (argument_list "((Fts5Storage *)p_00)" ( (cast_expression "(Fts5Storage *)p_00" ( (type_descriptor "Fts5Storage *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "p_00->nWorkUnit = 0;" (assignment_expression "p_00->nWorkUnit = 0" (field_expression "p_00->nWorkUnit" identifier -> field_identifier) = number_literal) ;) (if_statement "if (iVar6 != 0) goto LAB_00119204;" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00119204;" goto statement_identifier ;)) })) (expression_statement "pFVar19 = (Fts5Index *)p_00->zDataTbl;" (assignment_expression "pFVar19 = (Fts5Index *)p_00->zDataTbl" identifier = (cast_expression "(Fts5Index *)p_00->zDataTbl" ( (type_descriptor "Fts5Index *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_00->zDataTbl" identifier -> field_identifier))) ;) (if_statement "if (pFVar19->nPendingData != 0) {\n    pFVar19->nPendingData = 0;\n    fts5FlushOneHash(pFVar19);\n  }" if (parenthesized_expression "(pFVar19->nPendingData != 0)" ( (binary_expression "pFVar19->nPendingData != 0" (field_expression "pFVar19->nPendingData" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n    pFVar19->nPendingData = 0;\n    fts5FlushOneHash(pFVar19);\n  }" { (expression_statement "pFVar19->nPendingData = 0;" (assignment_expression "pFVar19->nPendingData = 0" (field_expression "pFVar19->nPendingData" identifier -> field_identifier) = number_literal) ;) (expression_statement "fts5FlushOneHash(pFVar19);" (call_expression "fts5FlushOneHash(pFVar19)" identifier (argument_list "(pFVar19)" ( identifier ))) ;) })) (expression_statement "pcVar29 = *(code **)(pcVar28 + 0x42708);" (assignment_expression "pcVar29 = *(code **)(pcVar28 + 0x42708)" identifier = (pointer_expression "*(code **)(pcVar28 + 0x42708)" * (cast_expression "(code **)(pcVar28 + 0x42708)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar28 + 0x42708)" ( (binary_expression "pcVar28 + 0x42708" identifier + number_literal) ))))) ;) (if_statement "if (pFVar19->pReader != (sqlite3_blob *)0x0) {\n    pFVar19->pReader = (sqlite3_blob *)0x0;\n    (*pcVar29)();\n  }" if (parenthesized_expression "(pFVar19->pReader != (sqlite3_blob *)0x0)" ( (binary_expression "pFVar19->pReader != (sqlite3_blob *)0x0" (field_expression "pFVar19->pReader" identifier -> field_identifier) != (cast_expression "(sqlite3_blob *)0x0" ( (type_descriptor "sqlite3_blob *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pFVar19->pReader = (sqlite3_blob *)0x0;\n    (*pcVar29)();\n  }" { (expression_statement "pFVar19->pReader = (sqlite3_blob *)0x0;" (assignment_expression "pFVar19->pReader = (sqlite3_blob *)0x0" (field_expression "pFVar19->pReader" identifier -> field_identifier) = (cast_expression "(sqlite3_blob *)0x0" ( (type_descriptor "sqlite3_blob *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*pcVar29)();" (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "pFVar19->rc = 0;" (assignment_expression "pFVar19->rc = 0" (field_expression "pFVar19->rc" identifier -> field_identifier) = number_literal) ;) (labeled_statement "LAB_00119204:\n  (**(code **)(pcVar28 + 0x42778))(p_00->pConfig->db);" statement_identifier : (expression_statement "(**(code **)(pcVar28 + 0x42778))(p_00->pConfig->db);" (call_expression "(**(code **)(pcVar28 + 0x42778))(p_00->pConfig->db)" (parenthesized_expression "(**(code **)(pcVar28 + 0x42778))" ( (pointer_expression "**(code **)(pcVar28 + 0x42778)" * (pointer_expression "*(code **)(pcVar28 + 0x42778)" * (cast_expression "(code **)(pcVar28 + 0x42778)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar28 + 0x42778)" ( (binary_expression "pcVar28 + 0x42778" identifier + number_literal) ))))) )) (argument_list "(p_00->pConfig->db)" ( (field_expression "p_00->pConfig->db" (field_expression "p_00->pConfig" identifier -> field_identifier) -> field_identifier) ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "int FUN_001187e0(int *param_1)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  code *pcVar6;\n  code *pcVar7;\n  code *pcVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar15;\n  int *piVar16;\n  uint uVar17;\n  code *pcVar18;\n  int iVar19;\n  int iVar20;\n  int iVar21;\n  undefined4 uVar22;\n  int iVar23;\n  int iVar24;\n  undefined *puVar25;\n  int local_fc;\n  uint local_f4;\n  int *local_b8;\n  uint local_b4;\n  undefined4 local_b0;\n  int local_ac;\n  int local_a8;\n  undefined1 auStack_a4 [4];\n  int local_a0;\n  undefined1 auStack_9c [4];\n  int local_98;\n  uint local_94;\n  int *local_90 [3];\n  undefined1 *local_84;\n  int local_80;\n  int local_74;\n  char local_57;\n  int local_2c;\n  \n  puVar25 = PTR___stack_chk_guard_0015ba2c;\n  piVar16 = param_1 + 0x14;\n  local_b4 = 0;\n  iVar13 = param_1[3];\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  local_b8 = (int *)FUN_001137dc();\n  if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }\n    iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    if (iVar14 == 0) {\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }\n    else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    iVar13 = param_1[9];\n  }\n  piVar4 = local_b8;\n  iVar14 = *param_1;\n  if ((iVar13 == 0) && (piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16)) {\n    iVar20 = local_b8[3];\n    iVar19 = local_b8[2];\n    iVar14 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19;\n    local_b8[2] = iVar13;\n    uVar22 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14);\n    FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14);\n    piVar16 = param_1;\n    FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22);\n    iVar14 = *param_1;\n    iVar13 = param_1[9];\n  }\n  iVar20 = 0;\n  iVar14 = *(int *)(iVar14 + 0x4c);\n  pcVar18 = (code *)(PTR_DAT_0015b71c + 0xc48);\n  local_90[0] = local_b8;\n  while (piVar4 = local_90[0], iVar13 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }\n  }\nLAB_00118924:\n  local_b8 = piVar4;\n  if ((local_b8 != (int *)0x0) && (iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1)) {\n    piVar16 = local_b8;\n    (*(code *)(PTR_LAB_0015b6c0 + 0x124))();\n  }\n  if (local_2c == *(int *)puVar25) {\n    return *(int *)puVar25;\n  }\n  puVar25 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  (**(code **)(puVar25 + 0x42590))(*(undefined4 *)*piVar16);\n  if (piVar16[2] != 0) {\n    iVar13 = FUN_00101508(piVar16);\n    piVar16[2] = 0;\n    if (iVar13 != 0) goto LAB_00119204;\n  }\n  iVar14 = piVar16[1];\n  if (*(int *)(iVar14 + 0x10) != 0) {\n    *(undefined4 *)(iVar14 + 0x10) = 0;\n    FUN_001187e0(iVar14);\n  }\n  pcVar18 = *(code **)(puVar25 + 0x42708);\n  if (*(int *)(iVar14 + 0x28) != 0) {\n    *(undefined4 *)(iVar14 + 0x28) = 0;\n    (*pcVar18)();\n  }\n  iVar13 = *(int *)(iVar14 + 0x24);\n  *(undefined4 *)(iVar14 + 0x24) = 0;\nLAB_00119204:\n  (**(code **)(puVar25 + 0x42778))(*(undefined4 *)*piVar16);\n  return iVar13;\n}\n\n" (function_definition "int FUN_001187e0(int *param_1)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  code *pcVar6;\n  code *pcVar7;\n  code *pcVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar15;\n  int *piVar16;\n  uint uVar17;\n  code *pcVar18;\n  int iVar19;\n  int iVar20;\n  int iVar21;\n  undefined4 uVar22;\n  int iVar23;\n  int iVar24;\n  undefined *puVar25;\n  int local_fc;\n  uint local_f4;\n  int *local_b8;\n  uint local_b4;\n  undefined4 local_b0;\n  int local_ac;\n  int local_a8;\n  undefined1 auStack_a4 [4];\n  int local_a0;\n  undefined1 auStack_9c [4];\n  int local_98;\n  uint local_94;\n  int *local_90 [3];\n  undefined1 *local_84;\n  int local_80;\n  int local_74;\n  char local_57;\n  int local_2c;\n  \n  puVar25 = PTR___stack_chk_guard_0015ba2c;\n  piVar16 = param_1 + 0x14;\n  local_b4 = 0;\n  iVar13 = param_1[3];\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  local_b8 = (int *)FUN_001137dc();\n  if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }\n    iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    if (iVar14 == 0) {\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }\n    else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    iVar13 = param_1[9];\n  }\n  piVar4 = local_b8;\n  iVar14 = *param_1;\n  if ((iVar13 == 0) && (piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16)) {\n    iVar20 = local_b8[3];\n    iVar19 = local_b8[2];\n    iVar14 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19;\n    local_b8[2] = iVar13;\n    uVar22 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14);\n    FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14);\n    piVar16 = param_1;\n    FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22);\n    iVar14 = *param_1;\n    iVar13 = param_1[9];\n  }\n  iVar20 = 0;\n  iVar14 = *(int *)(iVar14 + 0x4c);\n  pcVar18 = (code *)(PTR_DAT_0015b71c + 0xc48);\n  local_90[0] = local_b8;\n  while (piVar4 = local_90[0], iVar13 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }\n  }\nLAB_00118924:\n  local_b8 = piVar4;\n  if ((local_b8 != (int *)0x0) && (iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1)) {\n    piVar16 = local_b8;\n    (*(code *)(PTR_LAB_0015b6c0 + 0x124))();\n  }\n  if (local_2c == *(int *)puVar25) {\n    return *(int *)puVar25;\n  }\n  puVar25 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  (**(code **)(puVar25 + 0x42590))(*(undefined4 *)*piVar16);\n  if (piVar16[2] != 0) {\n    iVar13 = FUN_00101508(piVar16);\n    piVar16[2] = 0;\n    if (iVar13 != 0) goto LAB_00119204;\n  }\n  iVar14 = piVar16[1];\n  if (*(int *)(iVar14 + 0x10) != 0) {\n    *(undefined4 *)(iVar14 + 0x10) = 0;\n    FUN_001187e0(iVar14);\n  }\n  pcVar18 = *(code **)(puVar25 + 0x42708);\n  if (*(int *)(iVar14 + 0x28) != 0) {\n    *(undefined4 *)(iVar14 + 0x28) = 0;\n    (*pcVar18)();\n  }\n  iVar13 = *(int *)(iVar14 + 0x24);\n  *(undefined4 *)(iVar14 + 0x24) = 0;\nLAB_00119204:\n  (**(code **)(puVar25 + 0x42778))(*(undefined4 *)*piVar16);\n  return iVar13;\n}" primitive_type (function_declarator "FUN_001187e0(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  code *pcVar6;\n  code *pcVar7;\n  code *pcVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar15;\n  int *piVar16;\n  uint uVar17;\n  code *pcVar18;\n  int iVar19;\n  int iVar20;\n  int iVar21;\n  undefined4 uVar22;\n  int iVar23;\n  int iVar24;\n  undefined *puVar25;\n  int local_fc;\n  uint local_f4;\n  int *local_b8;\n  uint local_b4;\n  undefined4 local_b0;\n  int local_ac;\n  int local_a8;\n  undefined1 auStack_a4 [4];\n  int local_a0;\n  undefined1 auStack_9c [4];\n  int local_98;\n  uint local_94;\n  int *local_90 [3];\n  undefined1 *local_84;\n  int local_80;\n  int local_74;\n  char local_57;\n  int local_2c;\n  \n  puVar25 = PTR___stack_chk_guard_0015ba2c;\n  piVar16 = param_1 + 0x14;\n  local_b4 = 0;\n  iVar13 = param_1[3];\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  local_b8 = (int *)FUN_001137dc();\n  if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }\n    iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    if (iVar14 == 0) {\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }\n    else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    iVar13 = param_1[9];\n  }\n  piVar4 = local_b8;\n  iVar14 = *param_1;\n  if ((iVar13 == 0) && (piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16)) {\n    iVar20 = local_b8[3];\n    iVar19 = local_b8[2];\n    iVar14 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19;\n    local_b8[2] = iVar13;\n    uVar22 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14);\n    FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14);\n    piVar16 = param_1;\n    FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22);\n    iVar14 = *param_1;\n    iVar13 = param_1[9];\n  }\n  iVar20 = 0;\n  iVar14 = *(int *)(iVar14 + 0x4c);\n  pcVar18 = (code *)(PTR_DAT_0015b71c + 0xc48);\n  local_90[0] = local_b8;\n  while (piVar4 = local_90[0], iVar13 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }\n  }\nLAB_00118924:\n  local_b8 = piVar4;\n  if ((local_b8 != (int *)0x0) && (iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1)) {\n    piVar16 = local_b8;\n    (*(code *)(PTR_LAB_0015b6c0 + 0x124))();\n  }\n  if (local_2c == *(int *)puVar25) {\n    return *(int *)puVar25;\n  }\n  puVar25 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  (**(code **)(puVar25 + 0x42590))(*(undefined4 *)*piVar16);\n  if (piVar16[2] != 0) {\n    iVar13 = FUN_00101508(piVar16);\n    piVar16[2] = 0;\n    if (iVar13 != 0) goto LAB_00119204;\n  }\n  iVar14 = piVar16[1];\n  if (*(int *)(iVar14 + 0x10) != 0) {\n    *(undefined4 *)(iVar14 + 0x10) = 0;\n    FUN_001187e0(iVar14);\n  }\n  pcVar18 = *(code **)(puVar25 + 0x42708);\n  if (*(int *)(iVar14 + 0x28) != 0) {\n    *(undefined4 *)(iVar14 + 0x28) = 0;\n    (*pcVar18)();\n  }\n  iVar13 = *(int *)(iVar14 + 0x24);\n  *(undefined4 *)(iVar14 + 0x24) = 0;\nLAB_00119204:\n  (**(code **)(puVar25 + 0x42778))(*(undefined4 *)*piVar16);\n  return iVar13;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "code *pcVar8;" type_identifier (pointer_declarator "*pcVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int extraout_v1;" primitive_type identifier ;) (declaration "int extraout_v1_00;" primitive_type identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "code *pcVar18;" type_identifier (pointer_declarator "*pcVar18" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "undefined4 uVar22;" type_identifier identifier ;) (declaration "int iVar23;" primitive_type identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "undefined *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "int local_fc;" primitive_type identifier ;) (declaration "uint local_f4;" type_identifier identifier ;) (declaration "int *local_b8;" primitive_type (pointer_declarator "*local_b8" * identifier) ;) (declaration "uint local_b4;" type_identifier identifier ;) (declaration "undefined4 local_b0;" type_identifier identifier ;) (declaration "int local_ac;" primitive_type identifier ;) (declaration "int local_a8;" primitive_type identifier ;) (declaration "undefined1 auStack_a4 [4];" type_identifier (array_declarator "auStack_a4 [4]" identifier [ number_literal ]) ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "undefined1 auStack_9c [4];" type_identifier (array_declarator "auStack_9c [4]" identifier [ number_literal ]) ;) (declaration "int local_98;" primitive_type identifier ;) (declaration "uint local_94;" type_identifier identifier ;) (declaration "int *local_90 [3];" primitive_type (pointer_declarator "*local_90 [3]" * (array_declarator "local_90 [3]" identifier [ number_literal ])) ;) (declaration "undefined1 *local_84;" type_identifier (pointer_declarator "*local_84" * identifier) ;) (declaration "int local_80;" primitive_type identifier ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "char local_57;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar25 = PTR___stack_chk_guard_0015ba2c;" (assignment_expression "puVar25 = PTR___stack_chk_guard_0015ba2c" identifier = identifier) ;) (expression_statement "piVar16 = param_1 + 0x14;" (assignment_expression "piVar16 = param_1 + 0x14" identifier = (binary_expression "param_1 + 0x14" identifier + number_literal)) ;) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "iVar13 = param_1[3];" (assignment_expression "iVar13 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0015ba2c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0015ba2c" * (cast_expression "(int *)PTR___stack_chk_guard_0015ba2c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_b8 = (int *)FUN_001137dc();" (assignment_expression "local_b8 = (int *)FUN_001137dc()" identifier = (cast_expression "(int *)FUN_001137dc()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001137dc()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }\n    iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    if (iVar14 == 0) {\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }\n    else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    iVar13 = param_1[9];\n  }" if (parenthesized_expression "(param_1[9] == 0)" ( (binary_expression "param_1[9] == 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }\n    iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    if (iVar14 == 0) {\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }\n    else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }\n  }" { (if_statement "if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }" if (parenthesized_expression "(1999 < local_b8[4])" ( (binary_expression "1999 < local_b8[4]" number_literal < (subscript_expression "local_b8[4]" identifier [ number_literal ])) )) (compound_statement "{\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }" { (expression_statement "param_1[9] = 0xd;" (assignment_expression "param_1[9] = 0xd" (subscript_expression "param_1[9]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_00118864;" goto statement_identifier ;) })) (expression_statement "iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8);" (assignment_expression "iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x444))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x444)" * (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x444)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x444)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x444" identifier + number_literal) )))) )) (argument_list "(local_b8)" ( identifier )))) ;) (expression_statement "(*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();" (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x1a0))()" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x1a0))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x1a0)" * (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x1a0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x1a0)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x1a0" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;) (if_statement "if (iVar14 == 0) {\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }\n    else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }" { (labeled_statement "LAB_00118c00:\n      iVar13 = param_1[9];" statement_identifier : (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;)) }) (else_clause "else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }" else (compound_statement "{\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }" { (expression_statement "iVar19 = *(int *)(*param_1 + 0x44);" (assignment_expression "iVar19 = *(int *)(*param_1 + 0x44)" identifier = (pointer_expression "*(int *)(*param_1 + 0x44)" * (cast_expression "(int *)(*param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x44)" ( (binary_expression "*param_1 + 0x44" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "iVar20 = *(int *)(*param_1 + 0x30);" (assignment_expression "iVar20 = *(int *)(*param_1 + 0x30)" identifier = (pointer_expression "*(int *)(*param_1 + 0x30)" * (cast_expression "(int *)(*param_1 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x30)" ( (binary_expression "*param_1 + 0x30" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "(*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);" (call_expression "(*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14)" (parenthesized_expression "(*(code *)(PTR_DAT_0015b880 + 0x7a50))" ( (pointer_expression "*(code *)(PTR_DAT_0015b880 + 0x7a50)" * (cast_expression "(code *)(PTR_DAT_0015b880 + 0x7a50)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b880 + 0x7a50)" ( (binary_expression "PTR_DAT_0015b880 + 0x7a50" identifier + number_literal) )))) )) (argument_list "(param_1,local_90,iVar14)" ( identifier , identifier , identifier ))) ;) (if_statement "if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }" if (parenthesized_expression "(param_1[9] == 0)" ( (binary_expression "param_1[9] == 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }" { (expression_statement "iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);" (assignment_expression "iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b700 + 0x2fcc))" ( (pointer_expression "*(code *)(PTR_LAB_0015b700 + 0x2fcc)" * (cast_expression "(code *)(PTR_LAB_0015b700 + 0x2fcc)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b700 + 0x2fcc)" ( (binary_expression "PTR_LAB_0015b700 + 0x2fcc" identifier + number_literal) )))) )) (argument_list "(iVar13,0,0,iVar13 + 0x10)" ( identifier , number_literal , number_literal , (binary_expression "iVar13 + 0x10" identifier + number_literal) )))) ;) (expression_statement "param_1[9] = iVar5;" (assignment_expression "param_1[9] = iVar5" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2 = PTR_LAB_0015b65c;" (assignment_expression "puVar2 = PTR_LAB_0015b65c" identifier = identifier) ;) (if_statement "if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }" if (parenthesized_expression "((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0))" ( (binary_expression "(iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)" (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) && (parenthesized_expression "(*(int *)(iVar13 + 0x10) != 0)" ( (binary_expression "*(int *)(iVar13 + 0x10) != 0" (pointer_expression "*(int *)(iVar13 + 0x10)" * (cast_expression "(int *)(iVar13 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x10)" ( (binary_expression "iVar13 + 0x10" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }" { (expression_statement "pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);" (assignment_expression "pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c)" identifier = (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x3d7c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x3d7c)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x3d7c" identifier + number_literal) )))) ;) (expression_statement "pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384)" identifier = (cast_expression "(code *)(PTR_LAB_0015b6d0 + 0x2384)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6d0 + 0x2384)" ( (binary_expression "PTR_LAB_0015b6d0 + 0x2384" identifier + number_literal) )))) ;) (expression_statement "pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);" (assignment_expression "pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0)" identifier = (cast_expression "(code *)(PTR_LAB_0015b6d0 + 0x19d0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6d0 + 0x19d0)" ( (binary_expression "PTR_LAB_0015b6d0 + 0x19d0" identifier + number_literal) )))) ;) (expression_statement "pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);" (assignment_expression "pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0)" identifier = (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x27e0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x27e0)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x27e0" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }" { (expression_statement "(*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);" (call_expression "(*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8)" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "(iVar13,&local_b0,&local_ac,&local_a8)" ( identifier , (pointer_expression "&local_b0" & identifier) , (pointer_expression "&local_ac" & identifier) , (pointer_expression "&local_a8" & identifier) ))) ;) (expression_statement "uVar22 = local_b0;" (assignment_expression "uVar22 = local_b0" identifier = identifier) ;) (expression_statement "uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);" (assignment_expression "uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0)" identifier = (call_expression "(*(code *)PTR_strlen_0015b9c4)(local_b0)" (parenthesized_expression "(*(code *)PTR_strlen_0015b9c4)" ( (pointer_expression "*(code *)PTR_strlen_0015b9c4" * (cast_expression "(code *)PTR_strlen_0015b9c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_b0)" ( identifier )))) ;) (expression_statement "(*pcVar6)(param_1,local_90,uVar9,uVar22);" (call_expression "(*pcVar6)(param_1,local_90,uVar9,uVar22)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(param_1,local_90,uVar9,uVar22)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if (param_1[9] != 0) break;" if (parenthesized_expression "(param_1[9] != 0)" ( (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }" if (parenthesized_expression "(local_80 + local_74 + local_a8 < iVar19)" ( (binary_expression "local_80 + local_74 + local_a8 < iVar19" (binary_expression "local_80 + local_74 + local_a8" (binary_expression "local_80 + local_74" identifier + identifier) + identifier) < identifier) )) (compound_statement "{\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }" { (expression_statement "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);" (call_expression "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac)" (parenthesized_expression "(*(code *)PTR_memcpy_0015ba30)" ( (pointer_expression "*(code *)PTR_memcpy_0015ba30" * (cast_expression "(code *)PTR_memcpy_0015ba30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_84 + local_80,local_ac)" ( (binary_expression "local_84 + local_80" identifier + identifier) , identifier ))) ;) (expression_statement "local_80 = local_80 + local_a8;" (assignment_expression "local_80 = local_80 + local_a8" identifier = (binary_expression "local_80 + local_a8" identifier + identifier)) ;) (if_statement "if (param_1[9] != 0) break;" if (parenthesized_expression "(param_1[9] != 0)" ( (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) )) (break_statement "break;" break ;)) }) (else_clause "else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }" else (compound_statement "{\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }" { (expression_statement "local_fc = 0;" (assignment_expression "local_fc = 0" identifier = number_literal) ;) (expression_statement "local_f4 = 0;" (assignment_expression "local_f4 = 0" identifier = number_literal) ;) (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" identifier = number_literal) ;) (expression_statement "bVar1 = 0 < local_a8;" (assignment_expression "bVar1 = 0 < local_a8" identifier = (binary_expression "0 < local_a8" number_literal < identifier)) ;) (while_statement "while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }" while (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }" { (expression_statement "iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);" (assignment_expression "iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98)" identifier = (call_expression "(*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98)" (parenthesized_expression "(*(code *)(puVar2 + -0x2a88))" ( (pointer_expression "*(code *)(puVar2 + -0x2a88)" * (cast_expression "(code *)(puVar2 + -0x2a88)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x2a88)" ( (binary_expression "puVar2 + -0x2a88" identifier + number_literal) )))) )) (argument_list "(local_ac + iVar5,&local_98)" ( (binary_expression "local_ac + iVar5" identifier + identifier) , (pointer_expression "&local_98" & identifier) )))) ;) (expression_statement "iVar10 = iVar5 + iVar10;" (assignment_expression "iVar10 = iVar5 + iVar10" identifier = (binary_expression "iVar5 + iVar10" identifier + identifier)) ;) (expression_statement "uVar17 = local_f4 + local_94;" (assignment_expression "uVar17 = local_f4 + local_94" identifier = (binary_expression "local_f4 + local_94" identifier + identifier)) ;) (expression_statement "local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;" (assignment_expression "local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98" identifier = (binary_expression "(uint)(uVar17 < local_f4) + local_fc + local_98" (binary_expression "(uint)(uVar17 < local_f4) + local_fc" (call_expression "(uint)(uVar17 < local_f4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar17 < local_f4)" ( (binary_expression "uVar17 < local_f4" identifier < identifier) ))) + identifier) + identifier)) ;) (if_statement "if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }" if (parenthesized_expression "(local_57 == '\0')" ( (binary_expression "local_57 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }" { (if_statement "if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }" if (parenthesized_expression "((local_98 == 0) && (local_94 < 0x80))" ( (binary_expression "(local_98 == 0) && (local_94 < 0x80)" (parenthesized_expression "(local_98 == 0)" ( (binary_expression "local_98 == 0" identifier == number_literal) )) && (parenthesized_expression "(local_94 < 0x80)" ( (binary_expression "local_94 < 0x80" identifier < number_literal) ))) )) (compound_statement "{\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }" { (expression_statement "local_84[local_80] = (char)local_94;" (assignment_expression "local_84[local_80] = (char)local_94" (subscript_expression "local_84[local_80]" identifier [ identifier ]) = (cast_expression "(char)local_94" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) }) (else_clause "else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }" else (compound_statement "{\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }" { (expression_statement "iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();" (assignment_expression "iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))()" identifier = (call_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x54))()" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x54))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6d8 + 0x54)" * (cast_expression "(code *)(PTR_LAB_0015b6d8 + 0x54)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6d8 + 0x54)" ( (binary_expression "PTR_LAB_0015b6d8 + 0x54" identifier + number_literal) )))) )) (argument_list "()" ( )))) ;) }))) (expression_statement "local_80 = local_80 + iVar5;" (assignment_expression "local_80 = local_80 + iVar5" identifier = (binary_expression "local_80 + iVar5" identifier + identifier)) ;) (if_statement "if (iVar20 == 1) goto LAB_00118e60;" if (parenthesized_expression "(iVar20 == 1)" ( (binary_expression "iVar20 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00118e60;" goto statement_identifier ;)) (labeled_statement "LAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);" statement_identifier : (expression_statement "iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);" (assignment_expression "iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x28c4))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x28c4)" * (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x28c4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x28c4)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x28c4" identifier + number_literal) )))) )) (argument_list "(local_ac + iVar10,&local_a0,auStack_a4)" ( (binary_expression "local_ac + iVar10" identifier + identifier) , (pointer_expression "&local_a0" & identifier) , identifier )))) ;)) (expression_statement "iVar3 = local_ac;" (assignment_expression "iVar3 = local_ac" identifier = identifier) ;) (expression_statement "iVar5 = iVar5 + local_a0;" (assignment_expression "iVar5 = iVar5 + local_a0" identifier = (binary_expression "iVar5 + local_a0" identifier + identifier)) ;) (if_statement "if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }" if (parenthesized_expression "(iVar19 < local_80 + local_74 + iVar5)" ( (binary_expression "iVar19 < local_80 + local_74 + iVar5" identifier < (binary_expression "local_80 + local_74 + iVar5" (binary_expression "local_80 + local_74" identifier + identifier) + identifier)) )) (compound_statement "{\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }" { (expression_statement "iVar23 = 0;" (assignment_expression "iVar23 = 0" identifier = number_literal) ;) (do_statement "do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);" do (compound_statement "{\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    }" { (expression_statement "iVar15 = param_1[9];" (assignment_expression "iVar15 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (if_statement "if (iVar15 != 0) goto LAB_00118f9c;" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00118f9c;" goto statement_identifier ;)) (expression_statement "iVar24 = iVar5 - iVar23;" (assignment_expression "iVar24 = iVar5 - iVar23" identifier = (binary_expression "iVar5 - iVar23" identifier - identifier)) ;) (expression_statement "iVar15 = iVar3 + iVar23 + iVar10;" (assignment_expression "iVar15 = iVar3 + iVar23 + iVar10" identifier = (binary_expression "iVar3 + iVar23 + iVar10" (binary_expression "iVar3 + iVar23" identifier + identifier) + identifier)) ;) (expression_statement "iVar21 = (iVar19 - local_80) - local_74;" (assignment_expression "iVar21 = (iVar19 - local_80) - local_74" identifier = (binary_expression "(iVar19 - local_80) - local_74" (parenthesized_expression "(iVar19 - local_80)" ( (binary_expression "iVar19 - local_80" identifier - identifier) )) - identifier)) ;) (if_statement "if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }" if (parenthesized_expression "(iVar21 < iVar24)" ( (binary_expression "iVar21 < iVar24" identifier < identifier) )) (compound_statement "{\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }" { (expression_statement "iVar11 = (*pcVar8)(iVar15,auStack_9c);" (assignment_expression "iVar11 = (*pcVar8)(iVar15,auStack_9c)" identifier = (call_expression "(*pcVar8)(iVar15,auStack_9c)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(iVar15,auStack_9c)" ( identifier , identifier )))) ;) (expression_statement "iVar24 = iVar11;" (assignment_expression "iVar24 = iVar11" identifier = identifier) ;) (if_statement "if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }" if (parenthesized_expression "(iVar11 < iVar21)" ( (binary_expression "iVar11 < iVar21" identifier < identifier) )) (compound_statement "{\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }" { (do_statement "do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);" do (compound_statement "{\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          }" { (expression_statement "iVar11 = iVar24;" (assignment_expression "iVar11 = iVar24" identifier = identifier) ;) (expression_statement "iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);" (assignment_expression "iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c)" identifier = (call_expression "(*pcVar8)(iVar15 + iVar11,auStack_9c)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(iVar15 + iVar11,auStack_9c)" ( (binary_expression "iVar15 + iVar11" identifier + identifier) , identifier )))) ;) (expression_statement "iVar24 = iVar11 + iVar12;" (assignment_expression "iVar24 = iVar11 + iVar12" identifier = (binary_expression "iVar11 + iVar12" identifier + identifier)) ;) }) while (parenthesized_expression "(iVar11 + iVar12 <= iVar21)" ( (binary_expression "iVar11 + iVar12 <= iVar21" (binary_expression "iVar11 + iVar12" identifier + identifier) <= identifier) )) ;) })) (expression_statement "iVar23 = iVar23 + iVar11;" (assignment_expression "iVar23 = iVar23 + iVar11" identifier = (binary_expression "iVar23 + iVar11" identifier + identifier)) ;) (expression_statement "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);" (call_expression "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11)" (parenthesized_expression "(*(code *)PTR_memcpy_0015ba30)" ( (pointer_expression "*(code *)PTR_memcpy_0015ba30" * (cast_expression "(code *)PTR_memcpy_0015ba30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_84 + local_80,iVar15,iVar11)" ( (binary_expression "local_84 + local_80" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "local_80 = iVar11 + local_80;" (assignment_expression "local_80 = iVar11 + local_80" identifier = (binary_expression "iVar11 + local_80" identifier + identifier)) ;) (if_statement "if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;" if (parenthesized_expression "(iVar19 <= local_80 + local_74)" ( (binary_expression "iVar19 <= local_80 + local_74" identifier <= (binary_expression "local_80 + local_74" identifier + identifier)) )) (goto_statement "goto LAB_00118ff8;" goto statement_identifier ;)) }) (else_clause "else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }" else (compound_statement "{\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }" { (expression_statement "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);" (call_expression "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24)" (parenthesized_expression "(*(code *)PTR_memcpy_0015ba30)" ( (pointer_expression "*(code *)PTR_memcpy_0015ba30" * (cast_expression "(code *)PTR_memcpy_0015ba30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_84 + local_80,iVar15,iVar24)" ( (binary_expression "local_84 + local_80" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "local_80 = iVar24 + local_80;" (assignment_expression "local_80 = iVar24 + local_80" identifier = (binary_expression "iVar24 + local_80" identifier + identifier)) ;) (expression_statement "iVar23 = iVar5;" (assignment_expression "iVar23 = iVar5" identifier = identifier) ;) (if_statement "if (local_80 + local_74 < iVar19) break;" if (parenthesized_expression "(local_80 + local_74 < iVar19)" ( (binary_expression "local_80 + local_74 < iVar19" (binary_expression "local_80 + local_74" identifier + identifier) < identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);" statement_identifier : (expression_statement "(*pcVar7)(param_1,local_90);" (call_expression "(*pcVar7)(param_1,local_90)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(param_1,local_90)" ( identifier , identifier ))) ;)) }))) }) while (parenthesized_expression "(iVar23 < iVar5)" ( (binary_expression "iVar23 < iVar5" identifier < identifier) )) ;) (expression_statement "iVar15 = param_1[9];" (assignment_expression "iVar15 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = iVar10 + iVar5;" (assignment_expression "iVar5 = iVar10 + iVar5" identifier = (binary_expression "iVar10 + iVar5" identifier + identifier)) ;) }) (else_clause "else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }" else (compound_statement "{\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }" { (expression_statement "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);" (call_expression "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5)" (parenthesized_expression "(*(code *)PTR_memcpy_0015ba30)" ( (pointer_expression "*(code *)PTR_memcpy_0015ba30" * (cast_expression "(code *)PTR_memcpy_0015ba30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_84 + local_80,local_ac + iVar10,iVar5)" ( (binary_expression "local_84 + local_80" identifier + identifier) , (binary_expression "local_ac + iVar10" identifier + identifier) , identifier ))) ;) (expression_statement "iVar15 = param_1[9];" (assignment_expression "iVar15 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "local_80 = local_80 + iVar5;" (assignment_expression "local_80 = local_80 + iVar5" identifier = (binary_expression "local_80 + iVar5" identifier + identifier)) ;) (labeled_statement "LAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;" statement_identifier : (expression_statement "iVar5 = iVar10 + iVar5;" (assignment_expression "iVar5 = iVar10 + iVar5" identifier = (binary_expression "iVar10 + iVar5" identifier + identifier)) ;)) }))) }) (else_clause "else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }" else (compound_statement "{\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }" { (expression_statement "local_84[1] = (char)local_80;" (assignment_expression "local_84[1] = (char)local_80" (subscript_expression "local_84[1]" identifier [ number_literal ]) = (cast_expression "(char)local_80" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*local_84 = (char)((uint)local_80 >> 8);" (assignment_expression "*local_84 = (char)((uint)local_80 >> 8)" (pointer_expression "*local_84" * identifier) = (cast_expression "(char)((uint)local_80 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)local_80 >> 8)" ( (binary_expression "(uint)local_80 >> 8" (cast_expression "(uint)local_80" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }" if (parenthesized_expression "((local_fc == 0) && (uVar17 < 0x80))" ( (binary_expression "(local_fc == 0) && (uVar17 < 0x80)" (parenthesized_expression "(local_fc == 0)" ( (binary_expression "local_fc == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar17 < 0x80)" ( (binary_expression "uVar17 < 0x80" identifier < number_literal) ))) )) (compound_statement "{\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }" { (expression_statement "local_84[local_80] = (char)uVar17;" (assignment_expression "local_84[local_80] = (char)uVar17" (subscript_expression "local_84[local_80]" identifier [ identifier ]) = (cast_expression "(char)uVar17" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) }) (else_clause "else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }" else (compound_statement "{\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }" { (expression_statement "iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);" (assignment_expression "iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x54))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6d8 + 0x54)" * (cast_expression "(code *)(PTR_LAB_0015b6d8 + 0x54)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6d8 + 0x54)" ( (binary_expression "PTR_LAB_0015b6d8 + 0x54" identifier + number_literal) )))) )) (argument_list "(local_84 + local_80,local_fc,local_fc,uVar17)" ( (binary_expression "local_84 + local_80" identifier + identifier) , identifier , identifier , identifier )))) ;) }))) (expression_statement "local_80 = local_80 + iVar5;" (assignment_expression "local_80 = local_80 + iVar5" identifier = (binary_expression "local_80 + iVar5" identifier + identifier)) ;) (expression_statement "local_57 = '\0';" (assignment_expression "local_57 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "FUN_00101668(param_1,local_90,local_fc,uVar17);" (call_expression "FUN_00101668(param_1,local_90,local_fc,uVar17)" identifier (argument_list "(param_1,local_90,local_fc,uVar17)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if (param_1[9] != 0) goto LAB_00118b04;" if (parenthesized_expression "(param_1[9] != 0)" ( (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_00118b04;" goto statement_identifier ;)) (if_statement "if (iVar20 != 1) goto LAB_00118f30;" if (parenthesized_expression "(iVar20 != 1)" ( (binary_expression "iVar20 != 1" identifier != number_literal) )) (goto_statement "goto LAB_00118f30;" goto statement_identifier ;)) (labeled_statement "LAB_00118e60:\n                  iVar5 = iVar10;" statement_identifier : (expression_statement "iVar5 = iVar10;" (assignment_expression "iVar5 = iVar10" identifier = identifier) ;)) (expression_statement "iVar15 = local_80;" (assignment_expression "iVar15 = local_80" identifier = identifier) ;) (if_statement "if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }" if (parenthesized_expression "((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0'))" ( (binary_expression "(iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')" (parenthesized_expression "(iVar10 < local_a8)" ( (binary_expression "iVar10 < local_a8" identifier < identifier) )) && (parenthesized_expression "(*(char *)(local_ac + iVar10) == '\0')" ( (binary_expression "*(char *)(local_ac + iVar10) == '\0'" (pointer_expression "*(char *)(local_ac + iVar10)" * (cast_expression "(char *)(local_ac + iVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_ac + iVar10)" ( (binary_expression "local_ac + iVar10" identifier + identifier) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }" { (expression_statement "iVar15 = local_80 + 1;" (assignment_expression "iVar15 = local_80 + 1" identifier = (binary_expression "local_80 + 1" identifier + number_literal)) ;) (expression_statement "iVar5 = iVar10 + 1;" (assignment_expression "iVar5 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "local_84[local_80] = 0;" (assignment_expression "local_84[local_80] = 0" (subscript_expression "local_84[local_80]" identifier [ identifier ]) = number_literal) ;) (if_statement "if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }" if (parenthesized_expression "((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0'))" ( (binary_expression "(iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')" (parenthesized_expression "(iVar5 < local_a8)" ( (binary_expression "iVar5 < local_a8" identifier < identifier) )) && (parenthesized_expression "(*(char *)(local_ac + iVar5) == '\0')" ( (binary_expression "*(char *)(local_ac + iVar5) == '\0'" (pointer_expression "*(char *)(local_ac + iVar5)" * (cast_expression "(char *)(local_ac + iVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_ac + iVar5)" ( (binary_expression "local_ac + iVar5" identifier + identifier) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }" { (expression_statement "iVar5 = iVar10 + 2;" (assignment_expression "iVar5 = iVar10 + 2" identifier = (binary_expression "iVar10 + 2" identifier + number_literal)) ;) (expression_statement "local_84[iVar15] = 0;" (assignment_expression "local_84[iVar15] = 0" (subscript_expression "local_84[iVar15]" identifier [ identifier ]) = number_literal) ;) (expression_statement "iVar15 = local_80 + 2;" (assignment_expression "iVar15 = local_80 + 2" identifier = (binary_expression "local_80 + 2" identifier + number_literal)) ;) })) })) (expression_statement "local_80 = iVar15;" (assignment_expression "local_80 = iVar15" identifier = identifier) ;) (if_statement "if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }" if (parenthesized_expression "(iVar19 <= local_80 + local_74)" ( (binary_expression "iVar19 <= local_80 + local_74" identifier <= (binary_expression "local_80 + local_74" identifier + identifier)) )) (compound_statement "{\n                    (*pcVar7)(param_1,local_90);\n                  }" { (expression_statement "(*pcVar7)(param_1,local_90);" (call_expression "(*pcVar7)(param_1,local_90)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(param_1,local_90)" ( identifier , identifier ))) ;) })) (expression_statement "iVar15 = param_1[9];" (assignment_expression "iVar15 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) }))) (if_statement "if (iVar15 != 0) goto LAB_00118b04;" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00118b04;" goto statement_identifier ;)) (expression_statement "bVar1 = iVar5 < local_a8;" (assignment_expression "bVar1 = iVar5 < local_a8" identifier = (binary_expression "iVar5 < local_a8" identifier < identifier)) ;) (expression_statement "local_f4 = uVar17;" (assignment_expression "local_f4 = uVar17" identifier = identifier) ;) })) }))) (expression_statement "iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);" (assignment_expression "iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar13 + 0x10) + 4)" * (cast_expression "(int *)(*(int *)(iVar13 + 0x10) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar13 + 0x10) + 4)" ( (binary_expression "*(int *)(iVar13 + 0x10) + 4" (pointer_expression "*(int *)(iVar13 + 0x10)" * (cast_expression "(int *)(iVar13 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x10)" ( (binary_expression "iVar13 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(int *)(iVar13 + 0x10) = iVar5;" (assignment_expression "*(int *)(iVar13 + 0x10) = iVar5" (pointer_expression "*(int *)(iVar13 + 0x10)" * (cast_expression "(int *)(iVar13 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x10)" ( (binary_expression "iVar13 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((param_1[9] != 0) || (iVar5 == 0)) break;" if (parenthesized_expression "((param_1[9] != 0) || (iVar5 == 0))" ( (binary_expression "(param_1[9] != 0) || (iVar5 == 0)" (parenthesized_expression "(param_1[9] != 0)" ( (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) ))) )) (break_statement "break;" break ;)) })) })) })) (labeled_statement "LAB_00118b04:\n      piVar4 = param_1 + 9;" statement_identifier : (expression_statement "piVar4 = param_1 + 9;" (assignment_expression "piVar4 = param_1 + 9" identifier = (binary_expression "param_1 + 9" identifier + number_literal)) ;)) (expression_statement "(*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);" (call_expression "(*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6d8 + -0x3294))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6d8 + -0x3294)" * (cast_expression "(code *)(PTR_LAB_0015b6d8 + -0x3294)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6d8 + -0x3294)" ( (binary_expression "PTR_LAB_0015b6d8 + -0x3294" identifier + number_literal) )))) )) (argument_list "(iVar13)" ( identifier ))) ;) (expression_statement "piVar16 = param_1;" (assignment_expression "piVar16 = param_1" identifier = identifier) ;) (expression_statement "FUN_00102720(param_1,local_90,&local_b4);" (call_expression "FUN_00102720(param_1,local_90,&local_b4)" identifier (argument_list "(param_1,local_90,&local_b4)" ( identifier , identifier , (pointer_expression "&local_b4" & identifier) ))) ;) (if_statement "if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(local_b8[5] == 0)" ( (binary_expression "local_b8[5] == 0" (subscript_expression "local_b8[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }" { (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (if_statement "if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }" { (expression_statement "piVar16 = piVar4;" (assignment_expression "piVar16 = piVar4" identifier = identifier) ;) (expression_statement "(*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);" (call_expression "(*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8)" (parenthesized_expression "(*(code *)(PTR_DAT_0015b71c + -0x7650))" ( (pointer_expression "*(code *)(PTR_DAT_0015b71c + -0x7650)" * (cast_expression "(code *)(PTR_DAT_0015b71c + -0x7650)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b71c + -0x7650)" ( (binary_expression "PTR_DAT_0015b71c + -0x7650" identifier + number_literal) )))) )) (argument_list "(piVar4,&local_b8)" ( identifier , (pointer_expression "&local_b8" & identifier) ))) ;) (goto_statement "goto LAB_00118b60;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }" else (compound_statement "{\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }" { (labeled_statement "LAB_00118b60:\n        iVar13 = param_1[9];" statement_identifier : (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;)) (if_statement "if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }" { (expression_statement "(*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);" (call_expression "(*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0)" (parenthesized_expression "(*(code *)(PTR_DAT_0015b71c + 0xad0))" ( (pointer_expression "*(code *)(PTR_DAT_0015b71c + 0xad0)" * (cast_expression "(code *)(PTR_DAT_0015b71c + 0xad0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b71c + 0xad0)" ( (binary_expression "PTR_DAT_0015b71c + 0xad0" identifier + number_literal) )))) )) (argument_list "(piVar4,local_b8,0,0)" ( identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "piVar16 = piVar4;" (assignment_expression "piVar16 = piVar4" identifier = identifier) ;) (if_statement "if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }" { (expression_statement "piVar16 = (int *)local_b8[7];" (assignment_expression "piVar16 = (int *)local_b8[7]" identifier = (cast_expression "(int *)local_b8[7]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b8[7]" identifier [ number_literal ]))) ;) (expression_statement "local_b8[7] = (int)piVar16 + 1;" (assignment_expression "local_b8[7] = (int)piVar16 + 1" (subscript_expression "local_b8[7]" identifier [ number_literal ]) = (binary_expression "(int)piVar16 + 1" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);" (assignment_expression "piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc)" identifier = (cast_expression "(int *)(local_b8[8] + (int)piVar16 * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b8[8] + (int)piVar16 * 0xc)" ( (binary_expression "local_b8[8] + (int)piVar16 * 0xc" (subscript_expression "local_b8[8]" identifier [ number_literal ]) + (binary_expression "(int)piVar16 * 0xc" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "*piVar4 = iVar14;" (assignment_expression "*piVar4 = iVar14" (pointer_expression "*piVar4" * identifier) = identifier) ;) (expression_statement "piVar4[1] = 1;" (assignment_expression "piVar4[1] = 1" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[2] = local_b4;" (assignment_expression "piVar4[2] = local_b4" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_b8[4] = local_b8[4] + 1;" (assignment_expression "local_b8[4] = local_b8[4] + 1" (subscript_expression "local_b8[4]" identifier [ number_literal ]) = (binary_expression "local_b8[4] + 1" (subscript_expression "local_b8[4]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (if_statement "if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }" { (expression_statement "piVar16 = param_1;" (assignment_expression "piVar16 = param_1" identifier = identifier) ;) (expression_statement "(*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);" (call_expression "(*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8)" (parenthesized_expression "(*(code *)(PTR_DAT_0015b71c + 0xc48))" ( (pointer_expression "*(code *)(PTR_DAT_0015b71c + 0xc48)" * (cast_expression "(code *)(PTR_DAT_0015b71c + 0xc48)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b71c + 0xc48)" ( (binary_expression "PTR_DAT_0015b71c + 0xc48" identifier + number_literal) )))) )) (argument_list "(param_1,0,local_b8)" ( identifier , number_literal , identifier ))) ;) (goto_statement "goto LAB_00118c00;" goto statement_identifier ;) })) })) })) }))) }))) }) (else_clause "else {\nLAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    iVar13 = param_1[9];\n  }" else (compound_statement "{\nLAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    iVar13 = param_1[9];\n  }" { (labeled_statement "LAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();" statement_identifier : (expression_statement "(*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();" (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x1a0))()" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x1a0))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x1a0)" * (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x1a0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x1a0)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x1a0" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;)) (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) }))) (expression_statement "piVar4 = local_b8;" (assignment_expression "piVar4 = local_b8" identifier = identifier) ;) (expression_statement "iVar14 = *param_1;" (assignment_expression "iVar14 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if ((iVar13 == 0) && (piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16)) {\n    iVar20 = local_b8[3];\n    iVar19 = local_b8[2];\n    iVar14 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19;\n    local_b8[2] = iVar13;\n    uVar22 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14);\n    FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14);\n    piVar16 = param_1;\n    FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22);\n    iVar14 = *param_1;\n    iVar13 = param_1[9];\n  }" if (parenthesized_expression "((iVar13 == 0) && (piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16))" ( (binary_expression "(iVar13 == 0) && (piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16)" (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) && (parenthesized_expression "(piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16)" ( (comma_expression "piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16" (assignment_expression "piVar16 = *(int **)(iVar14 + 0x48)" identifier = (pointer_expression "*(int **)(iVar14 + 0x48)" * (cast_expression "(int **)(iVar14 + 0x48)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + 0x48)" ( (binary_expression "iVar14 + 0x48" identifier + number_literal) ))))) , (binary_expression "0 < (int)piVar16" number_literal < (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (compound_statement "{\n    iVar20 = local_b8[3];\n    iVar19 = local_b8[2];\n    iVar14 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19;\n    local_b8[2] = iVar13;\n    uVar22 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14);\n    FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14);\n    piVar16 = param_1;\n    FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22);\n    iVar14 = *param_1;\n    iVar13 = param_1[9];\n  }" { (expression_statement "iVar20 = local_b8[3];" (assignment_expression "iVar20 = local_b8[3]" identifier = (subscript_expression "local_b8[3]" identifier [ number_literal ])) ;) (expression_statement "iVar19 = local_b8[2];" (assignment_expression "iVar19 = local_b8[2]" identifier = (subscript_expression "local_b8[2]" identifier [ number_literal ])) ;) (expression_statement "iVar14 = param_1[2];" (assignment_expression "iVar14 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar17 = local_b4 + iVar20;" (assignment_expression "uVar17 = local_b4 + iVar20" identifier = (binary_expression "local_b4 + iVar20" identifier + identifier)) ;) (expression_statement "local_b8[3] = uVar17;" (assignment_expression "local_b8[3] = uVar17" (subscript_expression "local_b8[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19;" (assignment_expression "iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19" identifier = (binary_expression "(uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19" (binary_expression "(uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f)" (call_expression "(uint)(uVar17 < local_b4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar17 < local_b4)" ( (binary_expression "uVar17 < local_b4" identifier < identifier) ))) + (parenthesized_expression "((int)local_b4 >> 0x1f)" ( (binary_expression "(int)local_b4 >> 0x1f" (cast_expression "(int)local_b4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + identifier)) ;) (expression_statement "local_b8[2] = iVar13;" (assignment_expression "local_b8[2] = iVar13" (subscript_expression "local_b8[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar22 = *(undefined4 *)(*param_1 + 0x48);" (assignment_expression "uVar22 = *(undefined4 *)(*param_1 + 0x48)" identifier = (pointer_expression "*(undefined4 *)(*param_1 + 0x48)" * (cast_expression "(undefined4 *)(*param_1 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x48)" ( (binary_expression "*param_1 + 0x48" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14);" (call_expression "FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14)" identifier (argument_list "(iVar13,uVar17,iVar14 >> 0x1f,iVar14)" ( identifier , identifier , (binary_expression "iVar14 >> 0x1f" identifier >> number_literal) , identifier ))) ;) (expression_statement "FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14);" (call_expression "FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14)" identifier (argument_list "(iVar19,iVar20,iVar14 >> 0x1f,iVar14)" ( identifier , identifier , (binary_expression "iVar14 >> 0x1f" identifier >> number_literal) , identifier ))) ;) (expression_statement "piVar16 = param_1;" (assignment_expression "piVar16 = param_1" identifier = identifier) ;) (expression_statement "FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22);" (call_expression "FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22)" identifier (argument_list "(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22)" ( identifier , (pointer_expression "&local_b8" & identifier) , (binary_expression "(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5]" (binary_expression "(extraout_v1 - extraout_v1_00) * param_1[2]" (parenthesized_expression "(extraout_v1 - extraout_v1_00)" ( (binary_expression "extraout_v1 - extraout_v1_00" identifier - identifier) )) * (subscript_expression "param_1[2]" identifier [ number_literal ])) * (subscript_expression "piVar4[5]" identifier [ number_literal ])) , identifier ))) ;) (expression_statement "iVar14 = *param_1;" (assignment_expression "iVar14 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) })) (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (expression_statement "iVar14 = *(int *)(iVar14 + 0x4c);" (assignment_expression "iVar14 = *(int *)(iVar14 + 0x4c)" identifier = (pointer_expression "*(int *)(iVar14 + 0x4c)" * (cast_expression "(int *)(iVar14 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x4c)" ( (binary_expression "iVar14 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "pcVar18 = (code *)(PTR_DAT_0015b71c + 0xc48);" (assignment_expression "pcVar18 = (code *)(PTR_DAT_0015b71c + 0xc48)" identifier = (cast_expression "(code *)(PTR_DAT_0015b71c + 0xc48)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0015b71c + 0xc48)" ( (binary_expression "PTR_DAT_0015b71c + 0xc48" identifier + number_literal) )))) ;) (expression_statement "local_90[0] = local_b8;" (assignment_expression "local_90[0] = local_b8" (subscript_expression "local_90[0]" identifier [ number_literal ]) = identifier) ;) (while_statement "while (piVar4 = local_90[0], iVar13 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }\n  }" while (parenthesized_expression "(piVar4 = local_90[0], iVar13 == 0)" ( (comma_expression "piVar4 = local_90[0], iVar13 == 0" (assignment_expression "piVar4 = local_90[0]" identifier = (subscript_expression "local_90[0]" identifier [ number_literal ])) , (binary_expression "iVar13 == 0" identifier == number_literal)) )) (compound_statement "{\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }\n  }" { (while_statement "while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }" { (if_statement "if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }" if (parenthesized_expression "(local_90[0][iVar20 * 3 + 7] < iVar14)" ( (binary_expression "local_90[0][iVar20 * 3 + 7] < iVar14" (subscript_expression "local_90[0][iVar20 * 3 + 7]" (subscript_expression "local_90[0]" identifier [ number_literal ]) [ (binary_expression "iVar20 * 3 + 7" (binary_expression "iVar20 * 3" identifier * number_literal) + number_literal) ]) < identifier) )) (compound_statement "{\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }" { (expression_statement "local_b8 = local_90[0];" (assignment_expression "local_b8 = local_90[0]" identifier = (subscript_expression "local_90[0]" identifier [ number_literal ])) ;) (expression_statement "FUN_00101d04(param_1,local_90[0],local_90[0],0);" (call_expression "FUN_00101d04(param_1,local_90[0],local_90[0],0)" identifier (argument_list "(param_1,local_90[0],local_90[0],0)" ( identifier , (subscript_expression "local_90[0]" identifier [ number_literal ]) , (subscript_expression "local_90[0]" identifier [ number_literal ]) , number_literal ))) ;) (expression_statement "piVar16 = param_1;" (assignment_expression "piVar16 = param_1" identifier = identifier) ;) (expression_statement "piVar4 = local_b8;" (assignment_expression "piVar4 = local_b8" identifier = identifier) ;) (goto_statement "goto LAB_00118924;" goto statement_identifier ;) })) (expression_statement "piVar16 = param_1;" (assignment_expression "piVar16 = param_1" identifier = identifier) ;) (expression_statement "FUN_00117a5c(param_1,local_90,iVar20);" (call_expression "FUN_00117a5c(param_1,local_90,iVar20)" identifier (argument_list "(param_1,local_90,iVar20)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (if_statement "if (iVar13 != 0) break;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "piVar16 = param_1;" (assignment_expression "piVar16 = param_1" identifier = identifier) ;) (expression_statement "(*pcVar18)(param_1,iVar20);" (call_expression "(*pcVar18)(param_1,iVar20)" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "(param_1,iVar20)" ( identifier , identifier ))) ;) (expression_statement "piVar4 = local_90[0];" (assignment_expression "piVar4 = local_90[0]" identifier = (subscript_expression "local_90[0]" identifier [ number_literal ])) ;) (if_statement "if (param_1[9] != 0) goto LAB_00118924;" if (parenthesized_expression "(param_1[9] != 0)" ( (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_00118924;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00118924:\n  local_b8 = piVar4;" statement_identifier : (expression_statement "local_b8 = piVar4;" (assignment_expression "local_b8 = piVar4" identifier = identifier) ;)) (if_statement "if ((local_b8 != (int *)0x0) && (iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1)) {\n    piVar16 = local_b8;\n    (*(code *)(PTR_LAB_0015b6c0 + 0x124))();\n  }" if (parenthesized_expression "((local_b8 != (int *)0x0) && (iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1))" ( (binary_expression "(local_b8 != (int *)0x0) && (iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1)" (parenthesized_expression "(local_b8 != (int *)0x0)" ( (binary_expression "local_b8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1)" ( (comma_expression "iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1" (assignment_expression "iVar13 = *local_b8" identifier = (pointer_expression "*local_b8" * identifier)) , (comma_expression "*local_b8 = iVar13 + -1, iVar13 + -1 < 1" (assignment_expression "*local_b8 = iVar13 + -1" (pointer_expression "*local_b8" * identifier) = (binary_expression "iVar13 + -1" identifier + number_literal)) , (binary_expression "iVar13 + -1 < 1" (binary_expression "iVar13 + -1" identifier + number_literal) < number_literal))) ))) )) (compound_statement "{\n    piVar16 = local_b8;\n    (*(code *)(PTR_LAB_0015b6c0 + 0x124))();\n  }" { (expression_statement "piVar16 = local_b8;" (assignment_expression "piVar16 = local_b8" identifier = identifier) ;) (expression_statement "(*(code *)(PTR_LAB_0015b6c0 + 0x124))();" (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x124))()" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x124))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x124)" * (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x124)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x124)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x124" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;) })) (if_statement "if (local_2c == *(int *)puVar25) {\n    return *(int *)puVar25;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar25)" ( (binary_expression "local_2c == *(int *)puVar25" identifier == (pointer_expression "*(int *)puVar25" * (cast_expression "(int *)puVar25" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return *(int *)puVar25;\n  }" { (return_statement "return *(int *)puVar25;" return (pointer_expression "*(int *)puVar25" * (cast_expression "(int *)puVar25" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "puVar25 = PTR___stack_chk_fail_0015ba10;" (assignment_expression "puVar25 = PTR___stack_chk_fail_0015ba10" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0015ba10)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ba10)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ba10)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0015ba10" * (cast_expression "(code *)PTR___stack_chk_fail_0015ba10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(puVar25 + 0x42590))(*(undefined4 *)*piVar16);" (call_expression "(**(code **)(puVar25 + 0x42590))(*(undefined4 *)*piVar16)" (parenthesized_expression "(**(code **)(puVar25 + 0x42590))" ( (pointer_expression "**(code **)(puVar25 + 0x42590)" * (pointer_expression "*(code **)(puVar25 + 0x42590)" * (cast_expression "(code **)(puVar25 + 0x42590)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x42590)" ( (binary_expression "puVar25 + 0x42590" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)*piVar16)" ( (pointer_expression "*(undefined4 *)*piVar16" * (cast_expression "(undefined4 *)*piVar16" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar16" * identifier))) ))) ;) (if_statement "if (piVar16[2] != 0) {\n    iVar13 = FUN_00101508(piVar16);\n    piVar16[2] = 0;\n    if (iVar13 != 0) goto LAB_00119204;\n  }" if (parenthesized_expression "(piVar16[2] != 0)" ( (binary_expression "piVar16[2] != 0" (subscript_expression "piVar16[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    iVar13 = FUN_00101508(piVar16);\n    piVar16[2] = 0;\n    if (iVar13 != 0) goto LAB_00119204;\n  }" { (expression_statement "iVar13 = FUN_00101508(piVar16);" (assignment_expression "iVar13 = FUN_00101508(piVar16)" identifier = (call_expression "FUN_00101508(piVar16)" identifier (argument_list "(piVar16)" ( identifier )))) ;) (expression_statement "piVar16[2] = 0;" (assignment_expression "piVar16[2] = 0" (subscript_expression "piVar16[2]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (iVar13 != 0) goto LAB_00119204;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00119204;" goto statement_identifier ;)) })) (expression_statement "iVar14 = piVar16[1];" (assignment_expression "iVar14 = piVar16[1]" identifier = (subscript_expression "piVar16[1]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(iVar14 + 0x10) != 0) {\n    *(undefined4 *)(iVar14 + 0x10) = 0;\n    FUN_001187e0(iVar14);\n  }" if (parenthesized_expression "(*(int *)(iVar14 + 0x10) != 0)" ( (binary_expression "*(int *)(iVar14 + 0x10) != 0" (pointer_expression "*(int *)(iVar14 + 0x10)" * (cast_expression "(int *)(iVar14 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x10)" ( (binary_expression "iVar14 + 0x10" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    *(undefined4 *)(iVar14 + 0x10) = 0;\n    FUN_001187e0(iVar14);\n  }" { (expression_statement "*(undefined4 *)(iVar14 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 0x10) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 0x10)" * (cast_expression "(undefined4 *)(iVar14 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x10)" ( (binary_expression "iVar14 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001187e0(iVar14);" (call_expression "FUN_001187e0(iVar14)" identifier (argument_list "(iVar14)" ( identifier ))) ;) })) (expression_statement "pcVar18 = *(code **)(puVar25 + 0x42708);" (assignment_expression "pcVar18 = *(code **)(puVar25 + 0x42708)" identifier = (pointer_expression "*(code **)(puVar25 + 0x42708)" * (cast_expression "(code **)(puVar25 + 0x42708)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x42708)" ( (binary_expression "puVar25 + 0x42708" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(iVar14 + 0x28) != 0) {\n    *(undefined4 *)(iVar14 + 0x28) = 0;\n    (*pcVar18)();\n  }" if (parenthesized_expression "(*(int *)(iVar14 + 0x28) != 0)" ( (binary_expression "*(int *)(iVar14 + 0x28) != 0" (pointer_expression "*(int *)(iVar14 + 0x28)" * (cast_expression "(int *)(iVar14 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x28)" ( (binary_expression "iVar14 + 0x28" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    *(undefined4 *)(iVar14 + 0x28) = 0;\n    (*pcVar18)();\n  }" { (expression_statement "*(undefined4 *)(iVar14 + 0x28) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 0x28) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 0x28)" * (cast_expression "(undefined4 *)(iVar14 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x28)" ( (binary_expression "iVar14 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "iVar13 = *(int *)(iVar14 + 0x24);" (assignment_expression "iVar13 = *(int *)(iVar14 + 0x24)" identifier = (pointer_expression "*(int *)(iVar14 + 0x24)" * (cast_expression "(int *)(iVar14 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x24)" ( (binary_expression "iVar14 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar14 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 0x24) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 0x24)" * (cast_expression "(undefined4 *)(iVar14 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x24)" ( (binary_expression "iVar14 + 0x24" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_00119204:\n  (**(code **)(puVar25 + 0x42778))(*(undefined4 *)*piVar16);" statement_identifier : (expression_statement "(**(code **)(puVar25 + 0x42778))(*(undefined4 *)*piVar16);" (call_expression "(**(code **)(puVar25 + 0x42778))(*(undefined4 *)*piVar16)" (parenthesized_expression "(**(code **)(puVar25 + 0x42778))" ( (pointer_expression "**(code **)(puVar25 + 0x42778)" * (pointer_expression "*(code **)(puVar25 + 0x42778)" * (cast_expression "(code **)(puVar25 + 0x42778)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x42778)" ( (binary_expression "puVar25 + 0x42778" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)*piVar16)" ( (pointer_expression "*(undefined4 *)*piVar16" * (cast_expression "(undefined4 *)*piVar16" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar16" * identifier))) ))) ;)) (return_statement "return iVar13;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (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 (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 ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , LIT , LIT , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (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 (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + IDENT) + IDENT) < IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (break_statement break ;)) }) (else_clause else (compound_statement { (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 = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT < IDENT)) ;) (while_statement while (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( (binary_expression IDENT + IDENT) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( (binary_expression IDENT + IDENT) , (pointer_expression & IDENT) , IDENT )))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (binary_expression IDENT + IDENT) + IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) <= IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + IDENT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + IDENT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + IDENT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT ))) ;)) }))) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + IDENT) , (binary_expression IDENT + IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( (binary_expression IDENT + IDENT) , IDENT , IDENT , IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + IDENT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (break_statement break ;)) })) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , LIT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) })) })) }))) }))) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( ))) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT >> LIT) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT >> LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) * (subscript_expression IDENT [ LIT ])) * (subscript_expression IDENT [ LIT ])) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (binary_expression IDENT == LIT)) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression (subscript_expression IDENT [ LIT ]) [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (goto_statement goto statement_identifier ;)) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (comma_expression (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) , (binary_expression (binary_expression IDENT + LIT) < LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (subscript_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 (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 ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) })) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ))) ;)) (return_statement return IDENT ;) })))
(function_definition "int FUN_001187e0(int *param_1)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  code *pcVar6;\n  code *pcVar7;\n  code *pcVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar15;\n  int *piVar16;\n  uint uVar17;\n  code *pcVar18;\n  int iVar19;\n  int iVar20;\n  int iVar21;\n  undefined4 uVar22;\n  int iVar23;\n  int iVar24;\n  undefined *puVar25;\n  int local_fc;\n  uint local_f4;\n  int *local_b8;\n  uint local_b4;\n  undefined4 local_b0;\n  int local_ac;\n  int local_a8;\n  undefined1 auStack_a4 [4];\n  int local_a0;\n  undefined1 auStack_9c [4];\n  int local_98;\n  uint local_94;\n  int *local_90 [3];\n  undefined1 *local_84;\n  int local_80;\n  int local_74;\n  char local_57;\n  int local_2c;\n  \n  puVar25 = PTR___stack_chk_guard_0015ba2c;\n  piVar16 = param_1 + 0x14;\n  local_b4 = 0;\n  iVar13 = param_1[3];\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  local_b8 = (int *)FUN_001137dc();\n  if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }\n    iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    if (iVar14 == 0) {\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }\n    else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    iVar13 = param_1[9];\n  }\n  piVar4 = local_b8;\n  iVar14 = *param_1;\n  if ((iVar13 == 0) && (piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16)) {\n    iVar20 = local_b8[3];\n    iVar19 = local_b8[2];\n    iVar14 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19;\n    local_b8[2] = iVar13;\n    uVar22 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14);\n    FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14);\n    piVar16 = param_1;\n    FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22);\n    iVar14 = *param_1;\n    iVar13 = param_1[9];\n  }\n  iVar20 = 0;\n  iVar14 = *(int *)(iVar14 + 0x4c);\n  pcVar18 = (code *)(PTR_DAT_0015b71c + 0xc48);\n  local_90[0] = local_b8;\n  while (piVar4 = local_90[0], iVar13 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }\n  }\nLAB_00118924:\n  local_b8 = piVar4;\n  if ((local_b8 != (int *)0x0) && (iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1)) {\n    piVar16 = local_b8;\n    (*(code *)(PTR_LAB_0015b6c0 + 0x124))();\n  }\n  if (local_2c == *(int *)puVar25) {\n    return *(int *)puVar25;\n  }\n  puVar25 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  (**(code **)(puVar25 + 0x42590))(*(undefined4 *)*piVar16);\n  if (piVar16[2] != 0) {\n    iVar13 = FUN_00101508(piVar16);\n    piVar16[2] = 0;\n    if (iVar13 != 0) goto LAB_00119204;\n  }\n  iVar14 = piVar16[1];\n  if (*(int *)(iVar14 + 0x10) != 0) {\n    *(undefined4 *)(iVar14 + 0x10) = 0;\n    FUN_001187e0(iVar14);\n  }\n  pcVar18 = *(code **)(puVar25 + 0x42708);\n  if (*(int *)(iVar14 + 0x28) != 0) {\n    *(undefined4 *)(iVar14 + 0x28) = 0;\n    (*pcVar18)();\n  }\n  iVar13 = *(int *)(iVar14 + 0x24);\n  *(undefined4 *)(iVar14 + 0x24) = 0;\nLAB_00119204:\n  (**(code **)(puVar25 + 0x42778))(*(undefined4 *)*piVar16);\n  return iVar13;\n}" (primitive_type "int") (function_declarator "FUN_001187e0(int *param_1)" (identifier "FUN_001187e0") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  code *pcVar6;\n  code *pcVar7;\n  code *pcVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar15;\n  int *piVar16;\n  uint uVar17;\n  code *pcVar18;\n  int iVar19;\n  int iVar20;\n  int iVar21;\n  undefined4 uVar22;\n  int iVar23;\n  int iVar24;\n  undefined *puVar25;\n  int local_fc;\n  uint local_f4;\n  int *local_b8;\n  uint local_b4;\n  undefined4 local_b0;\n  int local_ac;\n  int local_a8;\n  undefined1 auStack_a4 [4];\n  int local_a0;\n  undefined1 auStack_9c [4];\n  int local_98;\n  uint local_94;\n  int *local_90 [3];\n  undefined1 *local_84;\n  int local_80;\n  int local_74;\n  char local_57;\n  int local_2c;\n  \n  puVar25 = PTR___stack_chk_guard_0015ba2c;\n  piVar16 = param_1 + 0x14;\n  local_b4 = 0;\n  iVar13 = param_1[3];\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  local_b8 = (int *)FUN_001137dc();\n  if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }\n    iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    if (iVar14 == 0) {\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }\n    else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    iVar13 = param_1[9];\n  }\n  piVar4 = local_b8;\n  iVar14 = *param_1;\n  if ((iVar13 == 0) && (piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16)) {\n    iVar20 = local_b8[3];\n    iVar19 = local_b8[2];\n    iVar14 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19;\n    local_b8[2] = iVar13;\n    uVar22 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14);\n    FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14);\n    piVar16 = param_1;\n    FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22);\n    iVar14 = *param_1;\n    iVar13 = param_1[9];\n  }\n  iVar20 = 0;\n  iVar14 = *(int *)(iVar14 + 0x4c);\n  pcVar18 = (code *)(PTR_DAT_0015b71c + 0xc48);\n  local_90[0] = local_b8;\n  while (piVar4 = local_90[0], iVar13 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }\n  }\nLAB_00118924:\n  local_b8 = piVar4;\n  if ((local_b8 != (int *)0x0) && (iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1)) {\n    piVar16 = local_b8;\n    (*(code *)(PTR_LAB_0015b6c0 + 0x124))();\n  }\n  if (local_2c == *(int *)puVar25) {\n    return *(int *)puVar25;\n  }\n  puVar25 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  (**(code **)(puVar25 + 0x42590))(*(undefined4 *)*piVar16);\n  if (piVar16[2] != 0) {\n    iVar13 = FUN_00101508(piVar16);\n    piVar16[2] = 0;\n    if (iVar13 != 0) goto LAB_00119204;\n  }\n  iVar14 = piVar16[1];\n  if (*(int *)(iVar14 + 0x10) != 0) {\n    *(undefined4 *)(iVar14 + 0x10) = 0;\n    FUN_001187e0(iVar14);\n  }\n  pcVar18 = *(code **)(puVar25 + 0x42708);\n  if (*(int *)(iVar14 + 0x28) != 0) {\n    *(undefined4 *)(iVar14 + 0x28) = 0;\n    (*pcVar18)();\n  }\n  iVar13 = *(int *)(iVar14 + 0x24);\n  *(undefined4 *)(iVar14 + 0x24) = 0;\nLAB_00119204:\n  (**(code **)(puVar25 + 0x42778))(*(undefined4 *)*piVar16);\n  return iVar13;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "code *pcVar6;" (type_identifier "code") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "code *pcVar7;" (type_identifier "code") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "code *pcVar8;" (type_identifier "code") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "int extraout_v1;" (primitive_type "int") (identifier "extraout_v1") (; ";")) (declaration "int extraout_v1_00;" (primitive_type "int") (identifier "extraout_v1_00") (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "int *piVar16;" (primitive_type "int") (pointer_declarator "*piVar16" (* "*") (identifier "piVar16")) (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "code *pcVar18;" (type_identifier "code") (pointer_declarator "*pcVar18" (* "*") (identifier "pcVar18")) (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "int iVar20;" (primitive_type "int") (identifier "iVar20") (; ";")) (declaration "int iVar21;" (primitive_type "int") (identifier "iVar21") (; ";")) (declaration "undefined4 uVar22;" (type_identifier "undefined4") (identifier "uVar22") (; ";")) (declaration "int iVar23;" (primitive_type "int") (identifier "iVar23") (; ";")) (declaration "int iVar24;" (primitive_type "int") (identifier "iVar24") (; ";")) (declaration "undefined *puVar25;" (type_identifier "undefined") (pointer_declarator "*puVar25" (* "*") (identifier "puVar25")) (; ";")) (declaration "int local_fc;" (primitive_type "int") (identifier "local_fc") (; ";")) (declaration "uint local_f4;" (type_identifier "uint") (identifier "local_f4") (; ";")) (declaration "int *local_b8;" (primitive_type "int") (pointer_declarator "*local_b8" (* "*") (identifier "local_b8")) (; ";")) (declaration "uint local_b4;" (type_identifier "uint") (identifier "local_b4") (; ";")) (declaration "undefined4 local_b0;" (type_identifier "undefined4") (identifier "local_b0") (; ";")) (declaration "int local_ac;" (primitive_type "int") (identifier "local_ac") (; ";")) (declaration "int local_a8;" (primitive_type "int") (identifier "local_a8") (; ";")) (declaration "undefined1 auStack_a4 [4];" (type_identifier "undefined1") (array_declarator "auStack_a4 [4]" (identifier "auStack_a4") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "int local_a0;" (primitive_type "int") (identifier "local_a0") (; ";")) (declaration "undefined1 auStack_9c [4];" (type_identifier "undefined1") (array_declarator "auStack_9c [4]" (identifier "auStack_9c") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "int local_98;" (primitive_type "int") (identifier "local_98") (; ";")) (declaration "uint local_94;" (type_identifier "uint") (identifier "local_94") (; ";")) (declaration "int *local_90 [3];" (primitive_type "int") (pointer_declarator "*local_90 [3]" (* "*") (array_declarator "local_90 [3]" (identifier "local_90") ([ "[") (number_literal "3") (] "]"))) (; ";")) (declaration "undefined1 *local_84;" (type_identifier "undefined1") (pointer_declarator "*local_84" (* "*") (identifier "local_84")) (; ";")) (declaration "int local_80;" (primitive_type "int") (identifier "local_80") (; ";")) (declaration "int local_74;" (primitive_type "int") (identifier "local_74") (; ";")) (declaration "char local_57;" (primitive_type "char") (identifier "local_57") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar25 = PTR___stack_chk_guard_0015ba2c;" (assignment_expression "puVar25 = PTR___stack_chk_guard_0015ba2c" (identifier "puVar25") (= "=") (identifier "PTR___stack_chk_guard_0015ba2c")) (; ";")) (expression_statement "piVar16 = param_1 + 0x14;" (assignment_expression "piVar16 = param_1 + 0x14" (identifier "piVar16") (= "=") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14"))) (; ";")) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" (identifier "local_b4") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar13 = param_1[3];" (assignment_expression "iVar13 = param_1[3]" (identifier "iVar13") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0015ba2c" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0015ba2c" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0015ba2c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0015ba2c")))) (; ";")) (expression_statement "local_b8 = (int *)FUN_001137dc();" (assignment_expression "local_b8 = (int *)FUN_001137dc()" (identifier "local_b8") (= "=") (cast_expression "(int *)FUN_001137dc()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001137dc()" (identifier "FUN_001137dc") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }\n    iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    if (iVar14 == 0) {\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }\n    else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    iVar13 = param_1[9];\n  }" (if "if") (parenthesized_expression "(param_1[9] == 0)" (( "(") (binary_expression "param_1[9] == 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }\n    iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8);\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    if (iVar14 == 0) {\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }\n    else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }\n  }" ({ "{") (if_statement "if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }" (if "if") (parenthesized_expression "(1999 < local_b8[4])" (( "(") (binary_expression "1999 < local_b8[4]" (number_literal "1999") (< "<") (subscript_expression "local_b8[4]" (identifier "local_b8") ([ "[") (number_literal "4") (] "]"))) () ")")) (compound_statement "{\n      param_1[9] = 0xd;\n      goto LAB_00118864;\n    }" ({ "{") (expression_statement "param_1[9] = 0xd;" (assignment_expression "param_1[9] = 0xd" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0xd")) (; ";")) (goto_statement "goto LAB_00118864;" (goto "goto") (statement_identifier "LAB_00118864") (; ";")) (} "}"))) (expression_statement "iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8);" (assignment_expression "iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8)" (identifier "iVar14") (= "=") (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x444))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x444)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x444)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x444)" (( "(") (binary_expression "PTR_LAB_0015b6c0 + 0x444" (identifier "PTR_LAB_0015b6c0") (+ "+") (number_literal "0x444")) () ")")))) () ")")) (argument_list "(local_b8)" (( "(") (identifier "local_b8") () ")")))) (; ";")) (expression_statement "(*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();" (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x1a0))()" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x1a0))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x1a0)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x1a0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x1a0)" (( "(") (binary_expression "PTR_LAB_0015b6c0 + 0x1a0" (identifier "PTR_LAB_0015b6c0") (+ "+") (number_literal "0x1a0")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (iVar14 == 0) {\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }\n    else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00118c00:\n      iVar13 = param_1[9];\n    }" ({ "{") (labeled_statement "LAB_00118c00:\n      iVar13 = param_1[9];" (statement_identifier "LAB_00118c00") (: ":") (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" (identifier "iVar13") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";"))) (} "}")) (else_clause "else {\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }" (else "else") (compound_statement "{\n      iVar19 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);\n      if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }\nLAB_00118b04:\n      piVar4 = param_1 + 9;\n      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);\n      piVar16 = param_1;\n      FUN_00102720(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }\n    }" ({ "{") (expression_statement "iVar19 = *(int *)(*param_1 + 0x44);" (assignment_expression "iVar19 = *(int *)(*param_1 + 0x44)" (identifier "iVar19") (= "=") (pointer_expression "*(int *)(*param_1 + 0x44)" (* "*") (cast_expression "(int *)(*param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x44)" (( "(") (binary_expression "*param_1 + 0x44" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "iVar20 = *(int *)(*param_1 + 0x30);" (assignment_expression "iVar20 = *(int *)(*param_1 + 0x30)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)(*param_1 + 0x30)" (* "*") (cast_expression "(int *)(*param_1 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x30)" (( "(") (binary_expression "*param_1 + 0x30" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "(*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);" (call_expression "(*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14)" (parenthesized_expression "(*(code *)(PTR_DAT_0015b880 + 0x7a50))" (( "(") (pointer_expression "*(code *)(PTR_DAT_0015b880 + 0x7a50)" (* "*") (cast_expression "(code *)(PTR_DAT_0015b880 + 0x7a50)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0015b880 + 0x7a50)" (( "(") (binary_expression "PTR_DAT_0015b880 + 0x7a50" (identifier "PTR_DAT_0015b880") (+ "+") (number_literal "0x7a50")) () ")")))) () ")")) (argument_list "(param_1,local_90,iVar14)" (( "(") (identifier "param_1") (, ",") (identifier "local_90") (, ",") (identifier "iVar14") () ")"))) (; ";")) (if_statement "if (param_1[9] == 0) {\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }" (if "if") (parenthesized_expression "(param_1[9] == 0)" (( "(") (binary_expression "param_1[9] == 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);\n        param_1[9] = iVar5;\n        puVar2 = PTR_LAB_0015b65c;\n        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }\n      }" ({ "{") (expression_statement "iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);" (assignment_expression "iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10)" (identifier "iVar5") (= "=") (call_expression "(*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b700 + 0x2fcc))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b700 + 0x2fcc)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b700 + 0x2fcc)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b700 + 0x2fcc)" (( "(") (binary_expression "PTR_LAB_0015b700 + 0x2fcc" (identifier "PTR_LAB_0015b700") (+ "+") (number_literal "0x2fcc")) () ")")))) () ")")) (argument_list "(iVar13,0,0,iVar13 + 0x10)" (( "(") (identifier "iVar13") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (binary_expression "iVar13 + 0x10" (identifier "iVar13") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "param_1[9] = iVar5;" (assignment_expression "param_1[9] = iVar5" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "puVar2 = PTR_LAB_0015b65c;" (assignment_expression "puVar2 = PTR_LAB_0015b65c" (identifier "puVar2") (= "=") (identifier "PTR_LAB_0015b65c")) (; ";")) (if_statement "if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }" (if "if") (parenthesized_expression "((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0))" (( "(") (binary_expression "(iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)" (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar13 + 0x10) != 0)" (( "(") (binary_expression "*(int *)(iVar13 + 0x10) != 0" (pointer_expression "*(int *)(iVar13 + 0x10)" (* "*") (cast_expression "(int *)(iVar13 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x10)" (( "(") (binary_expression "iVar13 + 0x10" (identifier "iVar13") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);\n          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);\n          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);\n          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);\n          while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }\n        }" ({ "{") (expression_statement "pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);" (assignment_expression "pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c)" (identifier "pcVar18") (= "=") (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x3d7c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x3d7c)" (( "(") (binary_expression "PTR_LAB_0015b6c0 + 0x3d7c" (identifier "PTR_LAB_0015b6c0") (+ "+") (number_literal "0x3d7c")) () ")")))) (; ";")) (expression_statement "pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384)" (identifier "pcVar6") (= "=") (cast_expression "(code *)(PTR_LAB_0015b6d0 + 0x2384)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b6d0 + 0x2384)" (( "(") (binary_expression "PTR_LAB_0015b6d0 + 0x2384" (identifier "PTR_LAB_0015b6d0") (+ "+") (number_literal "0x2384")) () ")")))) (; ";")) (expression_statement "pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);" (assignment_expression "pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0)" (identifier "pcVar7") (= "=") (cast_expression "(code *)(PTR_LAB_0015b6d0 + 0x19d0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b6d0 + 0x19d0)" (( "(") (binary_expression "PTR_LAB_0015b6d0 + 0x19d0" (identifier "PTR_LAB_0015b6d0") (+ "+") (number_literal "0x19d0")) () ")")))) (; ";")) (expression_statement "pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);" (assignment_expression "pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0)" (identifier "pcVar8") (= "=") (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x27e0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x27e0)" (( "(") (binary_expression "PTR_LAB_0015b6c0 + 0x27e0" (identifier "PTR_LAB_0015b6c0") (+ "+") (number_literal "0x27e0")) () ")")))) (; ";")) (while_statement "while( true ) {\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);\n            uVar22 = local_b0;\n            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);\n            (*pcVar6)(param_1,local_90,uVar9,uVar22);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);\n            *(int *)(iVar13 + 0x10) = iVar5;\n            if ((param_1[9] != 0) || (iVar5 == 0)) break;\n          }" ({ "{") (expression_statement "(*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);" (call_expression "(*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8)" (parenthesized_expression "(*pcVar18)" (( "(") (pointer_expression "*pcVar18" (* "*") (identifier "pcVar18")) () ")")) (argument_list "(iVar13,&local_b0,&local_ac,&local_a8)" (( "(") (identifier "iVar13") (, ",") (pointer_expression "&local_b0" (& "&") (identifier "local_b0")) (, ",") (pointer_expression "&local_ac" (& "&") (identifier "local_ac")) (, ",") (pointer_expression "&local_a8" (& "&") (identifier "local_a8")) () ")"))) (; ";")) (expression_statement "uVar22 = local_b0;" (assignment_expression "uVar22 = local_b0" (identifier "uVar22") (= "=") (identifier "local_b0")) (; ";")) (expression_statement "uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);" (assignment_expression "uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0)" (identifier "uVar9") (= "=") (call_expression "(*(code *)PTR_strlen_0015b9c4)(local_b0)" (parenthesized_expression "(*(code *)PTR_strlen_0015b9c4)" (( "(") (pointer_expression "*(code *)PTR_strlen_0015b9c4" (* "*") (cast_expression "(code *)PTR_strlen_0015b9c4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_0015b9c4"))) () ")")) (argument_list "(local_b0)" (( "(") (identifier "local_b0") () ")")))) (; ";")) (expression_statement "(*pcVar6)(param_1,local_90,uVar9,uVar22);" (call_expression "(*pcVar6)(param_1,local_90,uVar9,uVar22)" (parenthesized_expression "(*pcVar6)" (( "(") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) () ")")) (argument_list "(param_1,local_90,uVar9,uVar22)" (( "(") (identifier "param_1") (, ",") (identifier "local_90") (, ",") (identifier "uVar9") (, ",") (identifier "uVar22") () ")"))) (; ";")) (if_statement "if (param_1[9] != 0) break;" (if "if") (parenthesized_expression "(param_1[9] != 0)" (( "(") (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (local_80 + local_74 + local_a8 < iVar19) {\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }\n            else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }" (if "if") (parenthesized_expression "(local_80 + local_74 + local_a8 < iVar19)" (( "(") (binary_expression "local_80 + local_74 + local_a8 < iVar19" (binary_expression "local_80 + local_74 + local_a8" (binary_expression "local_80 + local_74" (identifier "local_80") (+ "+") (identifier "local_74")) (+ "+") (identifier "local_a8")) (< "<") (identifier "iVar19")) () ")")) (compound_statement "{\n              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);\n              local_80 = local_80 + local_a8;\n              if (param_1[9] != 0) break;\n            }" ({ "{") (expression_statement "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);" (call_expression "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac)" (parenthesized_expression "(*(code *)PTR_memcpy_0015ba30)" (( "(") (pointer_expression "*(code *)PTR_memcpy_0015ba30" (* "*") (cast_expression "(code *)PTR_memcpy_0015ba30" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_0015ba30"))) () ")")) (argument_list "(local_84 + local_80,local_ac)" (( "(") (binary_expression "local_84 + local_80" (identifier "local_84") (+ "+") (identifier "local_80")) (, ",") (identifier "local_ac") () ")"))) (; ";")) (expression_statement "local_80 = local_80 + local_a8;" (assignment_expression "local_80 = local_80 + local_a8" (identifier "local_80") (= "=") (binary_expression "local_80 + local_a8" (identifier "local_80") (+ "+") (identifier "local_a8"))) (; ";")) (if_statement "if (param_1[9] != 0) break;" (if "if") (parenthesized_expression "(param_1[9] != 0)" (( "(") (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (else_clause "else {\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }" (else "else") (compound_statement "{\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar5 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }\n            }" ({ "{") (expression_statement "local_fc = 0;" (assignment_expression "local_fc = 0" (identifier "local_fc") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_f4 = 0;" (assignment_expression "local_f4 = 0" (identifier "local_f4") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" (identifier "local_98") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" (identifier "local_94") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar1 = 0 < local_a8;" (assignment_expression "bVar1 = 0 < local_a8" (identifier "bVar1") (= "=") (binary_expression "0 < local_a8" (number_literal "0") (< "<") (identifier "local_a8"))) (; ";")) (while_statement "while (bVar1) {\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }" (while "while") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);\n                iVar10 = iVar5 + iVar10;\n                uVar17 = local_f4 + local_94;\n                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;\n                if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }\n                if (iVar15 != 0) goto LAB_00118b04;\n                bVar1 = iVar5 < local_a8;\n                local_f4 = uVar17;\n              }" ({ "{") (expression_statement "iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);" (assignment_expression "iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98)" (identifier "iVar10") (= "=") (call_expression "(*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98)" (parenthesized_expression "(*(code *)(puVar2 + -0x2a88))" (( "(") (pointer_expression "*(code *)(puVar2 + -0x2a88)" (* "*") (cast_expression "(code *)(puVar2 + -0x2a88)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + -0x2a88)" (( "(") (binary_expression "puVar2 + -0x2a88" (identifier "puVar2") (+ "+") (number_literal "-0x2a88")) () ")")))) () ")")) (argument_list "(local_ac + iVar5,&local_98)" (( "(") (binary_expression "local_ac + iVar5" (identifier "local_ac") (+ "+") (identifier "iVar5")) (, ",") (pointer_expression "&local_98" (& "&") (identifier "local_98")) () ")")))) (; ";")) (expression_statement "iVar10 = iVar5 + iVar10;" (assignment_expression "iVar10 = iVar5 + iVar10" (identifier "iVar10") (= "=") (binary_expression "iVar5 + iVar10" (identifier "iVar5") (+ "+") (identifier "iVar10"))) (; ";")) (expression_statement "uVar17 = local_f4 + local_94;" (assignment_expression "uVar17 = local_f4 + local_94" (identifier "uVar17") (= "=") (binary_expression "local_f4 + local_94" (identifier "local_f4") (+ "+") (identifier "local_94"))) (; ";")) (expression_statement "local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;" (assignment_expression "local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98" (identifier "local_fc") (= "=") (binary_expression "(uint)(uVar17 < local_f4) + local_fc + local_98" (binary_expression "(uint)(uVar17 < local_f4) + local_fc" (call_expression "(uint)(uVar17 < local_f4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar17 < local_f4)" (( "(") (binary_expression "uVar17 < local_f4" (identifier "uVar17") (< "<") (identifier "local_f4")) () ")"))) (+ "+") (identifier "local_fc")) (+ "+") (identifier "local_98"))) (; ";")) (if_statement "if (local_57 == '\0') {\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }\n                else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }" (if "if") (parenthesized_expression "(local_57 == '\0')" (( "(") (binary_expression "local_57 == '\0'" (identifier "local_57") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                  if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }\n                  local_80 = local_80 + iVar5;\n                  if (iVar20 == 1) goto LAB_00118e60;\nLAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);\n                  iVar3 = local_ac;\n                  iVar5 = iVar5 + local_a0;\n                  if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }\n                }" ({ "{") (if_statement "if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }" (if "if") (parenthesized_expression "((local_98 == 0) && (local_94 < 0x80))" (( "(") (binary_expression "(local_98 == 0) && (local_94 < 0x80)" (parenthesized_expression "(local_98 == 0)" (( "(") (binary_expression "local_98 == 0" (identifier "local_98") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_94 < 0x80)" (( "(") (binary_expression "local_94 < 0x80" (identifier "local_94") (< "<") (number_literal "0x80")) () ")"))) () ")")) (compound_statement "{\n                    local_84[local_80] = (char)local_94;\n                    iVar5 = 1;\n                  }" ({ "{") (expression_statement "local_84[local_80] = (char)local_94;" (assignment_expression "local_84[local_80] = (char)local_94" (subscript_expression "local_84[local_80]" (identifier "local_84") ([ "[") (identifier "local_80") (] "]")) (= "=") (cast_expression "(char)local_94" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_94"))) (; ";")) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" (identifier "iVar5") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }" (else "else") (compound_statement "{\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();\n                  }" ({ "{") (expression_statement "iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();" (assignment_expression "iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))()" (identifier "iVar5") (= "=") (call_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x54))()" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x54))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b6d8 + 0x54)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b6d8 + 0x54)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b6d8 + 0x54)" (( "(") (binary_expression "PTR_LAB_0015b6d8 + 0x54" (identifier "PTR_LAB_0015b6d8") (+ "+") (number_literal "0x54")) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (expression_statement "local_80 = local_80 + iVar5;" (assignment_expression "local_80 = local_80 + iVar5" (identifier "local_80") (= "=") (binary_expression "local_80 + iVar5" (identifier "local_80") (+ "+") (identifier "iVar5"))) (; ";")) (if_statement "if (iVar20 == 1) goto LAB_00118e60;" (if "if") (parenthesized_expression "(iVar20 == 1)" (( "(") (binary_expression "iVar20 == 1" (identifier "iVar20") (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_00118e60;" (goto "goto") (statement_identifier "LAB_00118e60") (; ";"))) (labeled_statement "LAB_00118f30:\n                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);" (statement_identifier "LAB_00118f30") (: ":") (expression_statement "iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4);" (assignment_expression "iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4)" (identifier "iVar5") (= "=") (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x28c4))\n                                    (local_ac + iVar10,&local_a0,auStack_a4)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x28c4))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x28c4)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x28c4)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x28c4)" (( "(") (binary_expression "PTR_LAB_0015b6c0 + 0x28c4" (identifier "PTR_LAB_0015b6c0") (+ "+") (number_literal "0x28c4")) () ")")))) () ")")) (argument_list "(local_ac + iVar10,&local_a0,auStack_a4)" (( "(") (binary_expression "local_ac + iVar10" (identifier "local_ac") (+ "+") (identifier "iVar10")) (, ",") (pointer_expression "&local_a0" (& "&") (identifier "local_a0")) (, ",") (identifier "auStack_a4") () ")")))) (; ";"))) (expression_statement "iVar3 = local_ac;" (assignment_expression "iVar3 = local_ac" (identifier "iVar3") (= "=") (identifier "local_ac")) (; ";")) (expression_statement "iVar5 = iVar5 + local_a0;" (assignment_expression "iVar5 = iVar5 + local_a0" (identifier "iVar5") (= "=") (binary_expression "iVar5 + local_a0" (identifier "iVar5") (+ "+") (identifier "local_a0"))) (; ";")) (if_statement "if (iVar19 < local_80 + local_74 + iVar5) {\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }" (if "if") (parenthesized_expression "(iVar19 < local_80 + local_74 + iVar5)" (( "(") (binary_expression "iVar19 < local_80 + local_74 + iVar5" (identifier "iVar19") (< "<") (binary_expression "local_80 + local_74 + iVar5" (binary_expression "local_80 + local_74" (identifier "local_80") (+ "+") (identifier "local_74")) (+ "+") (identifier "iVar5"))) () ")")) (compound_statement "{\n                    iVar23 = 0;\n                    do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);\n                    iVar15 = param_1[9];\n                    iVar5 = iVar10 + iVar5;\n                  }" ({ "{") (expression_statement "iVar23 = 0;" (assignment_expression "iVar23 = 0" (identifier "iVar23") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    } while (iVar23 < iVar5);" (do "do") (compound_statement "{\n                      iVar15 = param_1[9];\n                      if (iVar15 != 0) goto LAB_00118f9c;\n                      iVar24 = iVar5 - iVar23;\n                      iVar15 = iVar3 + iVar23 + iVar10;\n                      iVar21 = (iVar19 - local_80) - local_74;\n                      if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }\n                    }" ({ "{") (expression_statement "iVar15 = param_1[9];" (assignment_expression "iVar15 = param_1[9]" (identifier "iVar15") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (if_statement "if (iVar15 != 0) goto LAB_00118f9c;" (if "if") (parenthesized_expression "(iVar15 != 0)" (( "(") (binary_expression "iVar15 != 0" (identifier "iVar15") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00118f9c;" (goto "goto") (statement_identifier "LAB_00118f9c") (; ";"))) (expression_statement "iVar24 = iVar5 - iVar23;" (assignment_expression "iVar24 = iVar5 - iVar23" (identifier "iVar24") (= "=") (binary_expression "iVar5 - iVar23" (identifier "iVar5") (- "-") (identifier "iVar23"))) (; ";")) (expression_statement "iVar15 = iVar3 + iVar23 + iVar10;" (assignment_expression "iVar15 = iVar3 + iVar23 + iVar10" (identifier "iVar15") (= "=") (binary_expression "iVar3 + iVar23 + iVar10" (binary_expression "iVar3 + iVar23" (identifier "iVar3") (+ "+") (identifier "iVar23")) (+ "+") (identifier "iVar10"))) (; ";")) (expression_statement "iVar21 = (iVar19 - local_80) - local_74;" (assignment_expression "iVar21 = (iVar19 - local_80) - local_74" (identifier "iVar21") (= "=") (binary_expression "(iVar19 - local_80) - local_74" (parenthesized_expression "(iVar19 - local_80)" (( "(") (binary_expression "iVar19 - local_80" (identifier "iVar19") (- "-") (identifier "local_80")) () ")")) (- "-") (identifier "local_74"))) (; ";")) (if_statement "if (iVar21 < iVar24) {\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }" (if "if") (parenthesized_expression "(iVar21 < iVar24)" (( "(") (binary_expression "iVar21 < iVar24" (identifier "iVar21") (< "<") (identifier "iVar24")) () ")")) (compound_statement "{\n                        iVar11 = (*pcVar8)(iVar15,auStack_9c);\n                        iVar24 = iVar11;\n                        if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }\n                        iVar23 = iVar23 + iVar11;\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);\n                        local_80 = iVar11 + local_80;\n                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;\n                      }" ({ "{") (expression_statement "iVar11 = (*pcVar8)(iVar15,auStack_9c);" (assignment_expression "iVar11 = (*pcVar8)(iVar15,auStack_9c)" (identifier "iVar11") (= "=") (call_expression "(*pcVar8)(iVar15,auStack_9c)" (parenthesized_expression "(*pcVar8)" (( "(") (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8")) () ")")) (argument_list "(iVar15,auStack_9c)" (( "(") (identifier "iVar15") (, ",") (identifier "auStack_9c") () ")")))) (; ";")) (expression_statement "iVar24 = iVar11;" (assignment_expression "iVar24 = iVar11" (identifier "iVar24") (= "=") (identifier "iVar11")) (; ";")) (if_statement "if (iVar11 < iVar21) {\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }" (if "if") (parenthesized_expression "(iVar11 < iVar21)" (( "(") (binary_expression "iVar11 < iVar21" (identifier "iVar11") (< "<") (identifier "iVar21")) () ")")) (compound_statement "{\n                          do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);\n                        }" ({ "{") (do_statement "do {\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          } while (iVar11 + iVar12 <= iVar21);" (do "do") (compound_statement "{\n                            iVar11 = iVar24;\n                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);\n                            iVar24 = iVar11 + iVar12;\n                          }" ({ "{") (expression_statement "iVar11 = iVar24;" (assignment_expression "iVar11 = iVar24" (identifier "iVar11") (= "=") (identifier "iVar24")) (; ";")) (expression_statement "iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);" (assignment_expression "iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c)" (identifier "iVar12") (= "=") (call_expression "(*pcVar8)(iVar15 + iVar11,auStack_9c)" (parenthesized_expression "(*pcVar8)" (( "(") (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8")) () ")")) (argument_list "(iVar15 + iVar11,auStack_9c)" (( "(") (binary_expression "iVar15 + iVar11" (identifier "iVar15") (+ "+") (identifier "iVar11")) (, ",") (identifier "auStack_9c") () ")")))) (; ";")) (expression_statement "iVar24 = iVar11 + iVar12;" (assignment_expression "iVar24 = iVar11 + iVar12" (identifier "iVar24") (= "=") (binary_expression "iVar11 + iVar12" (identifier "iVar11") (+ "+") (identifier "iVar12"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar11 + iVar12 <= iVar21)" (( "(") (binary_expression "iVar11 + iVar12 <= iVar21" (binary_expression "iVar11 + iVar12" (identifier "iVar11") (+ "+") (identifier "iVar12")) (<= "<=") (identifier "iVar21")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar23 = iVar23 + iVar11;" (assignment_expression "iVar23 = iVar23 + iVar11" (identifier "iVar23") (= "=") (binary_expression "iVar23 + iVar11" (identifier "iVar23") (+ "+") (identifier "iVar11"))) (; ";")) (expression_statement "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);" (call_expression "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11)" (parenthesized_expression "(*(code *)PTR_memcpy_0015ba30)" (( "(") (pointer_expression "*(code *)PTR_memcpy_0015ba30" (* "*") (cast_expression "(code *)PTR_memcpy_0015ba30" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_0015ba30"))) () ")")) (argument_list "(local_84 + local_80,iVar15,iVar11)" (( "(") (binary_expression "local_84 + local_80" (identifier "local_84") (+ "+") (identifier "local_80")) (, ",") (identifier "iVar15") (, ",") (identifier "iVar11") () ")"))) (; ";")) (expression_statement "local_80 = iVar11 + local_80;" (assignment_expression "local_80 = iVar11 + local_80" (identifier "local_80") (= "=") (binary_expression "iVar11 + local_80" (identifier "iVar11") (+ "+") (identifier "local_80"))) (; ";")) (if_statement "if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;" (if "if") (parenthesized_expression "(iVar19 <= local_80 + local_74)" (( "(") (binary_expression "iVar19 <= local_80 + local_74" (identifier "iVar19") (<= "<=") (binary_expression "local_80 + local_74" (identifier "local_80") (+ "+") (identifier "local_74"))) () ")")) (goto_statement "goto LAB_00118ff8;" (goto "goto") (statement_identifier "LAB_00118ff8") (; ";"))) (} "}")) (else_clause "else {\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }" (else "else") (compound_statement "{\n                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);\n                        local_80 = iVar24 + local_80;\n                        iVar23 = iVar5;\n                        if (local_80 + local_74 < iVar19) break;\nLAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);\n                      }" ({ "{") (expression_statement "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);" (call_expression "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24)" (parenthesized_expression "(*(code *)PTR_memcpy_0015ba30)" (( "(") (pointer_expression "*(code *)PTR_memcpy_0015ba30" (* "*") (cast_expression "(code *)PTR_memcpy_0015ba30" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_0015ba30"))) () ")")) (argument_list "(local_84 + local_80,iVar15,iVar24)" (( "(") (binary_expression "local_84 + local_80" (identifier "local_84") (+ "+") (identifier "local_80")) (, ",") (identifier "iVar15") (, ",") (identifier "iVar24") () ")"))) (; ";")) (expression_statement "local_80 = iVar24 + local_80;" (assignment_expression "local_80 = iVar24 + local_80" (identifier "local_80") (= "=") (binary_expression "iVar24 + local_80" (identifier "iVar24") (+ "+") (identifier "local_80"))) (; ";")) (expression_statement "iVar23 = iVar5;" (assignment_expression "iVar23 = iVar5" (identifier "iVar23") (= "=") (identifier "iVar5")) (; ";")) (if_statement "if (local_80 + local_74 < iVar19) break;" (if "if") (parenthesized_expression "(local_80 + local_74 < iVar19)" (( "(") (binary_expression "local_80 + local_74 < iVar19" (binary_expression "local_80 + local_74" (identifier "local_80") (+ "+") (identifier "local_74")) (< "<") (identifier "iVar19")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00118ff8:\n                        (*pcVar7)(param_1,local_90);" (statement_identifier "LAB_00118ff8") (: ":") (expression_statement "(*pcVar7)(param_1,local_90);" (call_expression "(*pcVar7)(param_1,local_90)" (parenthesized_expression "(*pcVar7)" (( "(") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) () ")")) (argument_list "(param_1,local_90)" (( "(") (identifier "param_1") (, ",") (identifier "local_90") () ")"))) (; ";"))) (} "}")))) (} "}")) (while "while") (parenthesized_expression "(iVar23 < iVar5)" (( "(") (binary_expression "iVar23 < iVar5" (identifier "iVar23") (< "<") (identifier "iVar5")) () ")")) (; ";")) (expression_statement "iVar15 = param_1[9];" (assignment_expression "iVar15 = param_1[9]" (identifier "iVar15") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "iVar5 = iVar10 + iVar5;" (assignment_expression "iVar5 = iVar10 + iVar5" (identifier "iVar5") (= "=") (binary_expression "iVar10 + iVar5" (identifier "iVar10") (+ "+") (identifier "iVar5"))) (; ";")) (} "}")) (else_clause "else {\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }" (else "else") (compound_statement "{\n                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);\n                    iVar15 = param_1[9];\n                    local_80 = local_80 + iVar5;\nLAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;\n                  }" ({ "{") (expression_statement "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);" (call_expression "(*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5)" (parenthesized_expression "(*(code *)PTR_memcpy_0015ba30)" (( "(") (pointer_expression "*(code *)PTR_memcpy_0015ba30" (* "*") (cast_expression "(code *)PTR_memcpy_0015ba30" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_0015ba30"))) () ")")) (argument_list "(local_84 + local_80,local_ac + iVar10,iVar5)" (( "(") (binary_expression "local_84 + local_80" (identifier "local_84") (+ "+") (identifier "local_80")) (, ",") (binary_expression "local_ac + iVar10" (identifier "local_ac") (+ "+") (identifier "iVar10")) (, ",") (identifier "iVar5") () ")"))) (; ";")) (expression_statement "iVar15 = param_1[9];" (assignment_expression "iVar15 = param_1[9]" (identifier "iVar15") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "local_80 = local_80 + iVar5;" (assignment_expression "local_80 = local_80 + iVar5" (identifier "local_80") (= "=") (binary_expression "local_80 + iVar5" (identifier "local_80") (+ "+") (identifier "iVar5"))) (; ";")) (labeled_statement "LAB_00118f9c:\n                    iVar5 = iVar10 + iVar5;" (statement_identifier "LAB_00118f9c") (: ":") (expression_statement "iVar5 = iVar10 + iVar5;" (assignment_expression "iVar5 = iVar10 + iVar5" (identifier "iVar5") (= "=") (binary_expression "iVar10 + iVar5" (identifier "iVar10") (+ "+") (identifier "iVar5"))) (; ";"))) (} "}")))) (} "}")) (else_clause "else {\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }" (else "else") (compound_statement "{\n                  local_84[1] = (char)local_80;\n                  *local_84 = (char)((uint)local_80 >> 8);\n                  if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar5;\n                  local_57 = '\0';\n                  FUN_00101668(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00118b04;\n                  if (iVar20 != 1) goto LAB_00118f30;\nLAB_00118e60:\n                  iVar5 = iVar10;\n                  iVar15 = local_80;\n                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar15;\n                  if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }\n                  iVar15 = param_1[9];\n                }" ({ "{") (expression_statement "local_84[1] = (char)local_80;" (assignment_expression "local_84[1] = (char)local_80" (subscript_expression "local_84[1]" (identifier "local_84") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(char)local_80" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_80"))) (; ";")) (expression_statement "*local_84 = (char)((uint)local_80 >> 8);" (assignment_expression "*local_84 = (char)((uint)local_80 >> 8)" (pointer_expression "*local_84" (* "*") (identifier "local_84")) (= "=") (cast_expression "(char)((uint)local_80 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)local_80 >> 8)" (( "(") (binary_expression "(uint)local_80 >> 8" (cast_expression "(uint)local_80" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_80")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (if_statement "if ((local_fc == 0) && (uVar17 < 0x80)) {\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }\n                  else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }" (if "if") (parenthesized_expression "((local_fc == 0) && (uVar17 < 0x80))" (( "(") (binary_expression "(local_fc == 0) && (uVar17 < 0x80)" (parenthesized_expression "(local_fc == 0)" (( "(") (binary_expression "local_fc == 0" (identifier "local_fc") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar17 < 0x80)" (( "(") (binary_expression "uVar17 < 0x80" (identifier "uVar17") (< "<") (number_literal "0x80")) () ")"))) () ")")) (compound_statement "{\n                    local_84[local_80] = (char)uVar17;\n                    iVar5 = 1;\n                  }" ({ "{") (expression_statement "local_84[local_80] = (char)uVar17;" (assignment_expression "local_84[local_80] = (char)uVar17" (subscript_expression "local_84[local_80]" (identifier "local_84") ([ "[") (identifier "local_80") (] "]")) (= "=") (cast_expression "(char)uVar17" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar17"))) (; ";")) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" (identifier "iVar5") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }" (else "else") (compound_statement "{\n                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }" ({ "{") (expression_statement "iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);" (assignment_expression "iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17)" (identifier "iVar5") (= "=") (call_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x54))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x54))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b6d8 + 0x54)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b6d8 + 0x54)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b6d8 + 0x54)" (( "(") (binary_expression "PTR_LAB_0015b6d8 + 0x54" (identifier "PTR_LAB_0015b6d8") (+ "+") (number_literal "0x54")) () ")")))) () ")")) (argument_list "(local_84 + local_80,local_fc,local_fc,uVar17)" (( "(") (binary_expression "local_84 + local_80" (identifier "local_84") (+ "+") (identifier "local_80")) (, ",") (identifier "local_fc") (, ",") (identifier "local_fc") (, ",") (identifier "uVar17") () ")")))) (; ";")) (} "}")))) (expression_statement "local_80 = local_80 + iVar5;" (assignment_expression "local_80 = local_80 + iVar5" (identifier "local_80") (= "=") (binary_expression "local_80 + iVar5" (identifier "local_80") (+ "+") (identifier "iVar5"))) (; ";")) (expression_statement "local_57 = '\0';" (assignment_expression "local_57 = '\0'" (identifier "local_57") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "FUN_00101668(param_1,local_90,local_fc,uVar17);" (call_expression "FUN_00101668(param_1,local_90,local_fc,uVar17)" (identifier "FUN_00101668") (argument_list "(param_1,local_90,local_fc,uVar17)" (( "(") (identifier "param_1") (, ",") (identifier "local_90") (, ",") (identifier "local_fc") (, ",") (identifier "uVar17") () ")"))) (; ";")) (if_statement "if (param_1[9] != 0) goto LAB_00118b04;" (if "if") (parenthesized_expression "(param_1[9] != 0)" (( "(") (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00118b04;" (goto "goto") (statement_identifier "LAB_00118b04") (; ";"))) (if_statement "if (iVar20 != 1) goto LAB_00118f30;" (if "if") (parenthesized_expression "(iVar20 != 1)" (( "(") (binary_expression "iVar20 != 1" (identifier "iVar20") (!= "!=") (number_literal "1")) () ")")) (goto_statement "goto LAB_00118f30;" (goto "goto") (statement_identifier "LAB_00118f30") (; ";"))) (labeled_statement "LAB_00118e60:\n                  iVar5 = iVar10;" (statement_identifier "LAB_00118e60") (: ":") (expression_statement "iVar5 = iVar10;" (assignment_expression "iVar5 = iVar10" (identifier "iVar5") (= "=") (identifier "iVar10")) (; ";"))) (expression_statement "iVar15 = local_80;" (assignment_expression "iVar15 = local_80" (identifier "iVar15") (= "=") (identifier "local_80")) (; ";")) (if_statement "if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }" (if "if") (parenthesized_expression "((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0'))" (( "(") (binary_expression "(iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')" (parenthesized_expression "(iVar10 < local_a8)" (( "(") (binary_expression "iVar10 < local_a8" (identifier "iVar10") (< "<") (identifier "local_a8")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(local_ac + iVar10) == '\0')" (( "(") (binary_expression "*(char *)(local_ac + iVar10) == '\0'" (pointer_expression "*(char *)(local_ac + iVar10)" (* "*") (cast_expression "(char *)(local_ac + iVar10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_ac + iVar10)" (( "(") (binary_expression "local_ac + iVar10" (identifier "local_ac") (+ "+") (identifier "iVar10")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n                    iVar15 = local_80 + 1;\n                    iVar5 = iVar10 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }\n                  }" ({ "{") (expression_statement "iVar15 = local_80 + 1;" (assignment_expression "iVar15 = local_80 + 1" (identifier "iVar15") (= "=") (binary_expression "local_80 + 1" (identifier "local_80") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar5 = iVar10 + 1;" (assignment_expression "iVar5 = iVar10 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_84[local_80] = 0;" (assignment_expression "local_84[local_80] = 0" (subscript_expression "local_84[local_80]" (identifier "local_84") ([ "[") (identifier "local_80") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }" (if "if") (parenthesized_expression "((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0'))" (( "(") (binary_expression "(iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')" (parenthesized_expression "(iVar5 < local_a8)" (( "(") (binary_expression "iVar5 < local_a8" (identifier "iVar5") (< "<") (identifier "local_a8")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(local_ac + iVar5) == '\0')" (( "(") (binary_expression "*(char *)(local_ac + iVar5) == '\0'" (pointer_expression "*(char *)(local_ac + iVar5)" (* "*") (cast_expression "(char *)(local_ac + iVar5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_ac + iVar5)" (( "(") (binary_expression "local_ac + iVar5" (identifier "local_ac") (+ "+") (identifier "iVar5")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n                      iVar5 = iVar10 + 2;\n                      local_84[iVar15] = 0;\n                      iVar15 = local_80 + 2;\n                    }" ({ "{") (expression_statement "iVar5 = iVar10 + 2;" (assignment_expression "iVar5 = iVar10 + 2" (identifier "iVar5") (= "=") (binary_expression "iVar10 + 2" (identifier "iVar10") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "local_84[iVar15] = 0;" (assignment_expression "local_84[iVar15] = 0" (subscript_expression "local_84[iVar15]" (identifier "local_84") ([ "[") (identifier "iVar15") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar15 = local_80 + 2;" (assignment_expression "iVar15 = local_80 + 2" (identifier "iVar15") (= "=") (binary_expression "local_80 + 2" (identifier "local_80") (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "local_80 = iVar15;" (assignment_expression "local_80 = iVar15" (identifier "local_80") (= "=") (identifier "iVar15")) (; ";")) (if_statement "if (iVar19 <= local_80 + local_74) {\n                    (*pcVar7)(param_1,local_90);\n                  }" (if "if") (parenthesized_expression "(iVar19 <= local_80 + local_74)" (( "(") (binary_expression "iVar19 <= local_80 + local_74" (identifier "iVar19") (<= "<=") (binary_expression "local_80 + local_74" (identifier "local_80") (+ "+") (identifier "local_74"))) () ")")) (compound_statement "{\n                    (*pcVar7)(param_1,local_90);\n                  }" ({ "{") (expression_statement "(*pcVar7)(param_1,local_90);" (call_expression "(*pcVar7)(param_1,local_90)" (parenthesized_expression "(*pcVar7)" (( "(") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) () ")")) (argument_list "(param_1,local_90)" (( "(") (identifier "param_1") (, ",") (identifier "local_90") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar15 = param_1[9];" (assignment_expression "iVar15 = param_1[9]" (identifier "iVar15") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (} "}")))) (if_statement "if (iVar15 != 0) goto LAB_00118b04;" (if "if") (parenthesized_expression "(iVar15 != 0)" (( "(") (binary_expression "iVar15 != 0" (identifier "iVar15") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00118b04;" (goto "goto") (statement_identifier "LAB_00118b04") (; ";"))) (expression_statement "bVar1 = iVar5 < local_a8;" (assignment_expression "bVar1 = iVar5 < local_a8" (identifier "bVar1") (= "=") (binary_expression "iVar5 < local_a8" (identifier "iVar5") (< "<") (identifier "local_a8"))) (; ";")) (expression_statement "local_f4 = uVar17;" (assignment_expression "local_f4 = uVar17" (identifier "local_f4") (= "=") (identifier "uVar17")) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);" (assignment_expression "iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(*(int *)(iVar13 + 0x10) + 4)" (* "*") (cast_expression "(int *)(*(int *)(iVar13 + 0x10) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar13 + 0x10) + 4)" (( "(") (binary_expression "*(int *)(iVar13 + 0x10) + 4" (pointer_expression "*(int *)(iVar13 + 0x10)" (* "*") (cast_expression "(int *)(iVar13 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x10)" (( "(") (binary_expression "iVar13 + 0x10" (identifier "iVar13") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*(int *)(iVar13 + 0x10) = iVar5;" (assignment_expression "*(int *)(iVar13 + 0x10) = iVar5" (pointer_expression "*(int *)(iVar13 + 0x10)" (* "*") (cast_expression "(int *)(iVar13 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x10)" (( "(") (binary_expression "iVar13 + 0x10" (identifier "iVar13") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (if_statement "if ((param_1[9] != 0) || (iVar5 == 0)) break;" (if "if") (parenthesized_expression "((param_1[9] != 0) || (iVar5 == 0))" (( "(") (binary_expression "(param_1[9] != 0) || (iVar5 == 0)" (parenthesized_expression "(param_1[9] != 0)" (( "(") (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}"))) (} "}"))) (} "}"))) (labeled_statement "LAB_00118b04:\n      piVar4 = param_1 + 9;" (statement_identifier "LAB_00118b04") (: ":") (expression_statement "piVar4 = param_1 + 9;" (assignment_expression "piVar4 = param_1 + 9" (identifier "piVar4") (= "=") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9"))) (; ";"))) (expression_statement "(*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);" (call_expression "(*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6d8 + -0x3294))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b6d8 + -0x3294)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b6d8 + -0x3294)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b6d8 + -0x3294)" (( "(") (binary_expression "PTR_LAB_0015b6d8 + -0x3294" (identifier "PTR_LAB_0015b6d8") (+ "+") (number_literal "-0x3294")) () ")")))) () ")")) (argument_list "(iVar13)" (( "(") (identifier "iVar13") () ")"))) (; ";")) (expression_statement "piVar16 = param_1;" (assignment_expression "piVar16 = param_1" (identifier "piVar16") (= "=") (identifier "param_1")) (; ";")) (expression_statement "FUN_00102720(param_1,local_90,&local_b4);" (call_expression "FUN_00102720(param_1,local_90,&local_b4)" (identifier "FUN_00102720") (argument_list "(param_1,local_90,&local_b4)" (( "(") (identifier "param_1") (, ",") (identifier "local_90") (, ",") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) () ")"))) (; ";")) (if_statement "if (local_b8[5] == 0) {\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }\n      else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(local_b8[5] == 0)" (( "(") (binary_expression "local_b8[5] == 0" (subscript_expression "local_b8[5]" (identifier "local_b8") ([ "[") (number_literal "5") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }\n      }" ({ "{") (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" (identifier "iVar13") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (if_statement "if (iVar13 == 0) {\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          piVar16 = piVar4;\n          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);\n          goto LAB_00118b60;\n        }" ({ "{") (expression_statement "piVar16 = piVar4;" (assignment_expression "piVar16 = piVar4" (identifier "piVar16") (= "=") (identifier "piVar4")) (; ";")) (expression_statement "(*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);" (call_expression "(*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8)" (parenthesized_expression "(*(code *)(PTR_DAT_0015b71c + -0x7650))" (( "(") (pointer_expression "*(code *)(PTR_DAT_0015b71c + -0x7650)" (* "*") (cast_expression "(code *)(PTR_DAT_0015b71c + -0x7650)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0015b71c + -0x7650)" (( "(") (binary_expression "PTR_DAT_0015b71c + -0x7650" (identifier "PTR_DAT_0015b71c") (+ "+") (number_literal "-0x7650")) () ")")))) () ")")) (argument_list "(piVar4,&local_b8)" (( "(") (identifier "piVar4") (, ",") (pointer_expression "&local_b8" (& "&") (identifier "local_b8")) () ")"))) (; ";")) (goto_statement "goto LAB_00118b60;" (goto "goto") (statement_identifier "LAB_00118b60") (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }" (else "else") (compound_statement "{\nLAB_00118b60:\n        iVar13 = param_1[9];\n        if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }\n      }" ({ "{") (labeled_statement "LAB_00118b60:\n        iVar13 = param_1[9];" (statement_identifier "LAB_00118b60") (: ":") (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" (identifier "iVar13") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";"))) (if_statement "if (iVar13 == 0) {\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);\n          iVar13 = param_1[9];\n          piVar16 = piVar4;\n          if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }\n        }" ({ "{") (expression_statement "(*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);" (call_expression "(*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0)" (parenthesized_expression "(*(code *)(PTR_DAT_0015b71c + 0xad0))" (( "(") (pointer_expression "*(code *)(PTR_DAT_0015b71c + 0xad0)" (* "*") (cast_expression "(code *)(PTR_DAT_0015b71c + 0xad0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0015b71c + 0xad0)" (( "(") (binary_expression "PTR_DAT_0015b71c + 0xad0" (identifier "PTR_DAT_0015b71c") (+ "+") (number_literal "0xad0")) () ")")))) () ")")) (argument_list "(piVar4,local_b8,0,0)" (( "(") (identifier "piVar4") (, ",") (identifier "local_b8") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" (identifier "iVar13") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "piVar16 = piVar4;" (assignment_expression "piVar16 = piVar4" (identifier "piVar16") (= "=") (identifier "piVar4")) (; ";")) (if_statement "if (iVar13 == 0) {\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            piVar16 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar16 + 1;\n            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);\n            *piVar4 = iVar14;\n            piVar4[1] = 1;\n            piVar4[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar13 = param_1[9];\n            if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }\n          }" ({ "{") (expression_statement "piVar16 = (int *)local_b8[7];" (assignment_expression "piVar16 = (int *)local_b8[7]" (identifier "piVar16") (= "=") (cast_expression "(int *)local_b8[7]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_b8[7]" (identifier "local_b8") ([ "[") (number_literal "7") (] "]")))) (; ";")) (expression_statement "local_b8[7] = (int)piVar16 + 1;" (assignment_expression "local_b8[7] = (int)piVar16 + 1" (subscript_expression "local_b8[7]" (identifier "local_b8") ([ "[") (number_literal "7") (] "]")) (= "=") (binary_expression "(int)piVar16 + 1" (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);" (assignment_expression "piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc)" (identifier "piVar4") (= "=") (cast_expression "(int *)(local_b8[8] + (int)piVar16 * 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b8[8] + (int)piVar16 * 0xc)" (( "(") (binary_expression "local_b8[8] + (int)piVar16 * 0xc" (subscript_expression "local_b8[8]" (identifier "local_b8") ([ "[") (number_literal "8") (] "]")) (+ "+") (binary_expression "(int)piVar16 * 0xc" (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16")) (* "*") (number_literal "0xc"))) () ")")))) (; ";")) (expression_statement "*piVar4 = iVar14;" (assignment_expression "*piVar4 = iVar14" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (identifier "iVar14")) (; ";")) (expression_statement "piVar4[1] = 1;" (assignment_expression "piVar4[1] = 1" (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar4[2] = local_b4;" (assignment_expression "piVar4[2] = local_b4" (subscript_expression "piVar4[2]" (identifier "piVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_b4")) (; ";")) (expression_statement "local_b8[4] = local_b8[4] + 1;" (assignment_expression "local_b8[4] = local_b8[4] + 1" (subscript_expression "local_b8[4]" (identifier "local_b8") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "local_b8[4] + 1" (subscript_expression "local_b8[4]" (identifier "local_b8") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" (identifier "iVar13") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (if_statement "if (iVar13 == 0) {\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              piVar16 = param_1;\n              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);\n              goto LAB_00118c00;\n            }" ({ "{") (expression_statement "piVar16 = param_1;" (assignment_expression "piVar16 = param_1" (identifier "piVar16") (= "=") (identifier "param_1")) (; ";")) (expression_statement "(*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);" (call_expression "(*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8)" (parenthesized_expression "(*(code *)(PTR_DAT_0015b71c + 0xc48))" (( "(") (pointer_expression "*(code *)(PTR_DAT_0015b71c + 0xc48)" (* "*") (cast_expression "(code *)(PTR_DAT_0015b71c + 0xc48)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0015b71c + 0xc48)" (( "(") (binary_expression "PTR_DAT_0015b71c + 0xc48" (identifier "PTR_DAT_0015b71c") (+ "+") (number_literal "0xc48")) () ")")))) () ")")) (argument_list "(param_1,0,local_b8)" (( "(") (identifier "param_1") (, ",") (number_literal "0") (, ",") (identifier "local_b8") () ")"))) (; ";")) (goto_statement "goto LAB_00118c00;" (goto "goto") (statement_identifier "LAB_00118c00") (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}")))) (} "}")))) (} "}")) (else_clause "else {\nLAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    iVar13 = param_1[9];\n  }" (else "else") (compound_statement "{\nLAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();\n    iVar13 = param_1[9];\n  }" ({ "{") (labeled_statement "LAB_00118864:\n    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();" (statement_identifier "LAB_00118864") (: ":") (expression_statement "(*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();" (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x1a0))()" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x1a0))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x1a0)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x1a0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x1a0)" (( "(") (binary_expression "PTR_LAB_0015b6c0 + 0x1a0" (identifier "PTR_LAB_0015b6c0") (+ "+") (number_literal "0x1a0")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" (identifier "iVar13") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (} "}")))) (expression_statement "piVar4 = local_b8;" (assignment_expression "piVar4 = local_b8" (identifier "piVar4") (= "=") (identifier "local_b8")) (; ";")) (expression_statement "iVar14 = *param_1;" (assignment_expression "iVar14 = *param_1" (identifier "iVar14") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if ((iVar13 == 0) && (piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16)) {\n    iVar20 = local_b8[3];\n    iVar19 = local_b8[2];\n    iVar14 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19;\n    local_b8[2] = iVar13;\n    uVar22 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14);\n    FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14);\n    piVar16 = param_1;\n    FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22);\n    iVar14 = *param_1;\n    iVar13 = param_1[9];\n  }" (if "if") (parenthesized_expression "((iVar13 == 0) && (piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16))" (( "(") (binary_expression "(iVar13 == 0) && (piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16)" (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16)" (( "(") (comma_expression "piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16" (assignment_expression "piVar16 = *(int **)(iVar14 + 0x48)" (identifier "piVar16") (= "=") (pointer_expression "*(int **)(iVar14 + 0x48)" (* "*") (cast_expression "(int **)(iVar14 + 0x48)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar14 + 0x48)" (( "(") (binary_expression "iVar14 + 0x48" (identifier "iVar14") (+ "+") (number_literal "0x48")) () ")"))))) (, ",") (binary_expression "0 < (int)piVar16" (number_literal "0") (< "<") (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16")))) () ")"))) () ")")) (compound_statement "{\n    iVar20 = local_b8[3];\n    iVar19 = local_b8[2];\n    iVar14 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19;\n    local_b8[2] = iVar13;\n    uVar22 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14);\n    FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14);\n    piVar16 = param_1;\n    FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22);\n    iVar14 = *param_1;\n    iVar13 = param_1[9];\n  }" ({ "{") (expression_statement "iVar20 = local_b8[3];" (assignment_expression "iVar20 = local_b8[3]" (identifier "iVar20") (= "=") (subscript_expression "local_b8[3]" (identifier "local_b8") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "iVar19 = local_b8[2];" (assignment_expression "iVar19 = local_b8[2]" (identifier "iVar19") (= "=") (subscript_expression "local_b8[2]" (identifier "local_b8") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar14 = param_1[2];" (assignment_expression "iVar14 = param_1[2]" (identifier "iVar14") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar17 = local_b4 + iVar20;" (assignment_expression "uVar17 = local_b4 + iVar20" (identifier "uVar17") (= "=") (binary_expression "local_b4 + iVar20" (identifier "local_b4") (+ "+") (identifier "iVar20"))) (; ";")) (expression_statement "local_b8[3] = uVar17;" (assignment_expression "local_b8[3] = uVar17" (subscript_expression "local_b8[3]" (identifier "local_b8") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar17")) (; ";")) (expression_statement "iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19;" (assignment_expression "iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19" (identifier "iVar13") (= "=") (binary_expression "(uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19" (binary_expression "(uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f)" (call_expression "(uint)(uVar17 < local_b4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar17 < local_b4)" (( "(") (binary_expression "uVar17 < local_b4" (identifier "uVar17") (< "<") (identifier "local_b4")) () ")"))) (+ "+") (parenthesized_expression "((int)local_b4 >> 0x1f)" (( "(") (binary_expression "(int)local_b4 >> 0x1f" (cast_expression "(int)local_b4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b4")) (>> ">>") (number_literal "0x1f")) () ")"))) (+ "+") (identifier "iVar19"))) (; ";")) (expression_statement "local_b8[2] = iVar13;" (assignment_expression "local_b8[2] = iVar13" (subscript_expression "local_b8[2]" (identifier "local_b8") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "uVar22 = *(undefined4 *)(*param_1 + 0x48);" (assignment_expression "uVar22 = *(undefined4 *)(*param_1 + 0x48)" (identifier "uVar22") (= "=") (pointer_expression "*(undefined4 *)(*param_1 + 0x48)" (* "*") (cast_expression "(undefined4 *)(*param_1 + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x48)" (( "(") (binary_expression "*param_1 + 0x48" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14);" (call_expression "FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14)" (identifier "FUN_00134480") (argument_list "(iVar13,uVar17,iVar14 >> 0x1f,iVar14)" (( "(") (identifier "iVar13") (, ",") (identifier "uVar17") (, ",") (binary_expression "iVar14 >> 0x1f" (identifier "iVar14") (>> ">>") (number_literal "0x1f")) (, ",") (identifier "iVar14") () ")"))) (; ";")) (expression_statement "FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14);" (call_expression "FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14)" (identifier "FUN_00134480") (argument_list "(iVar19,iVar20,iVar14 >> 0x1f,iVar14)" (( "(") (identifier "iVar19") (, ",") (identifier "iVar20") (, ",") (binary_expression "iVar14 >> 0x1f" (identifier "iVar14") (>> ">>") (number_literal "0x1f")) (, ",") (identifier "iVar14") () ")"))) (; ";")) (expression_statement "piVar16 = param_1;" (assignment_expression "piVar16 = param_1" (identifier "piVar16") (= "=") (identifier "param_1")) (; ";")) (expression_statement "FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22);" (call_expression "FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22)" (identifier "FUN_00118610") (argument_list "(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_b8" (& "&") (identifier "local_b8")) (, ",") (binary_expression "(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5]" (binary_expression "(extraout_v1 - extraout_v1_00) * param_1[2]" (parenthesized_expression "(extraout_v1 - extraout_v1_00)" (( "(") (binary_expression "extraout_v1 - extraout_v1_00" (identifier "extraout_v1") (- "-") (identifier "extraout_v1_00")) () ")")) (* "*") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (* "*") (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]"))) (, ",") (identifier "uVar22") () ")"))) (; ";")) (expression_statement "iVar14 = *param_1;" (assignment_expression "iVar14 = *param_1" (identifier "iVar14") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" (identifier "iVar13") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (} "}"))) (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" (identifier "iVar20") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar14 = *(int *)(iVar14 + 0x4c);" (assignment_expression "iVar14 = *(int *)(iVar14 + 0x4c)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(iVar14 + 0x4c)" (* "*") (cast_expression "(int *)(iVar14 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x4c)" (( "(") (binary_expression "iVar14 + 0x4c" (identifier "iVar14") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (expression_statement "pcVar18 = (code *)(PTR_DAT_0015b71c + 0xc48);" (assignment_expression "pcVar18 = (code *)(PTR_DAT_0015b71c + 0xc48)" (identifier "pcVar18") (= "=") (cast_expression "(code *)(PTR_DAT_0015b71c + 0xc48)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0015b71c + 0xc48)" (( "(") (binary_expression "PTR_DAT_0015b71c + 0xc48" (identifier "PTR_DAT_0015b71c") (+ "+") (number_literal "0xc48")) () ")")))) (; ";")) (expression_statement "local_90[0] = local_b8;" (assignment_expression "local_90[0] = local_b8" (subscript_expression "local_90[0]" (identifier "local_90") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_b8")) (; ";")) (while_statement "while (piVar4 = local_90[0], iVar13 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }\n  }" (while "while") (parenthesized_expression "(piVar4 = local_90[0], iVar13 == 0)" (( "(") (comma_expression "piVar4 = local_90[0], iVar13 == 0" (assignment_expression "piVar4 = local_90[0]" (identifier "piVar4") (= "=") (subscript_expression "local_90[0]" (identifier "local_90") ([ "[") (number_literal "0") (] "]"))) (, ",") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }\n  }" ({ "{") (while_statement "while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }\n      piVar16 = param_1;\n      FUN_00117a5c(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar13 = param_1[9];\n      if (iVar13 != 0) break;\n      piVar16 = param_1;\n      (*pcVar18)(param_1,iVar20);\n      piVar4 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00118924;\n    }" ({ "{") (if_statement "if (local_90[0][iVar20 * 3 + 7] < iVar14) {\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }" (if "if") (parenthesized_expression "(local_90[0][iVar20 * 3 + 7] < iVar14)" (( "(") (binary_expression "local_90[0][iVar20 * 3 + 7] < iVar14" (subscript_expression "local_90[0][iVar20 * 3 + 7]" (subscript_expression "local_90[0]" (identifier "local_90") ([ "[") (number_literal "0") (] "]")) ([ "[") (binary_expression "iVar20 * 3 + 7" (binary_expression "iVar20 * 3" (identifier "iVar20") (* "*") (number_literal "3")) (+ "+") (number_literal "7")) (] "]")) (< "<") (identifier "iVar14")) () ")")) (compound_statement "{\n        local_b8 = local_90[0];\n        FUN_00101d04(param_1,local_90[0],local_90[0],0);\n        piVar16 = param_1;\n        piVar4 = local_b8;\n        goto LAB_00118924;\n      }" ({ "{") (expression_statement "local_b8 = local_90[0];" (assignment_expression "local_b8 = local_90[0]" (identifier "local_b8") (= "=") (subscript_expression "local_90[0]" (identifier "local_90") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "FUN_00101d04(param_1,local_90[0],local_90[0],0);" (call_expression "FUN_00101d04(param_1,local_90[0],local_90[0],0)" (identifier "FUN_00101d04") (argument_list "(param_1,local_90[0],local_90[0],0)" (( "(") (identifier "param_1") (, ",") (subscript_expression "local_90[0]" (identifier "local_90") ([ "[") (number_literal "0") (] "]")) (, ",") (subscript_expression "local_90[0]" (identifier "local_90") ([ "[") (number_literal "0") (] "]")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "piVar16 = param_1;" (assignment_expression "piVar16 = param_1" (identifier "piVar16") (= "=") (identifier "param_1")) (; ";")) (expression_statement "piVar4 = local_b8;" (assignment_expression "piVar4 = local_b8" (identifier "piVar4") (= "=") (identifier "local_b8")) (; ";")) (goto_statement "goto LAB_00118924;" (goto "goto") (statement_identifier "LAB_00118924") (; ";")) (} "}"))) (expression_statement "piVar16 = param_1;" (assignment_expression "piVar16 = param_1" (identifier "piVar16") (= "=") (identifier "param_1")) (; ";")) (expression_statement "FUN_00117a5c(param_1,local_90,iVar20);" (call_expression "FUN_00117a5c(param_1,local_90,iVar20)" (identifier "FUN_00117a5c") (argument_list "(param_1,local_90,iVar20)" (( "(") (identifier "param_1") (, ",") (identifier "local_90") (, ",") (identifier "iVar20") () ")"))) (; ";")) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" (identifier "iVar20") (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar13 = param_1[9];" (assignment_expression "iVar13 = param_1[9]" (identifier "iVar13") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (if_statement "if (iVar13 != 0) break;" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "piVar16 = param_1;" (assignment_expression "piVar16 = param_1" (identifier "piVar16") (= "=") (identifier "param_1")) (; ";")) (expression_statement "(*pcVar18)(param_1,iVar20);" (call_expression "(*pcVar18)(param_1,iVar20)" (parenthesized_expression "(*pcVar18)" (( "(") (pointer_expression "*pcVar18" (* "*") (identifier "pcVar18")) () ")")) (argument_list "(param_1,iVar20)" (( "(") (identifier "param_1") (, ",") (identifier "iVar20") () ")"))) (; ";")) (expression_statement "piVar4 = local_90[0];" (assignment_expression "piVar4 = local_90[0]" (identifier "piVar4") (= "=") (subscript_expression "local_90[0]" (identifier "local_90") ([ "[") (number_literal "0") (] "]"))) (; ";")) (if_statement "if (param_1[9] != 0) goto LAB_00118924;" (if "if") (parenthesized_expression "(param_1[9] != 0)" (( "(") (binary_expression "param_1[9] != 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00118924;" (goto "goto") (statement_identifier "LAB_00118924") (; ";"))) (} "}"))) (} "}"))) (labeled_statement "LAB_00118924:\n  local_b8 = piVar4;" (statement_identifier "LAB_00118924") (: ":") (expression_statement "local_b8 = piVar4;" (assignment_expression "local_b8 = piVar4" (identifier "local_b8") (= "=") (identifier "piVar4")) (; ";"))) (if_statement "if ((local_b8 != (int *)0x0) && (iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1)) {\n    piVar16 = local_b8;\n    (*(code *)(PTR_LAB_0015b6c0 + 0x124))();\n  }" (if "if") (parenthesized_expression "((local_b8 != (int *)0x0) && (iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1))" (( "(") (binary_expression "(local_b8 != (int *)0x0) && (iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1)" (parenthesized_expression "(local_b8 != (int *)0x0)" (( "(") (binary_expression "local_b8 != (int *)0x0" (identifier "local_b8") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1)" (( "(") (comma_expression "iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1" (assignment_expression "iVar13 = *local_b8" (identifier "iVar13") (= "=") (pointer_expression "*local_b8" (* "*") (identifier "local_b8"))) (, ",") (comma_expression "*local_b8 = iVar13 + -1, iVar13 + -1 < 1" (assignment_expression "*local_b8 = iVar13 + -1" (pointer_expression "*local_b8" (* "*") (identifier "local_b8")) (= "=") (binary_expression "iVar13 + -1" (identifier "iVar13") (+ "+") (number_literal "-1"))) (, ",") (binary_expression "iVar13 + -1 < 1" (binary_expression "iVar13 + -1" (identifier "iVar13") (+ "+") (number_literal "-1")) (< "<") (number_literal "1")))) () ")"))) () ")")) (compound_statement "{\n    piVar16 = local_b8;\n    (*(code *)(PTR_LAB_0015b6c0 + 0x124))();\n  }" ({ "{") (expression_statement "piVar16 = local_b8;" (assignment_expression "piVar16 = local_b8" (identifier "piVar16") (= "=") (identifier "local_b8")) (; ";")) (expression_statement "(*(code *)(PTR_LAB_0015b6c0 + 0x124))();" (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x124))()" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x124))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x124)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x124)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x124)" (( "(") (binary_expression "PTR_LAB_0015b6c0 + 0x124" (identifier "PTR_LAB_0015b6c0") (+ "+") (number_literal "0x124")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_2c == *(int *)puVar25) {\n    return *(int *)puVar25;\n  }" (if "if") (parenthesized_expression "(local_2c == *(int *)puVar25)" (( "(") (binary_expression "local_2c == *(int *)puVar25" (identifier "local_2c") (== "==") (pointer_expression "*(int *)puVar25" (* "*") (cast_expression "(int *)puVar25" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar25")))) () ")")) (compound_statement "{\n    return *(int *)puVar25;\n  }" ({ "{") (return_statement "return *(int *)puVar25;" (return "return") (pointer_expression "*(int *)puVar25" (* "*") (cast_expression "(int *)puVar25" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar25"))) (; ";")) (} "}"))) (expression_statement "puVar25 = PTR___stack_chk_fail_0015ba10;" (assignment_expression "puVar25 = PTR___stack_chk_fail_0015ba10" (identifier "puVar25") (= "=") (identifier "PTR___stack_chk_fail_0015ba10")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_0015ba10)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ba10)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ba10)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0015ba10" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0015ba10" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0015ba10"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "(**(code **)(puVar25 + 0x42590))(*(undefined4 *)*piVar16);" (call_expression "(**(code **)(puVar25 + 0x42590))(*(undefined4 *)*piVar16)" (parenthesized_expression "(**(code **)(puVar25 + 0x42590))" (( "(") (pointer_expression "**(code **)(puVar25 + 0x42590)" (* "*") (pointer_expression "*(code **)(puVar25 + 0x42590)" (* "*") (cast_expression "(code **)(puVar25 + 0x42590)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0x42590)" (( "(") (binary_expression "puVar25 + 0x42590" (identifier "puVar25") (+ "+") (number_literal "0x42590")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)*piVar16)" (( "(") (pointer_expression "*(undefined4 *)*piVar16" (* "*") (cast_expression "(undefined4 *)*piVar16" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar16" (* "*") (identifier "piVar16")))) () ")"))) (; ";")) (if_statement "if (piVar16[2] != 0) {\n    iVar13 = FUN_00101508(piVar16);\n    piVar16[2] = 0;\n    if (iVar13 != 0) goto LAB_00119204;\n  }" (if "if") (parenthesized_expression "(piVar16[2] != 0)" (( "(") (binary_expression "piVar16[2] != 0" (subscript_expression "piVar16[2]" (identifier "piVar16") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar13 = FUN_00101508(piVar16);\n    piVar16[2] = 0;\n    if (iVar13 != 0) goto LAB_00119204;\n  }" ({ "{") (expression_statement "iVar13 = FUN_00101508(piVar16);" (assignment_expression "iVar13 = FUN_00101508(piVar16)" (identifier "iVar13") (= "=") (call_expression "FUN_00101508(piVar16)" (identifier "FUN_00101508") (argument_list "(piVar16)" (( "(") (identifier "piVar16") () ")")))) (; ";")) (expression_statement "piVar16[2] = 0;" (assignment_expression "piVar16[2] = 0" (subscript_expression "piVar16[2]" (identifier "piVar16") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar13 != 0) goto LAB_00119204;" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00119204;" (goto "goto") (statement_identifier "LAB_00119204") (; ";"))) (} "}"))) (expression_statement "iVar14 = piVar16[1];" (assignment_expression "iVar14 = piVar16[1]" (identifier "iVar14") (= "=") (subscript_expression "piVar16[1]" (identifier "piVar16") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (*(int *)(iVar14 + 0x10) != 0) {\n    *(undefined4 *)(iVar14 + 0x10) = 0;\n    FUN_001187e0(iVar14);\n  }" (if "if") (parenthesized_expression "(*(int *)(iVar14 + 0x10) != 0)" (( "(") (binary_expression "*(int *)(iVar14 + 0x10) != 0" (pointer_expression "*(int *)(iVar14 + 0x10)" (* "*") (cast_expression "(int *)(iVar14 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x10)" (( "(") (binary_expression "iVar14 + 0x10" (identifier "iVar14") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *(undefined4 *)(iVar14 + 0x10) = 0;\n    FUN_001187e0(iVar14);\n  }" ({ "{") (expression_statement "*(undefined4 *)(iVar14 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 0x10) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar14 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x10)" (( "(") (binary_expression "iVar14 + 0x10" (identifier "iVar14") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_001187e0(iVar14);" (call_expression "FUN_001187e0(iVar14)" (identifier "FUN_001187e0") (argument_list "(iVar14)" (( "(") (identifier "iVar14") () ")"))) (; ";")) (} "}"))) (expression_statement "pcVar18 = *(code **)(puVar25 + 0x42708);" (assignment_expression "pcVar18 = *(code **)(puVar25 + 0x42708)" (identifier "pcVar18") (= "=") (pointer_expression "*(code **)(puVar25 + 0x42708)" (* "*") (cast_expression "(code **)(puVar25 + 0x42708)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0x42708)" (( "(") (binary_expression "puVar25 + 0x42708" (identifier "puVar25") (+ "+") (number_literal "0x42708")) () ")"))))) (; ";")) (if_statement "if (*(int *)(iVar14 + 0x28) != 0) {\n    *(undefined4 *)(iVar14 + 0x28) = 0;\n    (*pcVar18)();\n  }" (if "if") (parenthesized_expression "(*(int *)(iVar14 + 0x28) != 0)" (( "(") (binary_expression "*(int *)(iVar14 + 0x28) != 0" (pointer_expression "*(int *)(iVar14 + 0x28)" (* "*") (cast_expression "(int *)(iVar14 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x28)" (( "(") (binary_expression "iVar14 + 0x28" (identifier "iVar14") (+ "+") (number_literal "0x28")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *(undefined4 *)(iVar14 + 0x28) = 0;\n    (*pcVar18)();\n  }" ({ "{") (expression_statement "*(undefined4 *)(iVar14 + 0x28) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 0x28) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 0x28)" (* "*") (cast_expression "(undefined4 *)(iVar14 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x28)" (( "(") (binary_expression "iVar14 + 0x28" (identifier "iVar14") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" (( "(") (pointer_expression "*pcVar18" (* "*") (identifier "pcVar18")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar13 = *(int *)(iVar14 + 0x24);" (assignment_expression "iVar13 = *(int *)(iVar14 + 0x24)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(iVar14 + 0x24)" (* "*") (cast_expression "(int *)(iVar14 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x24)" (( "(") (binary_expression "iVar14 + 0x24" (identifier "iVar14") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar14 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + 0x24) = 0" (pointer_expression "*(undefined4 *)(iVar14 + 0x24)" (* "*") (cast_expression "(undefined4 *)(iVar14 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x24)" (( "(") (binary_expression "iVar14 + 0x24" (identifier "iVar14") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00119204:\n  (**(code **)(puVar25 + 0x42778))(*(undefined4 *)*piVar16);" (statement_identifier "LAB_00119204") (: ":") (expression_statement "(**(code **)(puVar25 + 0x42778))(*(undefined4 *)*piVar16);" (call_expression "(**(code **)(puVar25 + 0x42778))(*(undefined4 *)*piVar16)" (parenthesized_expression "(**(code **)(puVar25 + 0x42778))" (( "(") (pointer_expression "**(code **)(puVar25 + 0x42778)" (* "*") (pointer_expression "*(code **)(puVar25 + 0x42778)" (* "*") (cast_expression "(code **)(puVar25 + 0x42778)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0x42778)" (( "(") (binary_expression "puVar25 + 0x42778" (identifier "puVar25") (+ "+") (number_literal "0x42778")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)*piVar16)" (( "(") (pointer_expression "*(undefined4 *)*piVar16" (* "*") (cast_expression "(undefined4 *)*piVar16" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar16" (* "*") (identifier "piVar16")))) () ")"))) (; ";"))) (return_statement "return iVar13;" (return "return") (identifier "iVar13") (; ";")) (} "}")))

void function_1(type_1 *p)

{
  bool bVar1;
  char *pcVar2;
  type_2 *var_20;
  type_3 *pFVar4;
  int *piVar5;
  int var_37;
  int var_16;
  type_4 *pFVar8;
  int var_9;
  type_5 *var_27;
  type_6 uVar11;
  int var_12;
  int var_22;
  int var_24;
  type_7 *pFVar15;
  type_8 *pFVar16;
  int var_32;
  int var_33;
  int var_18;
  type_1 *p_00;
  type_9 var_14;
  type_1 *pFVar19;
  int var_4;
  int var_8;
  type_2 *var_23;
  int var_5;
  int var_6;
  int var_19;
  int var_21;
  int var_1;
  int var_11;
  type_10 *var_38;
  type_10 *pcVar29;
  int var_3;
  type_6 in_stack_fffffefc;
  int var_15;
  type_9 var_13;
  type_3 *var_36;
  int var_29;
  char *zTerm;
  type_2 *var_10;
  int var_7;
  int bDummy;
  int var_17;
  type_11 dummy;
  type_12 iDelta;
  type_13 writer;
  
  var_3 = var_1 + 0x4add0;
  piVar5 = *(int **)(var_1 + 0x4324c);
  p_00 = (type_1 *)&p->var_36;
  var_29 = 0;
  pFVar15 = p->pHash;
  var_37 = *piVar5;
  var_36 = var_2(p);
  if (p->rc == 0) {
    if (1999 < var_36->nSegment) {
      p->rc = 0xd;
      goto LAB_00118864;
    }
    var_4 = (*(type_10 *)(*(int *)(var_3 + -0x7ef0) + 0x444))(var_36);
    (*(type_10 *)(*(int *)(var_3 + -0x7ef0) + 0x1a0))();
    if (var_4 == 0) {
LAB_00118c00:
      var_16 = p->rc;
    }
    else {
      var_8 = p->pConfig->pgsz;
      var_16 = p->pConfig->eDetail;
      (*(type_10 *)(*(int *)(var_3 + -0x7d30) + 0x7a50))(p,&writer,var_4);
      if (p->rc == 0) {
        var_5 = (*(type_10 *)(*(int *)(var_3 + -0x7eb0) + 0x2fcc))(pFVar15,0,0,&pFVar15->pScan);
        p->rc = var_5;
        if ((var_5 != 0) ||
           (var_5 = *(int *)(var_3 + -0x7ef0), pFVar15->pScan == (type_5 *)0x0))
        goto LAB_00118afc;
        var_6 = *(int *)(var_3 + -0x7ee0);
        var_9 = *(int *)(var_3 + -0x7f54);
        var_38 = (type_10 *)(*(int *)(var_3 + -0x7ee0) + 0x19d0);
        pcVar29 = (type_10 *)(*(int *)(var_3 + -0x7ef0) + 0x27e0);
        do {
          (*(type_10 *)(var_5 + 0x3d7c))(pFVar15,&zTerm,&var_10,&var_7);
          pcVar2 = zTerm;
          uVar11 = (**(type_10 **)(var_3 + -0x7bec))(zTerm);
          (*(type_10 *)(var_6 + 0x2384))(p,&writer,uVar11,pcVar2);
          if (p->rc != 0) goto LAB_00118afc;
          if (writer.writer.buf.n + writer.writer.pgidx.n + var_7 < var_8) {
            (**(type_10 **)(var_3 + -0x7b80))(writer.writer.buf.p + writer.writer.buf.n,var_10);
            writer.writer.buf.n = writer.writer.buf.n + var_7;
            if (p->rc != 0) goto LAB_00118afc;
          }
          else {
            var_15 = 0;
            var_13 = 0;
            iDelta._0_4_ = 0;
            var_11 = 0;
            iDelta._4_4_ = 0;
            bVar1 = 0 < var_7;
            while (bVar1) {
              var_12 = (*(type_10 *)(var_9 + -0x2a88))(var_10 + var_11,&iDelta);
              var_12 = var_11 + var_12;
              var_14 = var_13 + iDelta._4_4_;
              var_15 = (type_9)(var_14 < var_13) + var_15 + iDelta._0_4_;
              if (writer.bFirstRowidInPage == '\0') {
                if (iDelta._0_4_ == 0) {
                  var_11 = *(int *)(var_3 + -0x7ed8);
                  if (0x7f < iDelta._4_4_) goto LAB_00118f00;
                  writer.writer.buf.p[writer.writer.buf.n] = (type_2)iDelta._4_4_;
                  var_11 = 1;
                }
                else {
                  var_11 = *(int *)(var_3 + -0x7ed8);
LAB_00118f00:
                  var_11 = (*(type_10 *)(var_11 + 0x54))();
                }
                writer.writer.buf.n = writer.writer.buf.n + var_11;
                if (var_16 == 1) goto LAB_00118e60;
                var_11 = *(int *)(var_3 + -0x7ef0);
LAB_00118f30:
                var_11 = (*(type_10 *)(var_11 + 0x28c4))(var_10 + var_12,&var_17,&bDummy);
                var_20 = var_10;
                var_11 = var_11 + var_17;
                if (var_8 < writer.writer.buf.n + writer.writer.pgidx.n + var_11) {
                  var_19 = 0;
                  do {
                    var_18 = p->rc;
                    if (var_18 != 0) goto LAB_00118f9c;
                    var_21 = var_11 - var_19;
                    var_23 = var_20 + var_19 + var_12;
                    var_18 = (var_8 - writer.writer.buf.n) - writer.writer.pgidx.n;
                    if (var_18 < var_21) {
                      var_22 = (*pcVar29)(var_23,&dummy);
                      var_21 = var_22;
                      if (var_22 < var_18) {
                        do {
                          var_22 = var_21;
                          var_24 = (*pcVar29)(var_23 + var_22,&dummy);
                          var_21 = var_22 + var_24;
                        } while (var_22 + var_24 <= var_18);
                      }
                      var_19 = var_19 + var_22;
                      (**(type_10 **)(var_3 + -0x7b80))
                                (writer.writer.buf.p + writer.writer.buf.n,var_23,var_22);
                      writer.writer.buf.n = var_22 + writer.writer.buf.n;
                      if (var_8 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00118ff8;
                    }
                    else {
                      (**(type_10 **)(var_3 + -0x7b80))
                                (writer.writer.buf.p + writer.writer.buf.n,var_23,var_21);
                      writer.writer.buf.n = var_21 + writer.writer.buf.n;
                      var_19 = var_11;
                      if (writer.writer.buf.n + writer.writer.pgidx.n < var_8) break;
LAB_00118ff8:
                      (*var_38)(p,&writer);
                    }
                  } while (var_19 < var_11);
                  var_18 = p->rc;
                  var_11 = var_12 + var_11;
                }
                else {
                  (**(type_10 **)(var_3 + -0x7b80))
                            (writer.writer.buf.p + writer.writer.buf.n,var_10 + var_12,var_11);
                  var_18 = p->rc;
                  writer.writer.buf.n = writer.writer.buf.n + var_11;
LAB_00118f9c:
                  var_11 = var_12 + var_11;
                }
              }
              else {
                writer.writer.buf.p[1] = (type_2)writer.writer.buf.n;
                *writer.writer.buf.p = (type_2)((type_9)writer.writer.buf.n >> 8);
                if (var_15 == 0) {
                  var_11 = *(int *)(var_3 + -0x7ed8);
                  if (0x7f < var_14) goto LAB_00118e00;
                  writer.writer.buf.p[writer.writer.buf.n] = (type_2)var_14;
                  var_11 = 1;
                }
                else {
                  var_11 = *(int *)(var_3 + -0x7ed8);
LAB_00118e00:
                  var_11 = (*(type_10 *)(var_11 + 0x54))
                                     (writer.writer.buf.p + writer.writer.buf.n,var_15,var_15,
                                      var_14);
                }
                writer.writer.buf.n = writer.writer.buf.n + var_11;
                writer.bFirstRowidInPage = '\0';
                var_25(p,&writer,var_26(var_3,in_stack_fffffefc));
                if (p->rc != 0) goto LAB_00118afc;
                var_11 = *(int *)(var_3 + -0x7ef0);
                if (var_16 != 1) goto LAB_00118f30;
LAB_00118e60:
                var_11 = var_12;
                var_18 = writer.writer.buf.n;
                if ((var_12 < var_7) && (var_10[var_12] == '\0')) {
                  var_18 = writer.writer.buf.n + 1;
                  var_11 = var_12 + 1;
                  writer.writer.buf.p[writer.writer.buf.n] = '\0';
                  if ((var_11 < var_7) && (var_10[var_11] == '\0')) {
                    var_11 = var_12 + 2;
                    writer.writer.buf.p[var_18] = '\0';
                    var_18 = writer.writer.buf.n + 2;
                  }
                }
                writer.writer.buf.n = var_18;
                if (var_8 <= writer.writer.buf.n + writer.writer.pgidx.n) {
                  (*var_38)(p,&writer);
                }
                var_18 = p->rc;
              }
              if (var_18 != 0) goto LAB_00118afc;
              bVar1 = var_11 < var_7;
              var_13 = var_14;
            }
          }
          var_27 = pFVar15->pScan->pScanNext;
          pFVar15->pScan = var_27;
          var_11 = *(int *)(var_3 + -0x7ed8);
        } while ((p->rc == 0) && (var_27 != (type_5 *)0x0));
      }
      else {
LAB_00118afc:
        var_11 = *(int *)(var_3 + -0x7ed8);
      }
      pFVar19 = (type_1 *)&p->rc;
      (*(type_10 *)(var_11 + -0x3294))(pFVar15);
      p_00 = p;
      var_28(p,&writer,&var_29);
      if (var_36->nLevel == 0) {
        var_16 = p->rc;
        if (var_16 == 0) {
          p_00 = pFVar19;
          (*(type_10 *)(*(int *)(var_3 + -0x7e94) + -0x7650))(pFVar19,&var_36);
          goto LAB_00118b60;
        }
      }
      else {
LAB_00118b60:
        var_16 = p->rc;
        if (var_16 == 0) {
          (*(type_10 *)(*(int *)(var_3 + -0x7e94) + 0xad0))(pFVar19,var_36,0,0);
          var_16 = p->rc;
          p_00 = pFVar19;
          if (var_16 == 0) {
            p_00 = (type_1 *)var_36->aLevel[0].nSeg;
            var_36->aLevel[0].nSeg = (int)((int)&p_00->pConfig + 1);
            pFVar8 = var_36->aLevel[0].aSeg + (int)p_00;
            pFVar8->iSegid = var_4;
            pFVar8->pgnoFirst = 1;
            pFVar8->var_29 = var_29;
            var_36->nSegment = var_36->nSegment + 1;
            var_16 = p->rc;
            if (var_16 == 0) {
              p_00 = p;
              (*(type_10 *)(*(int *)(var_3 + -0x7e94) + 0xc48))(p,0,var_36);
              goto LAB_00118c00;
            }
          }
        }
      }
    }
  }
  else {
LAB_00118864:
    (*(type_10 *)(*(int *)(var_3 + -0x7ef0) + 0x1a0))();
    var_16 = p->rc;
  }
  pFVar4 = var_36;
  pFVar16 = p->pConfig;
  if ((var_16 == 0) && (p_00 = (type_1 *)pFVar16->nAutomerge, 0 < (int)p_00)) {
    var_8 = (int)var_36->nWriteCounter;
    var_5 = *(int *)&var_36->nWriteCounter;
    var_16 = p->nWorkUnit;
    var_14 = var_29 + var_8;
    *(type_9 *)((int)&var_36->nWriteCounter + 4) = var_14;
    var_4 = (type_9)(var_14 < (type_9)var_29) + (var_29 >> 0x1f) + var_5;
    *(int *)&var_36->nWriteCounter = var_4;
    var_6 = p->pConfig->nAutomerge;
    var_30(var_4,var_14,var_16 >> 0x1f,var_16);
    var_30(var_5,var_8,var_16 >> 0x1f,var_16);
    p_00 = p;
    var_31(p,&var_36,(var_32 - var_33) * p->nWorkUnit * pFVar4->nLevel,var_6)
    ;
    pFVar16 = p->pConfig;
    var_16 = p->rc;
  }
  var_5 = 0;
  var_8 = *(int *)(var_3 + -0x7e94);
  var_4 = pFVar16->nCrisisMerge;
  writer.iSegid = (int)var_36;
  while (pFVar4 = (type_3 *)writer.iSegid, var_16 == 0) {
    while( true ) {
      if (*(int *)(writer.iSegid + var_5 * 0xc + 0x1c) < var_4) {
        var_36 = (type_3 *)writer.iSegid;
        var_34(p,(type_3 *)writer.iSegid);
        p_00 = p;
        pFVar4 = var_36;
        goto LAB_00118924;
      }
      p_00 = p;
      var_35(p,(type_3 **)&writer,var_5,(int *)0x0);
      var_5 = var_5 + 1;
      var_16 = p->rc;
      if (var_16 != 0) break;
      p_00 = p;
      (*(type_10 *)(var_8 + 0xc48))(p,var_5);
      pFVar4 = (type_3 *)writer.iSegid;
      if (p->rc != 0) goto LAB_00118924;
    }
  }
LAB_00118924:
  var_36 = pFVar4;
  if ((var_36 != (type_3 *)0x0) &&
     (var_4 = var_36->nRef + -1, var_36->nRef = var_4, var_4 < 1)) {
    p_00 = (type_1 *)var_36;
    (*(type_10 *)(*(int *)(var_3 + -0x7ef0) + 0x124))();
  }
  if (var_37 == *piVar5) {
    return;
  }
  var_38 = *(type_10 **)(var_3 + -0x7ba0);
  (*var_38)();
  (**(type_10 **)(var_38 + 0x42590))(p_00->pConfig->db);
  if (p_00->nWorkUnit != 0) {
    var_37 = var_39((type_14 *)p_00);
    p_00->nWorkUnit = 0;
    if (var_37 != 0) goto LAB_00119204;
  }
  pFVar19 = (type_1 *)p_00->zDataTbl;
  if (pFVar19->nPendingData != 0) {
    pFVar19->nPendingData = 0;
    function_1(pFVar19);
  }
  pcVar29 = *(type_10 **)(var_38 + 0x42708);
  if (pFVar19->pReader != (type_15 *)0x0) {
    pFVar19->pReader = (type_15 *)0x0;
    (*pcVar29)();
  }
  pFVar19->rc = 0;
LAB_00119204:
  (**(type_10 **)(var_38 + 0x42778))(p_00->pConfig->db);
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) 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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (primitive_type) 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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (array_declarator declarator: (identifier) size: (number_literal)))) (declaration type: (type_identifier) declarator: (pointer_declarator 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)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (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: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (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)))))) 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: (subscript_expression argument: (identifier) index: (number_literal)))))) alternative: (else_clause (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: (pointer_expression argument: (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list (identifier) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list (identifier) (number_literal) (number_literal) (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (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 (assignment_expression left: (identifier) right: (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: (identifier) right: (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: (identifier) right: (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: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (break_statement))) alternative: (else_clause (compound_statement (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) (while_statement condition: (parenthesized_expression (identifier)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (identifier)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (pointer_expression argument: (identifier)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier))))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (binary_expression left: (identifier) right: (identifier)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (identifier) (identifier) (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (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: (identifier))))) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (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: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (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: (identifier))))) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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: (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))))))) (expression_statement (assignment_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))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (break_statement)))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (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 (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier))))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier) (identifier) (number_literal) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (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 (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list (identifier) (number_literal) (identifier)))) (goto_statement label: (statement_identifier))))))))))))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal)) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (subscript_expression argument: (identifier) index: (number_literal))) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (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: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))) body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (subscript_expression argument: (identifier) index: (number_literal)) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (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: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (comma_expression left: (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list))))) (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: (identifier))))) consequence: (compound_statement (return_statement (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (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: (subscript_expression argument: (identifier) index: (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 (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 (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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 (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: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))))) (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: (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))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))))) (return_statement (identifier)))))

int MASKED(int *param_1)

{
  bool bVar1;
  undefined *puVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  code *pcVar6;
  code *pcVar7;
  code *pcVar8;
  undefined4 uVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  int extraout_v1;
  int extraout_v1_00;
  int iVar15;
  int *piVar16;
  uint uVar17;
  code *pcVar18;
  int iVar19;
  int iVar20;
  int iVar21;
  undefined4 uVar22;
  int iVar23;
  int iVar24;
  undefined *puVar25;
  int local_fc;
  uint local_f4;
  int *local_b8;
  uint local_b4;
  undefined4 local_b0;
  int local_ac;
  int local_a8;
  undefined1 auStack_a4 [4];
  int local_a0;
  undefined1 auStack_9c [4];
  int local_98;
  uint local_94;
  int *local_90 [3];
  undefined1 *local_84;
  int local_80;
  int local_74;
  char local_57;
  int local_2c;
  
  puVar25 = PTR___stack_chk_guard_0015ba2c;
  piVar16 = param_1 + 0x14;
  local_b4 = 0;
  iVar13 = param_1[3];
  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;
  local_b8 = (int *)FUN_001137dc();
  if (param_1[9] == 0) {
    if (1999 < local_b8[4]) {
      param_1[9] = 0xd;
      goto LAB_00118864;
    }
    iVar14 = (*(code *)(PTR_LAB_0015b6c0 + 0x444))(local_b8);
    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();
    if (iVar14 == 0) {
LAB_00118c00:
      iVar13 = param_1[9];
    }
    else {
      iVar19 = *(int *)(*param_1 + 0x44);
      iVar20 = *(int *)(*param_1 + 0x30);
      (*(code *)(PTR_DAT_0015b880 + 0x7a50))(param_1,local_90,iVar14);
      if (param_1[9] == 0) {
        iVar5 = (*(code *)(PTR_LAB_0015b700 + 0x2fcc))(iVar13,0,0,iVar13 + 0x10);
        param_1[9] = iVar5;
        puVar2 = PTR_LAB_0015b65c;
        if ((iVar5 == 0) && (*(int *)(iVar13 + 0x10) != 0)) {
          pcVar18 = (code *)(PTR_LAB_0015b6c0 + 0x3d7c);
          pcVar6 = (code *)(PTR_LAB_0015b6d0 + 0x2384);
          pcVar7 = (code *)(PTR_LAB_0015b6d0 + 0x19d0);
          pcVar8 = (code *)(PTR_LAB_0015b6c0 + 0x27e0);
          while( true ) {
            (*pcVar18)(iVar13,&local_b0,&local_ac,&local_a8);
            uVar22 = local_b0;
            uVar9 = (*(code *)PTR_strlen_0015b9c4)(local_b0);
            (*pcVar6)(param_1,local_90,uVar9,uVar22);
            if (param_1[9] != 0) break;
            if (local_80 + local_74 + local_a8 < iVar19) {
              (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac);
              local_80 = local_80 + local_a8;
              if (param_1[9] != 0) break;
            }
            else {
              local_fc = 0;
              local_f4 = 0;
              local_98 = 0;
              iVar5 = 0;
              local_94 = 0;
              bVar1 = 0 < local_a8;
              while (bVar1) {
                iVar10 = (*(code *)(puVar2 + -0x2a88))(local_ac + iVar5,&local_98);
                iVar10 = iVar5 + iVar10;
                uVar17 = local_f4 + local_94;
                local_fc = (uint)(uVar17 < local_f4) + local_fc + local_98;
                if (local_57 == '\0') {
                  if ((local_98 == 0) && (local_94 < 0x80)) {
                    local_84[local_80] = (char)local_94;
                    iVar5 = 1;
                  }
                  else {
                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))();
                  }
                  local_80 = local_80 + iVar5;
                  if (iVar20 == 1) goto LAB_00118e60;
LAB_00118f30:
                  iVar5 = (*(code *)(PTR_LAB_0015b6c0 + 0x28c4))
                                    (local_ac + iVar10,&local_a0,auStack_a4);
                  iVar3 = local_ac;
                  iVar5 = iVar5 + local_a0;
                  if (iVar19 < local_80 + local_74 + iVar5) {
                    iVar23 = 0;
                    do {
                      iVar15 = param_1[9];
                      if (iVar15 != 0) goto LAB_00118f9c;
                      iVar24 = iVar5 - iVar23;
                      iVar15 = iVar3 + iVar23 + iVar10;
                      iVar21 = (iVar19 - local_80) - local_74;
                      if (iVar21 < iVar24) {
                        iVar11 = (*pcVar8)(iVar15,auStack_9c);
                        iVar24 = iVar11;
                        if (iVar11 < iVar21) {
                          do {
                            iVar11 = iVar24;
                            iVar12 = (*pcVar8)(iVar15 + iVar11,auStack_9c);
                            iVar24 = iVar11 + iVar12;
                          } while (iVar11 + iVar12 <= iVar21);
                        }
                        iVar23 = iVar23 + iVar11;
                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar11);
                        local_80 = iVar11 + local_80;
                        if (iVar19 <= local_80 + local_74) goto LAB_00118ff8;
                      }
                      else {
                        (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,iVar15,iVar24);
                        local_80 = iVar24 + local_80;
                        iVar23 = iVar5;
                        if (local_80 + local_74 < iVar19) break;
LAB_00118ff8:
                        (*pcVar7)(param_1,local_90);
                      }
                    } while (iVar23 < iVar5);
                    iVar15 = param_1[9];
                    iVar5 = iVar10 + iVar5;
                  }
                  else {
                    (*(code *)PTR_memcpy_0015ba30)(local_84 + local_80,local_ac + iVar10,iVar5);
                    iVar15 = param_1[9];
                    local_80 = local_80 + iVar5;
LAB_00118f9c:
                    iVar5 = iVar10 + iVar5;
                  }
                }
                else {
                  local_84[1] = (char)local_80;
                  *local_84 = (char)((uint)local_80 >> 8);
                  if ((local_fc == 0) && (uVar17 < 0x80)) {
                    local_84[local_80] = (char)uVar17;
                    iVar5 = 1;
                  }
                  else {
                    iVar5 = (*(code *)(PTR_LAB_0015b6d8 + 0x54))
                                      (local_84 + local_80,local_fc,local_fc,uVar17);
                  }
                  local_80 = local_80 + iVar5;
                  local_57 = '\0';
                  FUN_00101668(param_1,local_90,local_fc,uVar17);
                  if (param_1[9] != 0) goto LAB_00118b04;
                  if (iVar20 != 1) goto LAB_00118f30;
LAB_00118e60:
                  iVar5 = iVar10;
                  iVar15 = local_80;
                  if ((iVar10 < local_a8) && (*(char *)(local_ac + iVar10) == '\0')) {
                    iVar15 = local_80 + 1;
                    iVar5 = iVar10 + 1;
                    local_84[local_80] = 0;
                    if ((iVar5 < local_a8) && (*(char *)(local_ac + iVar5) == '\0')) {
                      iVar5 = iVar10 + 2;
                      local_84[iVar15] = 0;
                      iVar15 = local_80 + 2;
                    }
                  }
                  local_80 = iVar15;
                  if (iVar19 <= local_80 + local_74) {
                    (*pcVar7)(param_1,local_90);
                  }
                  iVar15 = param_1[9];
                }
                if (iVar15 != 0) goto LAB_00118b04;
                bVar1 = iVar5 < local_a8;
                local_f4 = uVar17;
              }
            }
            iVar5 = *(int *)(*(int *)(iVar13 + 0x10) + 4);
            *(int *)(iVar13 + 0x10) = iVar5;
            if ((param_1[9] != 0) || (iVar5 == 0)) break;
          }
        }
      }
LAB_00118b04:
      piVar4 = param_1 + 9;
      (*(code *)(PTR_LAB_0015b6d8 + -0x3294))(iVar13);
      piVar16 = param_1;
      FUN_00102720(param_1,local_90,&local_b4);
      if (local_b8[5] == 0) {
        iVar13 = param_1[9];
        if (iVar13 == 0) {
          piVar16 = piVar4;
          (*(code *)(PTR_DAT_0015b71c + -0x7650))(piVar4,&local_b8);
          goto LAB_00118b60;
        }
      }
      else {
LAB_00118b60:
        iVar13 = param_1[9];
        if (iVar13 == 0) {
          (*(code *)(PTR_DAT_0015b71c + 0xad0))(piVar4,local_b8,0,0);
          iVar13 = param_1[9];
          piVar16 = piVar4;
          if (iVar13 == 0) {
            piVar16 = (int *)local_b8[7];
            local_b8[7] = (int)piVar16 + 1;
            piVar4 = (int *)(local_b8[8] + (int)piVar16 * 0xc);
            *piVar4 = iVar14;
            piVar4[1] = 1;
            piVar4[2] = local_b4;
            local_b8[4] = local_b8[4] + 1;
            iVar13 = param_1[9];
            if (iVar13 == 0) {
              piVar16 = param_1;
              (*(code *)(PTR_DAT_0015b71c + 0xc48))(param_1,0,local_b8);
              goto LAB_00118c00;
            }
          }
        }
      }
    }
  }
  else {
LAB_00118864:
    (*(code *)(PTR_LAB_0015b6c0 + 0x1a0))();
    iVar13 = param_1[9];
  }
  piVar4 = local_b8;
  iVar14 = *param_1;
  if ((iVar13 == 0) && (piVar16 = *(int **)(iVar14 + 0x48), 0 < (int)piVar16)) {
    iVar20 = local_b8[3];
    iVar19 = local_b8[2];
    iVar14 = param_1[2];
    uVar17 = local_b4 + iVar20;
    local_b8[3] = uVar17;
    iVar13 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar19;
    local_b8[2] = iVar13;
    uVar22 = *(undefined4 *)(*param_1 + 0x48);
    FUN_00134480(iVar13,uVar17,iVar14 >> 0x1f,iVar14);
    FUN_00134480(iVar19,iVar20,iVar14 >> 0x1f,iVar14);
    piVar16 = param_1;
    FUN_00118610(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar4[5],uVar22);
    iVar14 = *param_1;
    iVar13 = param_1[9];
  }
  iVar20 = 0;
  iVar14 = *(int *)(iVar14 + 0x4c);
  pcVar18 = (code *)(PTR_DAT_0015b71c + 0xc48);
  local_90[0] = local_b8;
  while (piVar4 = local_90[0], iVar13 == 0) {
    while( true ) {
      if (local_90[0][iVar20 * 3 + 7] < iVar14) {
        local_b8 = local_90[0];
        FUN_00101d04(param_1,local_90[0],local_90[0],0);
        piVar16 = param_1;
        piVar4 = local_b8;
        goto LAB_00118924;
      }
      piVar16 = param_1;
      FUN_00117a5c(param_1,local_90,iVar20);
      iVar20 = iVar20 + 1;
      iVar13 = param_1[9];
      if (iVar13 != 0) break;
      piVar16 = param_1;
      (*pcVar18)(param_1,iVar20);
      piVar4 = local_90[0];
      if (param_1[9] != 0) goto LAB_00118924;
    }
  }
LAB_00118924:
  local_b8 = piVar4;
  if ((local_b8 != (int *)0x0) && (iVar13 = *local_b8, *local_b8 = iVar13 + -1, iVar13 + -1 < 1)) {
    piVar16 = local_b8;
    (*(code *)(PTR_LAB_0015b6c0 + 0x124))();
  }
  if (local_2c == *(int *)puVar25) {
    return *(int *)puVar25;
  }
  puVar25 = PTR___stack_chk_fail_0015ba10;
  (*(code *)PTR___stack_chk_fail_0015ba10)();
  (**(code **)(puVar25 + 0x42590))(*(undefined4 *)*piVar16);
  if (piVar16[2] != 0) {
    iVar13 = FUN_00101508(piVar16);
    piVar16[2] = 0;
    if (iVar13 != 0) goto LAB_00119204;
  }
  iVar14 = piVar16[1];
  if (*(int *)(iVar14 + 0x10) != 0) {
    *(undefined4 *)(iVar14 + 0x10) = 0;
    MASKED(iVar14);
  }
  pcVar18 = *(code **)(puVar25 + 0x42708);
  if (*(int *)(iVar14 + 0x28) != 0) {
    *(undefined4 *)(iVar14 + 0x28) = 0;
    (*pcVar18)();
  }
  iVar13 = *(int *)(iVar14 + 0x24);
  *(undefined4 *)(iVar14 + 0x24) = 0;
LAB_00119204:
  (**(code **)(puVar25 + 0x42778))(*(undefined4 *)*piVar16);
  return iVar13;
}

