
void fts5FlushOneHash(Fts5Index *p)

{
  bool bVar1;
  undefined *puVar2;
  char *pcVar3;
  u8 *puVar4;
  Fts5Structure *pFVar5;
  int iVar6;
  int iVar7;
  Fts5StructureSegment *pFVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  Fts5HashEntry *pFVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  Fts5Hash *pFVar17;
  Fts5Config *pFVar18;
  int extraout_v1;
  int extraout_v1_00;
  int iVar19;
  sqlite3 *psVar20;
  Fts5Index *pFVar21;
  sqlite3_mutex *psVar22;
  uint uVar23;
  Fts5Index *pFVar24;
  int iVar25;
  undefined4 uVar26;
  int iVar27;
  u8 *puVar28;
  undefined4 uVar29;
  int iVar30;
  int iVar31;
  int iVar32;
  int iVar33;
  code *pcVar34;
  code *pcVar35;
  undefined1 *bInsert;
  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;
  
  puVar2 = PTR___stack_chk_guard_00190e24;
  bInsert = &_gp;
  pFVar21 = (Fts5Index *)&p->pStruct;
  pgnoLast = 0;
  pFVar17 = p->pHash;
  iVar6 = *(int *)PTR___stack_chk_guard_00190e24;
  pStruct = fts5StructureRead(p);
  if (p->rc == 0) {
    if (1999 < pStruct->nSegment) {
      p->rc = 0xd;
      goto LAB_00157de0;
    }
    iVar25 = (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3b44))(pStruct);
    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))();
    if (iVar25 == 0) {
LAB_0015817c:
      iVar7 = p->rc;
    }
    else {
      iVar30 = p->pConfig->pgsz;
      iVar7 = p->pConfig->eDetail;
      (*(code *)(*(int *)(bInsert + -0x7cbc) + 0xf64))(p,&writer,iVar25);
      if (p->rc == 0) {
        iVar27 = (*(code *)(*(int *)(bInsert + -0x7d68) + 0x71a8))(pFVar17,0,0,&pFVar17->pScan);
        p->rc = iVar27;
        if ((iVar27 != 0) ||
           (iVar27 = *(int *)(bInsert + -0x7d7c), pFVar17->pScan == (Fts5HashEntry *)0x0))
        goto LAB_00158078;
        iVar31 = *(int *)(bInsert + -0x7d70);
        iVar9 = *(int *)(bInsert + -0x7de0);
        iVar10 = *(int *)(bInsert + -0x7d70);
        iVar11 = *(int *)(bInsert + -0x7d7c);
        do {
          (*(code *)(iVar27 + 0x76a8))(pFVar17,&zTerm,&pDoclist,&nDoclist);
          pcVar3 = zTerm;
          uVar26 = (**(code **)(bInsert + -0x7ba0))(zTerm);
          (*(code *)(iVar31 + -0x5434))(p,&writer,uVar26,pcVar3);
          if (p->rc != 0) goto LAB_00158078;
          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar30) {
            (**(code **)(bInsert + -0x7af4))(writer.writer.buf.p + writer.writer.buf.n,pDoclist);
            writer.writer.buf.n = writer.writer.buf.n + nDoclist;
            if (p->rc != 0) goto LAB_00158078;
          }
          else {
            iStack_fc = 0;
            uStack_f4 = 0;
            iDelta._0_4_ = 0;
            iVar33 = 0;
            iDelta._4_4_ = 0;
            bVar1 = 0 < nDoclist;
            while (bVar1) {
              iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta);
              iVar13 = iVar33 + iVar13;
              uVar23 = uStack_f4 + iDelta._4_4_;
              iStack_fc = (uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_;
              if (writer.bFirstRowidInPage == '\0') {
                if (iDelta._0_4_ == 0) {
                  iVar33 = *(int *)(bInsert + -0x7d78);
                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;
                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;
                  iVar33 = 1;
                }
                else {
                  iVar33 = *(int *)(bInsert + -0x7d78);
LAB_0015847c:
                  iVar33 = (*(code *)(iVar33 + 0x3284))();
                }
                writer.writer.buf.n = writer.writer.buf.n + iVar33;
                if (iVar7 != 1) {
                  iVar33 = *(int *)(bInsert + -0x7d7c);
                  goto LAB_001584ac;
                }
LAB_001583dc:
                iVar33 = iVar13;
                iVar19 = writer.writer.buf.n;
                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {
                  iVar19 = writer.writer.buf.n + 1;
                  iVar33 = iVar13 + 1;
                  writer.writer.buf.p[writer.writer.buf.n] = '\0';
                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {
                    iVar33 = iVar13 + 2;
                    writer.writer.buf.p[iVar19] = '\0';
                    iVar19 = writer.writer.buf.n + 2;
                  }
                }
                writer.writer.buf.n = iVar19;
                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {
                  (*(code *)(iVar10 + -0x5df0))(p,&writer);
                }
                iVar14 = p->rc;
              }
              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) {
                  iVar33 = *(int *)(bInsert + -0x7d78);
                  if (0x7f < uVar23) goto LAB_0015837c;
                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;
                  iVar33 = 1;
                }
                else {
                  iVar33 = *(int *)(bInsert + -0x7d78);
LAB_0015837c:
                  iVar33 = (*(code *)(iVar33 + 0x3284))
                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,
                                      uVar23);
                }
                writer.writer.buf.n = writer.writer.buf.n + iVar33;
                writer.bFirstRowidInPage = '\0';
                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);
                if (p->rc != 0) goto LAB_00158078;
                iVar33 = *(int *)(bInsert + -0x7d7c);
                if (iVar7 == 1) goto LAB_001583dc;
LAB_001584ac:
                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);
                puVar4 = pDoclist;
                iVar33 = iVar33 + nPos;
                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {
                  iVar19 = 0;
                  do {
                    iVar14 = p->rc;
                    if (iVar14 != 0) goto LAB_00158518;
                    iVar32 = iVar33 - iVar19;
                    puVar28 = puVar4 + iVar19 + iVar13;
                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;
                    if (iVar14 < iVar32) {
                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);
                      iVar32 = iVar15;
                      if (iVar15 < iVar14) {
                        do {
                          iVar15 = iVar32;
                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);
                          iVar32 = iVar15 + iVar16;
                        } while (iVar15 + iVar16 <= iVar14);
                      }
                      iVar19 = iVar19 + iVar15;
                      (**(code **)(bInsert + -0x7af4))
                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);
                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;
                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;
                    }
                    else {
                      (**(code **)(bInsert + -0x7af4))
                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);
                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;
                      iVar19 = iVar33;
                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;
LAB_00158574:
                      (*(code *)(iVar10 + -0x5df0))(p,&writer);
                    }
                  } while (iVar19 < iVar33);
                  iVar14 = p->rc;
                  iVar33 = iVar13 + iVar33;
                }
                else {
                  (**(code **)(bInsert + -0x7af4))
                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);
                  iVar14 = p->rc;
                  writer.writer.buf.n = writer.writer.buf.n + iVar33;
LAB_00158518:
                  iVar33 = iVar13 + iVar33;
                }
              }
              if (iVar14 != 0) goto LAB_00158078;
              bVar1 = iVar33 < nDoclist;
              uStack_f4 = uVar23;
            }
          }
          pFVar12 = pFVar17->pScan->pScanNext;
          pFVar17->pScan = pFVar12;
          iVar33 = *(int *)(bInsert + -0x7d78);
        } while ((p->rc == 0) && (pFVar12 != (Fts5HashEntry *)0x0));
      }
      else {
LAB_00158078:
        iVar33 = *(int *)(bInsert + -0x7d78);
      }
      pFVar24 = (Fts5Index *)&p->rc;
      (*(code *)(iVar33 + 0xe8))(pFVar17);
      pFVar21 = p;
      (*(code *)(*(int *)(bInsert + -0x7d70) + -0x5098))(p,&writer,&pgnoLast);
      if (pStruct->nLevel == 0) {
        iVar7 = p->rc;
        if (iVar7 == 0) {
          pFVar21 = pFVar24;
          (*(code *)(*(int *)(bInsert + -0x7cf4) + -0x1080))(pFVar24,&pStruct);
          goto LAB_001580dc;
        }
      }
      else {
LAB_001580dc:
        iVar7 = p->rc;
        if (iVar7 == 0) {
          fts5StructureExtendLevel((int *)pFVar24,pStruct,0,0,(int)bInsert);
          iVar7 = p->rc;
          pFVar21 = pFVar24;
          if (iVar7 == 0) {
            pFVar21 = (Fts5Index *)pStruct->aLevel[0].nSeg;
            pStruct->aLevel[0].nSeg = (int)((int)&pFVar21->pConfig + 1);
            pFVar8 = pStruct->aLevel[0].aSeg + (int)pFVar21;
            pFVar8->iSegid = iVar25;
            pFVar8->pgnoFirst = 1;
            pFVar8->pgnoLast = pgnoLast;
            pStruct->nSegment = pStruct->nSegment + 1;
            iVar7 = p->rc;
            if (iVar7 == 0) {
              pFVar21 = p;
              fts5StructurePromote(p,0,pStruct);
              goto LAB_0015817c;
            }
          }
        }
      }
    }
  }
  else {
LAB_00157de0:
    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))();
    iVar7 = p->rc;
  }
  pFVar5 = pStruct;
  pFVar18 = p->pConfig;
  if ((iVar7 == 0) && (pFVar21 = (Fts5Index *)pFVar18->nAutomerge, 0 < (int)pFVar21)) {
    iVar30 = (int)pStruct->nWriteCounter;
    iVar27 = *(int *)&pStruct->nWriteCounter;
    iVar7 = p->nWorkUnit;
    uVar23 = pgnoLast + iVar30;
    *(uint *)((int)&pStruct->nWriteCounter + 4) = uVar23;
    iVar25 = (uint)(uVar23 < (uint)pgnoLast) + (pgnoLast >> 0x1f) + iVar27;
    *(int *)&pStruct->nWriteCounter = iVar25;
    iVar31 = p->pConfig->nAutomerge;
    __udivdi3(iVar25,uVar23,iVar7 >> 0x1f,iVar7);
    __udivdi3(iVar27,iVar30,iVar7 >> 0x1f,iVar7);
    pFVar21 = p;
    fts5IndexMerge(p,&pStruct,(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar5->nLevel,iVar31)
    ;
    pFVar18 = p->pConfig;
    iVar7 = p->rc;
  }
  iVar30 = 0;
  iVar25 = pFVar18->nCrisisMerge;
  writer.iSegid = (int)pStruct;
  while (pFVar5 = (Fts5Structure *)writer.iSegid, iVar7 == 0) {
    while( true ) {
      if (*(int *)(writer.iSegid + iVar30 * 0xc + 0x1c) < iVar25) {
        pStruct = (Fts5Structure *)writer.iSegid;
        (*(code *)(*(int *)(bInsert + -0x7d70) + -0x5abc))(p,writer.iSegid);
        pFVar21 = p;
        pFVar5 = pStruct;
        goto LAB_00157ea0;
      }
      pFVar21 = p;
      fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar30,(int *)0x0);
      iVar30 = iVar30 + 1;
      iVar7 = p->rc;
      if (iVar7 != 0) break;
      pFVar21 = p;
      fts5StructurePromote(p,iVar30,(Fts5Structure *)writer.iSegid);
      pFVar5 = (Fts5Structure *)writer.iSegid;
      if (p->rc != 0) goto LAB_00157ea0;
    }
  }
LAB_00157ea0:
  pStruct = pFVar5;
  if ((pStruct != (Fts5Structure *)0x0) &&
     (iVar25 = pStruct->nRef + -1, pStruct->nRef = iVar25, iVar25 < 1)) {
    pFVar21 = (Fts5Index *)pStruct;
    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x380c))();
  }
  if (iVar6 == *(int *)puVar2) {
    return;
  }
  pcVar34 = *(code **)(bInsert + -0x7b28);
  (*pcVar34)();
  psVar20 = pFVar21->pConfig->db;
  uVar29 = (undefined4)psVar20->lastRowid;
  uVar26 = *(undefined4 *)&psVar20->lastRowid;
  if (pFVar21->nWorkUnit != 0) {
    iVar6 = (*(code *)(*(int *)(pcVar34 + 0x384d4) + -0x62b8))();
    pFVar21->nWorkUnit = 0;
    if (iVar6 != 0) {
      psVar20 = pFVar21->pConfig->db;
      psVar22 = psVar20->mutex;
      iVar6 = *(int *)(pcVar34 + 0x3826c);
      goto joined_r0x001587e4;
    }
  }
  pFVar24 = (Fts5Index *)pFVar21->zDataTbl;
  if (pFVar24->nPendingData != 0) {
    pFVar24->nPendingData = 0;
    fts5FlushOneHash(pFVar24);
  }
  pcVar35 = *(code **)(pcVar34 + 0x38578);
  if (pFVar24->pReader != (sqlite3_blob *)0x0) {
    pFVar24->pReader = (sqlite3_blob *)0x0;
    (*pcVar35)();
  }
  pFVar24->rc = 0;
  psVar20 = pFVar21->pConfig->db;
  psVar22 = psVar20->mutex;
  iVar6 = *(int *)(pcVar34 + 0x3826c);
joined_r0x001587e4:
  if (psVar22 == (sqlite3_mutex *)0x0) {
    *(undefined4 *)((int)&psVar20->lastRowid + 4) = uVar29;
    *(undefined4 *)&psVar20->lastRowid = uVar26;
    return;
  }
  (**(code **)(iVar6 + -0xb1c))();
  psVar22 = psVar20->mutex;
  *(undefined4 *)((int)&psVar20->lastRowid + 4) = uVar29;
  *(undefined4 *)&psVar20->lastRowid = uVar26;
  if (psVar22 != (sqlite3_mutex *)0x0) {
    (**(code **)(iVar6 + -0xb14))();
  }
  return;
}



int FUN_00157d5c(int *param_1)

{
  bool bVar1;
  undefined *puVar2;
  int *piVar3;
  int iVar4;
  code *pcVar5;
  code *pcVar6;
  code *pcVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int extraout_v1;
  int extraout_v1_00;
  int iVar14;
  int *piVar15;
  int iVar16;
  uint uVar17;
  undefined4 uVar18;
  undefined4 uVar19;
  int iVar20;
  int iVar21;
  int iVar22;
  int iVar23;
  undefined *puVar24;
  code *pcVar25;
  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;
  
  puVar24 = PTR___stack_chk_guard_00190e24;
  piVar15 = param_1 + 0x14;
  local_b4 = 0;
  iVar12 = param_1[3];
  local_2c = *(int *)PTR___stack_chk_guard_00190e24;
  local_b8 = (int *)FUN_0013c448();
  if (param_1[9] == 0) {
    if (1999 < local_b8[4]) {
      param_1[9] = 0xd;
      goto LAB_00157de0;
    }
    iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8);
    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();
    if (iVar13 == 0) {
LAB_0015817c:
      iVar12 = param_1[9];
    }
    else {
      iVar16 = *(int *)(*param_1 + 0x44);
      iVar20 = *(int *)(*param_1 + 0x30);
      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);
      if (param_1[9] == 0) {
        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);
        param_1[9] = iVar4;
        puVar2 = PTR_LAB_00190b40;
        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {
          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);
          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);
          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);
          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);
          while( true ) {
            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);
            uVar18 = local_b0;
            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);
            (*pcVar5)(param_1,local_90,uVar19,uVar18);
            if (param_1[9] != 0) break;
            if (local_80 + local_74 + local_a8 < iVar16) {
              (*(code *)PTR_memcpy_00190e2c)(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;
              iVar4 = 0;
              local_94 = 0;
              bVar1 = 0 < local_a8;
              while (bVar1) {
                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);
                iVar8 = iVar4 + iVar8;
                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;
                    iVar4 = 1;
                  }
                  else {
                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();
                  }
                  local_80 = local_80 + iVar4;
                  if (iVar20 != 1) goto LAB_001584ac;
LAB_001583dc:
                  iVar4 = iVar8;
                  iVar14 = local_80;
                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {
                    iVar14 = local_80 + 1;
                    iVar4 = iVar8 + 1;
                    local_84[local_80] = 0;
                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {
                      iVar4 = iVar8 + 2;
                      local_84[iVar14] = 0;
                      iVar14 = local_80 + 2;
                    }
                  }
                  local_80 = iVar14;
                  if (iVar16 <= local_80 + local_74) {
                    (*pcVar6)(param_1,local_90);
                  }
                  iVar9 = param_1[9];
                }
                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;
                    iVar4 = 1;
                  }
                  else {
                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))
                                      (local_84 + local_80,local_fc,local_fc,uVar17);
                  }
                  local_80 = local_80 + iVar4;
                  local_57 = '\0';
                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);
                  if (param_1[9] != 0) goto LAB_00158080;
                  if (iVar20 == 1) goto LAB_001583dc;
LAB_001584ac:
                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))
                                    (local_ac + iVar8,&local_a0,auStack_a4);
                  iVar14 = local_ac;
                  iVar4 = iVar4 + local_a0;
                  if (iVar16 < local_80 + local_74 + iVar4) {
                    iVar22 = 0;
                    do {
                      iVar9 = param_1[9];
                      if (iVar9 != 0) goto LAB_00158518;
                      iVar23 = iVar4 - iVar22;
                      iVar9 = iVar14 + iVar22 + iVar8;
                      iVar21 = (iVar16 - local_80) - local_74;
                      if (iVar21 < iVar23) {
                        iVar10 = (*pcVar7)(iVar9,auStack_9c);
                        iVar23 = iVar10;
                        if (iVar10 < iVar21) {
                          do {
                            iVar10 = iVar23;
                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);
                            iVar23 = iVar10 + iVar11;
                          } while (iVar10 + iVar11 <= iVar21);
                        }
                        iVar22 = iVar22 + iVar10;
                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);
                        local_80 = iVar10 + local_80;
                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;
                      }
                      else {
                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);
                        local_80 = iVar23 + local_80;
                        iVar22 = iVar4;
                        if (local_80 + local_74 < iVar16) break;
LAB_00158574:
                        (*pcVar6)(param_1,local_90);
                      }
                    } while (iVar22 < iVar4);
                    iVar9 = param_1[9];
                    iVar4 = iVar8 + iVar4;
                  }
                  else {
                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);
                    iVar9 = param_1[9];
                    local_80 = local_80 + iVar4;
LAB_00158518:
                    iVar4 = iVar8 + iVar4;
                  }
                }
                if (iVar9 != 0) goto LAB_00158080;
                bVar1 = iVar4 < local_a8;
                local_f4 = uVar17;
              }
            }
            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);
            *(int *)(iVar12 + 0x10) = iVar4;
            if ((param_1[9] != 0) || (iVar4 == 0)) break;
          }
        }
      }
LAB_00158080:
      piVar3 = param_1 + 9;
      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);
      piVar15 = param_1;
      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);
      if (local_b8[5] == 0) {
        iVar12 = param_1[9];
        if (iVar12 == 0) {
          piVar15 = piVar3;
          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);
          goto LAB_001580dc;
        }
      }
      else {
LAB_001580dc:
        iVar12 = param_1[9];
        if (iVar12 == 0) {
          FUN_00156b10(piVar3,local_b8,0,0);
          iVar12 = param_1[9];
          piVar15 = piVar3;
          if (iVar12 == 0) {
            piVar15 = (int *)local_b8[7];
            local_b8[7] = (int)piVar15 + 1;
            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);
            *piVar3 = iVar13;
            piVar3[1] = 1;
            piVar3[2] = local_b4;
            local_b8[4] = local_b8[4] + 1;
            iVar12 = param_1[9];
            if (iVar12 == 0) {
              piVar15 = param_1;
              FUN_00157888(param_1,0,local_b8);
              goto LAB_0015817c;
            }
          }
        }
      }
    }
  }
  else {
LAB_00157de0:
    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();
    iVar12 = param_1[9];
  }
  piVar3 = local_b8;
  iVar13 = *param_1;
  if ((iVar12 == 0) && (piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15)) {
    iVar20 = local_b8[3];
    iVar16 = local_b8[2];
    iVar13 = param_1[2];
    uVar17 = local_b4 + iVar20;
    local_b8[3] = uVar17;
    iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16;
    local_b8[2] = iVar12;
    uVar18 = *(undefined4 *)(*param_1 + 0x48);
    FUN_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13);
    FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13);
    piVar15 = param_1;
    FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18);
    iVar13 = *param_1;
    iVar12 = param_1[9];
  }
  iVar20 = 0;
  iVar13 = *(int *)(iVar13 + 0x4c);
  local_90[0] = local_b8;
  while (piVar3 = local_90[0], iVar12 == 0) {
    while( true ) {
      if (local_90[0][iVar20 * 3 + 7] < iVar13) {
        local_b8 = local_90[0];
        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);
        piVar15 = param_1;
        piVar3 = local_b8;
        goto LAB_00157ea0;
      }
      piVar15 = param_1;
      FUN_00156cac(param_1,local_90,iVar20);
      iVar20 = iVar20 + 1;
      iVar12 = param_1[9];
      if (iVar12 != 0) break;
      piVar15 = param_1;
      FUN_00157888(param_1,iVar20);
      piVar3 = local_90[0];
      if (param_1[9] != 0) goto LAB_00157ea0;
    }
  }
LAB_00157ea0:
  local_b8 = piVar3;
  if ((local_b8 != (int *)0x0) && (iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1)) {
    piVar15 = local_b8;
    (*(code *)(PTR_LAB_00190ba4 + 0x380c))();
  }
  if (local_2c == *(int *)puVar24) {
    return *(int *)puVar24;
  }
  puVar24 = PTR___stack_chk_fail_00190df8;
  (*(code *)PTR___stack_chk_fail_00190df8)();
  uVar19 = *(undefined4 *)(*(int *)*piVar15 + 0x2c);
  uVar18 = *(undefined4 *)(*(int *)*piVar15 + 0x28);
  if (piVar15[2] != 0) {
    iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))();
    piVar15[2] = 0;
    if (iVar12 != 0) {
      iVar13 = *(int *)*piVar15;
      iVar16 = *(int *)(iVar13 + 0xc);
      iVar20 = *(int *)(puVar24 + 0x3826c);
      goto joined_r0x001587e4;
    }
  }
  iVar13 = piVar15[1];
  if (*(int *)(iVar13 + 0x10) != 0) {
    *(undefined4 *)(iVar13 + 0x10) = 0;
    FUN_00157d5c(iVar13);
  }
  pcVar25 = *(code **)(puVar24 + 0x38578);
  if (*(int *)(iVar13 + 0x28) != 0) {
    *(undefined4 *)(iVar13 + 0x28) = 0;
    (*pcVar25)();
  }
  iVar12 = *(int *)(iVar13 + 0x24);
  *(undefined4 *)(iVar13 + 0x24) = 0;
  iVar13 = *(int *)*piVar15;
  iVar16 = *(int *)(iVar13 + 0xc);
  iVar20 = *(int *)(puVar24 + 0x3826c);
joined_r0x001587e4:
  if (iVar16 == 0) {
    *(undefined4 *)(iVar13 + 0x2c) = uVar19;
    *(undefined4 *)(iVar13 + 0x28) = uVar18;
    return iVar12;
  }
  (**(code **)(iVar20 + -0xb1c))();
  *(undefined4 *)(iVar13 + 0x2c) = uVar19;
  *(undefined4 *)(iVar13 + 0x28) = uVar18;
  if (*(int *)(iVar13 + 0xc) != 0) {
    (**(code **)(iVar20 + -0xb14))();
  }
  return iVar12;
}


lui gp,0x4
addiu gp,gp,0xbc4
addu gp,gp,t9
addiu sp,sp,-0x118
lw v0,-0x7afc(gp)
lw t9,-0x7ce4(gp)
sw gp,0x10(sp)
sw s1,0xf4(sp)
addiu t9,t9,-0x3bb8
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 0x0013c448
_nop
lw v1,0x24(s1)
lw gp,0x10(sp)
beq v1,zero,0x00157fc4
_sw v0,0x60(sp)
or a0,s0,zero
lw t9,-0x7d7c(gp)
addiu t9,t9,0x3894
jalr t9
_nop
lw gp,0x10(sp)
lw v0,0x24(s1)
lw s5,0x60(sp)
beq v0,zero,0x00157ef8
_lw v1,0x0(s1)
lw s0,-0x7d6c(gp)
or s4,zero,zero
lw s3,-0x7d6c(gp)
addiu s6,sp,0x88
lw s2,0x4c(v1)
or a2,s5,zero
addiu s0,s0,0x6cac
sw s5,0x88(sp)
addiu s3,s3,0x7888
bne v0,zero,0x00157e9c
_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,0x00157fe0
_or a3,zero,zero
or a2,s4,zero
or a1,s6,zero
or t9,s0,zero
bal 0x00156cac
_or a0,s1,zero
addiu s4,s4,0x1
lw v0,0x24(s1)
lw gp,0x10(sp)
bne v0,zero,0x00157e28
_lw a2,0x88(sp)
or a1,s4,zero
or t9,s3,zero
bal 0x00157888
_or a0,s1,zero
lw v0,0x24(s1)
lw gp,0x10(sp)
beq v0,zero,0x00157e30
_lw a2,0x88(sp)
or s5,a2,zero
sw a2,0x60(sp)
beq s5,zero,0x00157ebc
_lw v0,0x54(sp)
lw v0,0x0(s5)
addiu v0,v0,-0x1
blez v0,0x00157fac
_sw v0,0x0(s5)
lw v0,0x54(sp)
lw v1,0xec(sp)
lw v0,0x0(v0)
bne v1,v0,0x001586d0
_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,0x00157e04
_lw t9,-0x7d18(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 0x0015fd00
_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,-0x7d18(gp)
bal 0x0015fd00
_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,-0x7d6c(gp)
addiu t9,t9,0x7b8c
bal 0x00157b8c
_mul a2,v0,a2
lw gp,0x10(sp)
lw v1,0x0(s1)
lw v0,0x24(s1)
b 0x00157e04
_lw s5,0x60(sp)
lw t9,-0x7d7c(gp)
addiu t9,t9,0x380c
jalr t9
_or a0,s5,zero
b 0x00157eb8
_lw gp,0x10(sp)
lw v1,0x10(v0)
slti v1,v1,0x7d0
bne v1,zero,0x00158004
_or a0,s0,zero
li v0,0xd
b 0x00157de0
_sw v0,0x24(s1)
lw t9,-0x7d70(gp)
or a1,a2,zero
or a0,s1,zero
addiu t9,t9,-0x5abc
jalr t9
_sw a2,0x60(sp)
lw gp,0x10(sp)
b 0x00157ea0
_lw s5,0x60(sp)
lw t9,-0x7d7c(gp)
addiu t9,t9,0x3b44
jalr t9
_or a0,v0,zero
or a0,s0,zero
lw gp,0x10(sp)
or s0,v0,zero
lw t9,-0x7d7c(gp)
addiu t9,t9,0x3894
jalr t9
_sw v0,0x5c(sp)
beq s0,zero,0x0015817c
_lw gp,0x10(sp)
addiu v0,sp,0x88
lw t9,-0x7cbc(gp)
lw a2,0x5c(sp)
or a0,s1,zero
or a1,v0,zero
sw v0,0x2c(sp)
lw v0,0x0(s1)
addiu t9,t9,0xf64
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,0x00158188
_lw gp,0x10(sp)
lw t9,-0x7d78(gp)
addiu s0,s1,0x24
addiu t9,t9,0xe8
jalr t9
_lw a0,0x3c(sp)
addiu a2,sp,0x64
lw gp,0x10(sp)
or a0,s1,zero
lw t9,-0x7d70(gp)
addiu t9,t9,-0x5098
jalr t9
_lw a1,0x2c(sp)
lw s5,0x60(sp)
lw v0,0x14(s5)
bne v0,zero,0x001580dc
_lw gp,0x10(sp)
lw v0,0x24(s1)
bne v0,zero,0x00157dfc
_lw t9,-0x7cf4(gp)
addiu a1,sp,0x60
addiu t9,t9,-0x1080
jalr t9
_or a0,s0,zero
lw gp,0x10(sp)
lw s5,0x60(sp)
lw v0,0x24(s1)
bne v0,zero,0x00157dfc
_lw t9,-0x7d6c(gp)
or a3,zero,zero
or a2,zero,zero
or a1,s5,zero
addiu t9,t9,0x6b10
bal 0x00156b10
_or a0,s0,zero
lw v0,0x24(s1)
lw gp,0x10(sp)
bne v0,zero,0x00157dfc
_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,0x00157dfc
_lw t9,-0x7d6c(gp)
or a1,zero,zero
or a2,s5,zero
addiu t9,t9,0x7888
bal 0x00157888
_or a0,s1,zero
lw gp,0x10(sp)
lw v0,0x24(s1)
b 0x00157dfc
_lw s5,0x60(sp)
lw v0,0x3c(sp)
or a2,zero,zero
lw t9,-0x7d68(gp)
or a1,zero,zero
addiu a3,v0,0x10
addiu t9,t9,0x71a8
jalr t9
_or a0,v0,zero
lw gp,0x10(sp)
bne v0,zero,0x00158078
_sw v0,0x24(s1)
lw v0,0x3c(sp)
lw v0,0x10(v0)
beq v0,zero,0x00158078
_lw v0,-0x7d7c(gp)
addiu s6,sp,0x70
addiu s7,sp,0x6c
addiu s8,sp,0x68
sw s6,0x50(sp)
addiu v0,v0,0x76a8
sw s7,0x4c(sp)
or s5,s0,zero
sw s8,0x48(sp)
sw v0,0x44(sp)
lw v0,-0x7d70(gp)
addiu v0,v0,-0x5434
sw v0,0x40(sp)
lw v0,-0x7de0(gp)
sw v0,0x58(sp)
lw v0,-0x7d70(gp)
addiu v0,v0,-0x5df0
sw v0,0x38(sp)
lw v0,-0x7d7c(gp)
addiu v0,v0,0x610c
b 0x00158268
_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,0x00158078
_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,0x0015807c
_lw t9,-0x7d78(gp)
beq v0,zero,0x00158080
_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,-0x7ba0(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,0x00158078
_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,0x00158218
_lw t9,-0x7af4(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,-0x80
sw v0,0x30(sp)
slt a2,s0,a2
beq a2,zero,0x00158244
_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,0x00158468
_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,0x0015865c
_addu a0,a0,v0
lw t9,-0x7d78(gp)
or a3,s2,zero
addiu t9,t9,0x3284
jalr t9
_lw a2,0x1c(sp)
lw gp,0x10(sp)
lw v1,0x98(sp)
or a3,s2,zero
lw t9,-0x7d70(gp)
or a0,s1,zero
lw a2,0x1c(sp)
addu v0,v1,v0
lw a1,0x2c(sp)
addiu t9,t9,-0x6158
sb zero,0xc1(sp)
jalr t9
_sw v0,0x98(sp)
lw v0,0x24(s1)
bne v0,zero,0x00158078
_lw gp,0x10(sp)
lw v1,0x34(sp)
li v0,0x1
bne v1,v0,0x001584ac
_lw t9,-0x7d7c(gp)
lw v1,0x70(sp)
slt v1,s0,v1
beq v1,zero,0x0015842c
_lw v0,0x98(sp)
lw v1,0x6c(sp)
addu v1,v1,s0
lbu v1,0x0(v1)
bne v1,zero,0x00158430
_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,0x00158698
_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,0x00158454
_lw a1,0x2c(sp)
lw v0,0x24(s1)
bne v0,zero,0x00158078
_lw a2,0x70(sp)
b 0x00158304
_slt a2,s0,a2
lw t9,0x38(sp)
jalr t9
_or a0,s1,zero
b 0x00158440
_lw gp,0x10(sp)
lw a0,0x94(sp)
lw v0,0x98(sp)
beq a2,zero,0x00158674
_addu a0,a0,v0
lw t9,-0x7d78(gp)
addiu t9,t9,0x3284
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,0x001583dc
_lw v1,0x70(sp)
lw t9,-0x7d7c(gp)
addiu a2,sp,0x74
lw a0,0x6c(sp)
addiu a1,sp,0x78
addiu t9,t9,0x61f0
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,0x00158520
_lw gp,0x10(sp)
lw a0,0x94(sp)
or a2,s2,zero
lw a1,0x6c(sp)
lw t9,-0x7af4(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 0x00158444
_addu s0,s0,s2
lw v0,0x6c(sp)
or s7,zero,zero
addiu s8,sp,0x7c
or s6,s7,zero
b 0x00158590
_sw v0,0x28(sp)
or a2,s7,zero
lw t9,-0x7af4(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,0x0015868c
_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,0x0015868c
_nop
lw v0,0x24(s1)
bne v0,zero,0x00158518
_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,0x00158538
_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,0x00158634
_lw gp,0x10(sp)
lw a0,0x94(sp)
or a2,s7,zero
lw v0,0x98(sp)
or a1,s3,zero
lw t9,-0x7af4(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,0x00158588
_slt v0,s6,s2
b 0x00158574
_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,0x00158630
_lw gp,0x10(sp)
b 0x001585e8
_lw a0,0x94(sp)
sltiu v0,s2,0x80
beq v0,zero,0x0015837c
_lw t9,-0x7d78(gp)
sb s2,0x0(a0)
b 0x00158390
_li v0,0x1
sltiu v0,a3,0x80
beq v0,zero,0x0015847c
_lw t9,-0x7d78(gp)
sb a3,0x0(a0)
b 0x0015848c
_li v0,0x1
lw v0,0x24(s1)
b 0x00158444
_addu s0,s0,s2
addu v1,v1,a0
lbu v1,0x0(v1)
bne v1,zero,0x001586c8
_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 0x0015842c
_lw v0,0x98(sp)
b 0x0015842c
_or s0,a0,zero
lw t9,-0x7b28(gp)
jalr t9
_nop
(translation_unit "int FUN_00157d5c(int *param_1)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  code *pcVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  uint uVar17;\n  undefined4 uVar18;\n  undefined4 uVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  undefined *puVar24;\n  code *pcVar25;\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  puVar24 = PTR___stack_chk_guard_00190e24;\n  piVar15 = param_1 + 0x14;\n  local_b4 = 0;\n  iVar12 = param_1[3];\n  local_2c = *(int *)PTR___stack_chk_guard_00190e24;\n  local_b8 = (int *)FUN_0013c448();\n  if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00157de0;\n    }\n    iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8);\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    if (iVar13 == 0) {\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }\n    else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    iVar12 = param_1[9];\n  }\n  piVar3 = local_b8;\n  iVar13 = *param_1;\n  if ((iVar12 == 0) && (piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15)) {\n    iVar20 = local_b8[3];\n    iVar16 = local_b8[2];\n    iVar13 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16;\n    local_b8[2] = iVar12;\n    uVar18 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13);\n    FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13);\n    piVar15 = param_1;\n    FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18);\n    iVar13 = *param_1;\n    iVar12 = param_1[9];\n  }\n  iVar20 = 0;\n  iVar13 = *(int *)(iVar13 + 0x4c);\n  local_90[0] = local_b8;\n  while (piVar3 = local_90[0], iVar12 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }\n  }\nLAB_00157ea0:\n  local_b8 = piVar3;\n  if ((local_b8 != (int *)0x0) && (iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1)) {\n    piVar15 = local_b8;\n    (*(code *)(PTR_LAB_00190ba4 + 0x380c))();\n  }\n  if (local_2c == *(int *)puVar24) {\n    return *(int *)puVar24;\n  }\n  puVar24 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  uVar19 = *(undefined4 *)(*(int *)*piVar15 + 0x2c);\n  uVar18 = *(undefined4 *)(*(int *)*piVar15 + 0x28);\n  if (piVar15[2] != 0) {\n    iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))();\n    piVar15[2] = 0;\n    if (iVar12 != 0) {\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }\n  }\n  iVar13 = piVar15[1];\n  if (*(int *)(iVar13 + 0x10) != 0) {\n    *(undefined4 *)(iVar13 + 0x10) = 0;\n    FUN_00157d5c(iVar13);\n  }\n  pcVar25 = *(code **)(puVar24 + 0x38578);\n  if (*(int *)(iVar13 + 0x28) != 0) {\n    *(undefined4 *)(iVar13 + 0x28) = 0;\n    (*pcVar25)();\n  }\n  iVar12 = *(int *)(iVar13 + 0x24);\n  *(undefined4 *)(iVar13 + 0x24) = 0;\n  iVar13 = *(int *)*piVar15;\n  iVar16 = *(int *)(iVar13 + 0xc);\n  iVar20 = *(int *)(puVar24 + 0x3826c);\njoined_r0x001587e4:\n  if (iVar16 == 0) {\n    *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n    *(undefined4 *)(iVar13 + 0x28) = uVar18;\n    return iVar12;\n  }\n  (**(code **)(iVar20 + -0xb1c))();\n  *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n  *(undefined4 *)(iVar13 + 0x28) = uVar18;\n  if (*(int *)(iVar13 + 0xc) != 0) {\n    (**(code **)(iVar20 + -0xb14))();\n  }\n  return iVar12;\n}\n\n" (function_definition "int FUN_00157d5c(int *param_1)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  code *pcVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  uint uVar17;\n  undefined4 uVar18;\n  undefined4 uVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  undefined *puVar24;\n  code *pcVar25;\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  puVar24 = PTR___stack_chk_guard_00190e24;\n  piVar15 = param_1 + 0x14;\n  local_b4 = 0;\n  iVar12 = param_1[3];\n  local_2c = *(int *)PTR___stack_chk_guard_00190e24;\n  local_b8 = (int *)FUN_0013c448();\n  if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00157de0;\n    }\n    iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8);\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    if (iVar13 == 0) {\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }\n    else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    iVar12 = param_1[9];\n  }\n  piVar3 = local_b8;\n  iVar13 = *param_1;\n  if ((iVar12 == 0) && (piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15)) {\n    iVar20 = local_b8[3];\n    iVar16 = local_b8[2];\n    iVar13 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16;\n    local_b8[2] = iVar12;\n    uVar18 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13);\n    FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13);\n    piVar15 = param_1;\n    FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18);\n    iVar13 = *param_1;\n    iVar12 = param_1[9];\n  }\n  iVar20 = 0;\n  iVar13 = *(int *)(iVar13 + 0x4c);\n  local_90[0] = local_b8;\n  while (piVar3 = local_90[0], iVar12 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }\n  }\nLAB_00157ea0:\n  local_b8 = piVar3;\n  if ((local_b8 != (int *)0x0) && (iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1)) {\n    piVar15 = local_b8;\n    (*(code *)(PTR_LAB_00190ba4 + 0x380c))();\n  }\n  if (local_2c == *(int *)puVar24) {\n    return *(int *)puVar24;\n  }\n  puVar24 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  uVar19 = *(undefined4 *)(*(int *)*piVar15 + 0x2c);\n  uVar18 = *(undefined4 *)(*(int *)*piVar15 + 0x28);\n  if (piVar15[2] != 0) {\n    iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))();\n    piVar15[2] = 0;\n    if (iVar12 != 0) {\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }\n  }\n  iVar13 = piVar15[1];\n  if (*(int *)(iVar13 + 0x10) != 0) {\n    *(undefined4 *)(iVar13 + 0x10) = 0;\n    FUN_00157d5c(iVar13);\n  }\n  pcVar25 = *(code **)(puVar24 + 0x38578);\n  if (*(int *)(iVar13 + 0x28) != 0) {\n    *(undefined4 *)(iVar13 + 0x28) = 0;\n    (*pcVar25)();\n  }\n  iVar12 = *(int *)(iVar13 + 0x24);\n  *(undefined4 *)(iVar13 + 0x24) = 0;\n  iVar13 = *(int *)*piVar15;\n  iVar16 = *(int *)(iVar13 + 0xc);\n  iVar20 = *(int *)(puVar24 + 0x3826c);\njoined_r0x001587e4:\n  if (iVar16 == 0) {\n    *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n    *(undefined4 *)(iVar13 + 0x28) = uVar18;\n    return iVar12;\n  }\n  (**(code **)(iVar20 + -0xb1c))();\n  *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n  *(undefined4 *)(iVar13 + 0x28) = uVar18;\n  if (*(int *)(iVar13 + 0xc) != 0) {\n    (**(code **)(iVar20 + -0xb14))();\n  }\n  return iVar12;\n}" primitive_type (function_declarator "FUN_00157d5c(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 *piVar3;\n  int iVar4;\n  code *pcVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  uint uVar17;\n  undefined4 uVar18;\n  undefined4 uVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  undefined *puVar24;\n  code *pcVar25;\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  puVar24 = PTR___stack_chk_guard_00190e24;\n  piVar15 = param_1 + 0x14;\n  local_b4 = 0;\n  iVar12 = param_1[3];\n  local_2c = *(int *)PTR___stack_chk_guard_00190e24;\n  local_b8 = (int *)FUN_0013c448();\n  if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00157de0;\n    }\n    iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8);\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    if (iVar13 == 0) {\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }\n    else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    iVar12 = param_1[9];\n  }\n  piVar3 = local_b8;\n  iVar13 = *param_1;\n  if ((iVar12 == 0) && (piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15)) {\n    iVar20 = local_b8[3];\n    iVar16 = local_b8[2];\n    iVar13 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16;\n    local_b8[2] = iVar12;\n    uVar18 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13);\n    FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13);\n    piVar15 = param_1;\n    FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18);\n    iVar13 = *param_1;\n    iVar12 = param_1[9];\n  }\n  iVar20 = 0;\n  iVar13 = *(int *)(iVar13 + 0x4c);\n  local_90[0] = local_b8;\n  while (piVar3 = local_90[0], iVar12 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }\n  }\nLAB_00157ea0:\n  local_b8 = piVar3;\n  if ((local_b8 != (int *)0x0) && (iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1)) {\n    piVar15 = local_b8;\n    (*(code *)(PTR_LAB_00190ba4 + 0x380c))();\n  }\n  if (local_2c == *(int *)puVar24) {\n    return *(int *)puVar24;\n  }\n  puVar24 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  uVar19 = *(undefined4 *)(*(int *)*piVar15 + 0x2c);\n  uVar18 = *(undefined4 *)(*(int *)*piVar15 + 0x28);\n  if (piVar15[2] != 0) {\n    iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))();\n    piVar15[2] = 0;\n    if (iVar12 != 0) {\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }\n  }\n  iVar13 = piVar15[1];\n  if (*(int *)(iVar13 + 0x10) != 0) {\n    *(undefined4 *)(iVar13 + 0x10) = 0;\n    FUN_00157d5c(iVar13);\n  }\n  pcVar25 = *(code **)(puVar24 + 0x38578);\n  if (*(int *)(iVar13 + 0x28) != 0) {\n    *(undefined4 *)(iVar13 + 0x28) = 0;\n    (*pcVar25)();\n  }\n  iVar12 = *(int *)(iVar13 + 0x24);\n  *(undefined4 *)(iVar13 + 0x24) = 0;\n  iVar13 = *(int *)*piVar15;\n  iVar16 = *(int *)(iVar13 + 0xc);\n  iVar20 = *(int *)(puVar24 + 0x3826c);\njoined_r0x001587e4:\n  if (iVar16 == 0) {\n    *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n    *(undefined4 *)(iVar13 + 0x28) = uVar18;\n    return iVar12;\n  }\n  (**(code **)(iVar20 + -0xb1c))();\n  *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n  *(undefined4 *)(iVar13 + 0x28) = uVar18;\n  if (*(int *)(iVar13 + 0xc) != 0) {\n    (**(code **)(iVar20 + -0xb14))();\n  }\n  return iVar12;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type 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 extraout_v1;" primitive_type identifier ;) (declaration "int extraout_v1_00;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "undefined4 uVar18;" type_identifier identifier ;) (declaration "undefined4 uVar19;" type_identifier identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "int iVar23;" primitive_type identifier ;) (declaration "undefined *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "code *pcVar25;" type_identifier (pointer_declarator "*pcVar25" * 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 "puVar24 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar24 = PTR___stack_chk_guard_00190e24" identifier = identifier) ;) (expression_statement "piVar15 = param_1 + 0x14;" (assignment_expression "piVar15 = 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 "iVar12 = param_1[3];" (assignment_expression "iVar12 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00190e24;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00190e24" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00190e24" * (cast_expression "(int *)PTR___stack_chk_guard_00190e24" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_b8 = (int *)FUN_0013c448();" (assignment_expression "local_b8 = (int *)FUN_0013c448()" identifier = (cast_expression "(int *)FUN_0013c448()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0013c448()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00157de0;\n    }\n    iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8);\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    if (iVar13 == 0) {\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }\n    else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    iVar12 = 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_00157de0;\n    }\n    iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8);\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    if (iVar13 == 0) {\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }\n    else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }\n  }" { (if_statement "if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00157de0;\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_00157de0;\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_00157de0;" goto statement_identifier ;) })) (expression_statement "iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8);" (assignment_expression "iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8)" identifier = (call_expression "(*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba4 + 0x3b44))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba4 + 0x3b44)" * (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x3b44)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba4 + 0x3b44)" ( (binary_expression "PTR_LAB_00190ba4 + 0x3b44" identifier + number_literal) )))) )) (argument_list "(local_b8)" ( identifier )))) ;) (expression_statement "(*(code *)(PTR_LAB_00190ba4 + 0x3894))();" (call_expression "(*(code *)(PTR_LAB_00190ba4 + 0x3894))()" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba4 + 0x3894))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba4 + 0x3894)" * (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x3894)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba4 + 0x3894)" ( (binary_expression "PTR_LAB_00190ba4 + 0x3894" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;) (if_statement "if (iVar13 == 0) {\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }\n    else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }" { (labeled_statement "LAB_0015817c:\n      iVar12 = param_1[9];" statement_identifier : (expression_statement "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;)) }) (else_clause "else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }" else (compound_statement "{\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }" { (expression_statement "iVar16 = *(int *)(*param_1 + 0x44);" (assignment_expression "iVar16 = *(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_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);" (call_expression "(*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13)" (parenthesized_expression "(*(code *)(PTR_LAB_00190c64 + 0xf64))" ( (pointer_expression "*(code *)(PTR_LAB_00190c64 + 0xf64)" * (cast_expression "(code *)(PTR_LAB_00190c64 + 0xf64)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190c64 + 0xf64)" ( (binary_expression "PTR_LAB_00190c64 + 0xf64" identifier + number_literal) )))) )) (argument_list "(param_1,local_90,iVar13)" ( identifier , identifier , identifier ))) ;) (if_statement "if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 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        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }" { (expression_statement "iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);" (assignment_expression "iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10)" identifier = (call_expression "(*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10)" (parenthesized_expression "(*(code *)(PTR_LAB_00190bb8 + 0x71a8))" ( (pointer_expression "*(code *)(PTR_LAB_00190bb8 + 0x71a8)" * (cast_expression "(code *)(PTR_LAB_00190bb8 + 0x71a8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190bb8 + 0x71a8)" ( (binary_expression "PTR_LAB_00190bb8 + 0x71a8" identifier + number_literal) )))) )) (argument_list "(iVar12,0,0,iVar12 + 0x10)" ( identifier , number_literal , number_literal , (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) ;) (expression_statement "param_1[9] = iVar4;" (assignment_expression "param_1[9] = iVar4" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2 = PTR_LAB_00190b40;" (assignment_expression "puVar2 = PTR_LAB_00190b40" identifier = identifier) ;) (if_statement "if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }" if (parenthesized_expression "((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0))" ( (binary_expression "(iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)" (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) && (parenthesized_expression "(*(int *)(iVar12 + 0x10) != 0)" ( (binary_expression "*(int *)(iVar12 + 0x10) != 0" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }" { (expression_statement "pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);" (assignment_expression "pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8)" identifier = (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x76a8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba4 + 0x76a8)" ( (binary_expression "PTR_LAB_00190ba4 + 0x76a8" identifier + number_literal) )))) ;) (expression_statement "pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434)" identifier = (cast_expression "(code *)(PTR_LAB_00190bb0 + -0x5434)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190bb0 + -0x5434)" ( (binary_expression "PTR_LAB_00190bb0 + -0x5434" identifier + number_literal) )))) ;) (expression_statement "pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0)" identifier = (cast_expression "(code *)(PTR_LAB_00190bb0 + -0x5df0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190bb0 + -0x5df0)" ( (binary_expression "PTR_LAB_00190bb0 + -0x5df0" identifier + number_literal) )))) ;) (expression_statement "pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);" (assignment_expression "pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c)" identifier = (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x610c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba4 + 0x610c)" ( (binary_expression "PTR_LAB_00190ba4 + 0x610c" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }" { (expression_statement "(*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);" (call_expression "(*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8)" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "(iVar12,&local_b0,&local_ac,&local_a8)" ( identifier , (pointer_expression "&local_b0" & identifier) , (pointer_expression "&local_ac" & identifier) , (pointer_expression "&local_a8" & identifier) ))) ;) (expression_statement "uVar18 = local_b0;" (assignment_expression "uVar18 = local_b0" identifier = identifier) ;) (expression_statement "uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);" (assignment_expression "uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0)" identifier = (call_expression "(*(code *)PTR_strlen_00190d80)(local_b0)" (parenthesized_expression "(*(code *)PTR_strlen_00190d80)" ( (pointer_expression "*(code *)PTR_strlen_00190d80" * (cast_expression "(code *)PTR_strlen_00190d80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_b0)" ( identifier )))) ;) (expression_statement "(*pcVar5)(param_1,local_90,uVar19,uVar18);" (call_expression "(*pcVar5)(param_1,local_90,uVar19,uVar18)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(param_1,local_90,uVar19,uVar18)" ( 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 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }" if (parenthesized_expression "(local_80 + local_74 + local_a8 < iVar16)" ( (binary_expression "local_80 + local_74 + local_a8 < iVar16" (binary_expression "local_80 + local_74 + local_a8" (binary_expression "local_80 + local_74" identifier + identifier) + identifier) < identifier) )) (compound_statement "{\n              (*(code *)PTR_memcpy_00190e2c)(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_00190e2c)(local_84 + local_80,local_ac);" (call_expression "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac)" (parenthesized_expression "(*(code *)PTR_memcpy_00190e2c)" ( (pointer_expression "*(code *)PTR_memcpy_00190e2c" * (cast_expression "(code *)PTR_memcpy_00190e2c" ( (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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }" else (compound_statement "{\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < 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 "iVar4 = 0;" (assignment_expression "iVar4 = 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                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }" while (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }" { (expression_statement "iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);" (assignment_expression "iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98)" identifier = (call_expression "(*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98)" (parenthesized_expression "(*(code *)(puVar2 + -0x80))" ( (pointer_expression "*(code *)(puVar2 + -0x80)" * (cast_expression "(code *)(puVar2 + -0x80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x80)" ( (binary_expression "puVar2 + -0x80" identifier + number_literal) )))) )) (argument_list "(local_ac + iVar4,&local_98)" ( (binary_expression "local_ac + iVar4" identifier + identifier) , (pointer_expression "&local_98" & identifier) )))) ;) (expression_statement "iVar8 = iVar4 + iVar8;" (assignment_expression "iVar8 = iVar4 + iVar8" identifier = (binary_expression "iVar4 + iVar8" 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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\n                }" { (if_statement "if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\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                    iVar4 = 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 "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) }) (else_clause "else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }" else (compound_statement "{\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }" { (expression_statement "iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();" (assignment_expression "iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))()" identifier = (call_expression "(*(code *)(PTR_LAB_00190ba8 + 0x3284))()" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + 0x3284))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba8 + 0x3284)" * (cast_expression "(code *)(PTR_LAB_00190ba8 + 0x3284)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba8 + 0x3284)" ( (binary_expression "PTR_LAB_00190ba8 + 0x3284" identifier + number_literal) )))) )) (argument_list "()" ( )))) ;) }))) (expression_statement "local_80 = local_80 + iVar4;" (assignment_expression "local_80 = local_80 + iVar4" identifier = (binary_expression "local_80 + iVar4" identifier + identifier)) ;) (if_statement "if (iVar20 != 1) goto LAB_001584ac;" if (parenthesized_expression "(iVar20 != 1)" ( (binary_expression "iVar20 != 1" identifier != number_literal) )) (goto_statement "goto LAB_001584ac;" goto statement_identifier ;)) (labeled_statement "LAB_001583dc:\n                  iVar4 = iVar8;" statement_identifier : (expression_statement "iVar4 = iVar8;" (assignment_expression "iVar4 = iVar8" identifier = identifier) ;)) (expression_statement "iVar14 = local_80;" (assignment_expression "iVar14 = local_80" identifier = identifier) ;) (if_statement "if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }" if (parenthesized_expression "((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0'))" ( (binary_expression "(iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')" (parenthesized_expression "(iVar8 < local_a8)" ( (binary_expression "iVar8 < local_a8" identifier < identifier) )) && (parenthesized_expression "(*(char *)(local_ac + iVar8) == '\0')" ( (binary_expression "*(char *)(local_ac + iVar8) == '\0'" (pointer_expression "*(char *)(local_ac + iVar8)" * (cast_expression "(char *)(local_ac + iVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_ac + iVar8)" ( (binary_expression "local_ac + iVar8" identifier + identifier) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }" { (expression_statement "iVar14 = local_80 + 1;" (assignment_expression "iVar14 = local_80 + 1" identifier = (binary_expression "local_80 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = iVar8 + 1;" (assignment_expression "iVar4 = iVar8 + 1" identifier = (binary_expression "iVar8 + 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 ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }" if (parenthesized_expression "((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0'))" ( (binary_expression "(iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')" (parenthesized_expression "(iVar4 < local_a8)" ( (binary_expression "iVar4 < local_a8" identifier < identifier) )) && (parenthesized_expression "(*(char *)(local_ac + iVar4) == '\0')" ( (binary_expression "*(char *)(local_ac + iVar4) == '\0'" (pointer_expression "*(char *)(local_ac + iVar4)" * (cast_expression "(char *)(local_ac + iVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_ac + iVar4)" ( (binary_expression "local_ac + iVar4" identifier + identifier) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }" { (expression_statement "iVar4 = iVar8 + 2;" (assignment_expression "iVar4 = iVar8 + 2" identifier = (binary_expression "iVar8 + 2" identifier + number_literal)) ;) (expression_statement "local_84[iVar14] = 0;" (assignment_expression "local_84[iVar14] = 0" (subscript_expression "local_84[iVar14]" identifier [ identifier ]) = number_literal) ;) (expression_statement "iVar14 = local_80 + 2;" (assignment_expression "iVar14 = local_80 + 2" identifier = (binary_expression "local_80 + 2" identifier + number_literal)) ;) })) })) (expression_statement "local_80 = iVar14;" (assignment_expression "local_80 = iVar14" identifier = identifier) ;) (if_statement "if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }" if (parenthesized_expression "(iVar16 <= local_80 + local_74)" ( (binary_expression "iVar16 <= local_80 + local_74" identifier <= (binary_expression "local_80 + local_74" identifier + identifier)) )) (compound_statement "{\n                    (*pcVar6)(param_1,local_90);\n                  }" { (expression_statement "(*pcVar6)(param_1,local_90);" (call_expression "(*pcVar6)(param_1,local_90)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(param_1,local_90)" ( identifier , identifier ))) ;) })) (expression_statement "iVar9 = param_1[9];" (assignment_expression "iVar9 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) }) (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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\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                    iVar4 = 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 "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) }) (else_clause "else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }" else (compound_statement "{\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }" { (expression_statement "iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);" (assignment_expression "iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17)" identifier = (call_expression "(*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + 0x3284))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba8 + 0x3284)" * (cast_expression "(code *)(PTR_LAB_00190ba8 + 0x3284)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba8 + 0x3284)" ( (binary_expression "PTR_LAB_00190ba8 + 0x3284" 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 + iVar4;" (assignment_expression "local_80 = local_80 + iVar4" identifier = (binary_expression "local_80 + iVar4" identifier + identifier)) ;) (expression_statement "local_57 = '\0';" (assignment_expression "local_57 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "(*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);" (call_expression "(*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17)" (parenthesized_expression "(*(code *)(PTR_LAB_00190bb0 + -0x6158))" ( (pointer_expression "*(code *)(PTR_LAB_00190bb0 + -0x6158)" * (cast_expression "(code *)(PTR_LAB_00190bb0 + -0x6158)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190bb0 + -0x6158)" ( (binary_expression "PTR_LAB_00190bb0 + -0x6158" identifier + number_literal) )))) )) (argument_list "(param_1,local_90,local_fc,uVar17)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if (param_1[9] != 0) goto LAB_00158080;" 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_00158080;" goto statement_identifier ;)) (if_statement "if (iVar20 == 1) goto LAB_001583dc;" if (parenthesized_expression "(iVar20 == 1)" ( (binary_expression "iVar20 == 1" identifier == number_literal) )) (goto_statement "goto LAB_001583dc;" goto statement_identifier ;)) (labeled_statement "LAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);" statement_identifier : (expression_statement "iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);" (assignment_expression "iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4)" identifier = (call_expression "(*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba4 + 0x61f0))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba4 + 0x61f0)" * (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x61f0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba4 + 0x61f0)" ( (binary_expression "PTR_LAB_00190ba4 + 0x61f0" identifier + number_literal) )))) )) (argument_list "(local_ac + iVar8,&local_a0,auStack_a4)" ( (binary_expression "local_ac + iVar8" identifier + identifier) , (pointer_expression "&local_a0" & identifier) , identifier )))) ;)) (expression_statement "iVar14 = local_ac;" (assignment_expression "iVar14 = local_ac" identifier = identifier) ;) (expression_statement "iVar4 = iVar4 + local_a0;" (assignment_expression "iVar4 = iVar4 + local_a0" identifier = (binary_expression "iVar4 + local_a0" identifier + identifier)) ;) (if_statement "if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }" if (parenthesized_expression "(iVar16 < local_80 + local_74 + iVar4)" ( (binary_expression "iVar16 < local_80 + local_74 + iVar4" identifier < (binary_expression "local_80 + local_74 + iVar4" (binary_expression "local_80 + local_74" identifier + identifier) + identifier)) )) (compound_statement "{\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }" { (expression_statement "iVar22 = 0;" (assignment_expression "iVar22 = 0" identifier = number_literal) ;) (do_statement "do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);" do (compound_statement "{\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    }" { (expression_statement "iVar9 = param_1[9];" (assignment_expression "iVar9 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (if_statement "if (iVar9 != 0) goto LAB_00158518;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00158518;" goto statement_identifier ;)) (expression_statement "iVar23 = iVar4 - iVar22;" (assignment_expression "iVar23 = iVar4 - iVar22" identifier = (binary_expression "iVar4 - iVar22" identifier - identifier)) ;) (expression_statement "iVar9 = iVar14 + iVar22 + iVar8;" (assignment_expression "iVar9 = iVar14 + iVar22 + iVar8" identifier = (binary_expression "iVar14 + iVar22 + iVar8" (binary_expression "iVar14 + iVar22" identifier + identifier) + identifier)) ;) (expression_statement "iVar21 = (iVar16 - local_80) - local_74;" (assignment_expression "iVar21 = (iVar16 - local_80) - local_74" identifier = (binary_expression "(iVar16 - local_80) - local_74" (parenthesized_expression "(iVar16 - local_80)" ( (binary_expression "iVar16 - local_80" identifier - identifier) )) - identifier)) ;) (if_statement "if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }" if (parenthesized_expression "(iVar21 < iVar23)" ( (binary_expression "iVar21 < iVar23" identifier < identifier) )) (compound_statement "{\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }" { (expression_statement "iVar10 = (*pcVar7)(iVar9,auStack_9c);" (assignment_expression "iVar10 = (*pcVar7)(iVar9,auStack_9c)" identifier = (call_expression "(*pcVar7)(iVar9,auStack_9c)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(iVar9,auStack_9c)" ( identifier , identifier )))) ;) (expression_statement "iVar23 = iVar10;" (assignment_expression "iVar23 = iVar10" identifier = identifier) ;) (if_statement "if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }" if (parenthesized_expression "(iVar10 < iVar21)" ( (binary_expression "iVar10 < iVar21" identifier < identifier) )) (compound_statement "{\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }" { (do_statement "do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);" do (compound_statement "{\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          }" { (expression_statement "iVar10 = iVar23;" (assignment_expression "iVar10 = iVar23" identifier = identifier) ;) (expression_statement "iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);" (assignment_expression "iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c)" identifier = (call_expression "(*pcVar7)(iVar9 + iVar10,auStack_9c)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(iVar9 + iVar10,auStack_9c)" ( (binary_expression "iVar9 + iVar10" identifier + identifier) , identifier )))) ;) (expression_statement "iVar23 = iVar10 + iVar11;" (assignment_expression "iVar23 = iVar10 + iVar11" identifier = (binary_expression "iVar10 + iVar11" identifier + identifier)) ;) }) while (parenthesized_expression "(iVar10 + iVar11 <= iVar21)" ( (binary_expression "iVar10 + iVar11 <= iVar21" (binary_expression "iVar10 + iVar11" identifier + identifier) <= identifier) )) ;) })) (expression_statement "iVar22 = iVar22 + iVar10;" (assignment_expression "iVar22 = iVar22 + iVar10" identifier = (binary_expression "iVar22 + iVar10" identifier + identifier)) ;) (expression_statement "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);" (call_expression "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10)" (parenthesized_expression "(*(code *)PTR_memcpy_00190e2c)" ( (pointer_expression "*(code *)PTR_memcpy_00190e2c" * (cast_expression "(code *)PTR_memcpy_00190e2c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_84 + local_80,iVar9,iVar10)" ( (binary_expression "local_84 + local_80" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "local_80 = iVar10 + local_80;" (assignment_expression "local_80 = iVar10 + local_80" identifier = (binary_expression "iVar10 + local_80" identifier + identifier)) ;) (if_statement "if (iVar16 <= local_80 + local_74) goto LAB_00158574;" if (parenthesized_expression "(iVar16 <= local_80 + local_74)" ( (binary_expression "iVar16 <= local_80 + local_74" identifier <= (binary_expression "local_80 + local_74" identifier + identifier)) )) (goto_statement "goto LAB_00158574;" goto statement_identifier ;)) }) (else_clause "else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }" else (compound_statement "{\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }" { (expression_statement "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);" (call_expression "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23)" (parenthesized_expression "(*(code *)PTR_memcpy_00190e2c)" ( (pointer_expression "*(code *)PTR_memcpy_00190e2c" * (cast_expression "(code *)PTR_memcpy_00190e2c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_84 + local_80,iVar9,iVar23)" ( (binary_expression "local_84 + local_80" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "local_80 = iVar23 + local_80;" (assignment_expression "local_80 = iVar23 + local_80" identifier = (binary_expression "iVar23 + local_80" identifier + identifier)) ;) (expression_statement "iVar22 = iVar4;" (assignment_expression "iVar22 = iVar4" identifier = identifier) ;) (if_statement "if (local_80 + local_74 < iVar16) break;" if (parenthesized_expression "(local_80 + local_74 < iVar16)" ( (binary_expression "local_80 + local_74 < iVar16" (binary_expression "local_80 + local_74" identifier + identifier) < identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00158574:\n                        (*pcVar6)(param_1,local_90);" statement_identifier : (expression_statement "(*pcVar6)(param_1,local_90);" (call_expression "(*pcVar6)(param_1,local_90)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(param_1,local_90)" ( identifier , identifier ))) ;)) }))) }) while (parenthesized_expression "(iVar22 < iVar4)" ( (binary_expression "iVar22 < iVar4" identifier < identifier) )) ;) (expression_statement "iVar9 = param_1[9];" (assignment_expression "iVar9 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "iVar4 = iVar8 + iVar4;" (assignment_expression "iVar4 = iVar8 + iVar4" identifier = (binary_expression "iVar8 + iVar4" identifier + identifier)) ;) }) (else_clause "else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }" else (compound_statement "{\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }" { (expression_statement "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);" (call_expression "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4)" (parenthesized_expression "(*(code *)PTR_memcpy_00190e2c)" ( (pointer_expression "*(code *)PTR_memcpy_00190e2c" * (cast_expression "(code *)PTR_memcpy_00190e2c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_84 + local_80,local_ac + iVar8,iVar4)" ( (binary_expression "local_84 + local_80" identifier + identifier) , (binary_expression "local_ac + iVar8" identifier + identifier) , identifier ))) ;) (expression_statement "iVar9 = param_1[9];" (assignment_expression "iVar9 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "local_80 = local_80 + iVar4;" (assignment_expression "local_80 = local_80 + iVar4" identifier = (binary_expression "local_80 + iVar4" identifier + identifier)) ;) (labeled_statement "LAB_00158518:\n                    iVar4 = iVar8 + iVar4;" statement_identifier : (expression_statement "iVar4 = iVar8 + iVar4;" (assignment_expression "iVar4 = iVar8 + iVar4" identifier = (binary_expression "iVar8 + iVar4" identifier + identifier)) ;)) }))) }))) (if_statement "if (iVar9 != 0) goto LAB_00158080;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00158080;" goto statement_identifier ;)) (expression_statement "bVar1 = iVar4 < local_a8;" (assignment_expression "bVar1 = iVar4 < local_a8" identifier = (binary_expression "iVar4 < local_a8" identifier < identifier)) ;) (expression_statement "local_f4 = uVar17;" (assignment_expression "local_f4 = uVar17" identifier = identifier) ;) })) }))) (expression_statement "iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);" (assignment_expression "iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar12 + 0x10) + 4)" * (cast_expression "(int *)(*(int *)(iVar12 + 0x10) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar12 + 0x10) + 4)" ( (binary_expression "*(int *)(iVar12 + 0x10) + 4" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(int *)(iVar12 + 0x10) = iVar4;" (assignment_expression "*(int *)(iVar12 + 0x10) = iVar4" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((param_1[9] != 0) || (iVar4 == 0)) break;" if (parenthesized_expression "((param_1[9] != 0) || (iVar4 == 0))" ( (binary_expression "(param_1[9] != 0) || (iVar4 == 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 "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) ))) )) (break_statement "break;" break ;)) })) })) })) (labeled_statement "LAB_00158080:\n      piVar3 = param_1 + 9;" statement_identifier : (expression_statement "piVar3 = param_1 + 9;" (assignment_expression "piVar3 = param_1 + 9" identifier = (binary_expression "param_1 + 9" identifier + number_literal)) ;)) (expression_statement "(*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);" (call_expression "(*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + 0xe8))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba8 + 0xe8)" * (cast_expression "(code *)(PTR_LAB_00190ba8 + 0xe8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba8 + 0xe8)" ( (binary_expression "PTR_LAB_00190ba8 + 0xe8" identifier + number_literal) )))) )) (argument_list "(iVar12)" ( identifier ))) ;) (expression_statement "piVar15 = param_1;" (assignment_expression "piVar15 = param_1" identifier = identifier) ;) (expression_statement "(*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);" (call_expression "(*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4)" (parenthesized_expression "(*(code *)(PTR_LAB_00190bb0 + -0x5098))" ( (pointer_expression "*(code *)(PTR_LAB_00190bb0 + -0x5098)" * (cast_expression "(code *)(PTR_LAB_00190bb0 + -0x5098)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190bb0 + -0x5098)" ( (binary_expression "PTR_LAB_00190bb0 + -0x5098" identifier + number_literal) )))) )) (argument_list "(param_1,local_90,&local_b4)" ( identifier , identifier , (pointer_expression "&local_b4" & identifier) ))) ;) (if_statement "if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\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        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }" { (expression_statement "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (if_statement "if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }" { (expression_statement "piVar15 = piVar3;" (assignment_expression "piVar15 = piVar3" identifier = identifier) ;) (expression_statement "(*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);" (call_expression "(*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8)" (parenthesized_expression "(*(code *)(PTR_LAB_00190c2c + -0x1080))" ( (pointer_expression "*(code *)(PTR_LAB_00190c2c + -0x1080)" * (cast_expression "(code *)(PTR_LAB_00190c2c + -0x1080)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190c2c + -0x1080)" ( (binary_expression "PTR_LAB_00190c2c + -0x1080" identifier + number_literal) )))) )) (argument_list "(piVar3,&local_b8)" ( identifier , (pointer_expression "&local_b8" & identifier) ))) ;) (goto_statement "goto LAB_001580dc;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }" else (compound_statement "{\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }" { (labeled_statement "LAB_001580dc:\n        iVar12 = param_1[9];" statement_identifier : (expression_statement "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;)) (if_statement "if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }" { (expression_statement "FUN_00156b10(piVar3,local_b8,0,0);" (call_expression "FUN_00156b10(piVar3,local_b8,0,0)" identifier (argument_list "(piVar3,local_b8,0,0)" ( identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "piVar15 = piVar3;" (assignment_expression "piVar15 = piVar3" identifier = identifier) ;) (if_statement "if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }" { (expression_statement "piVar15 = (int *)local_b8[7];" (assignment_expression "piVar15 = (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)piVar15 + 1;" (assignment_expression "local_b8[7] = (int)piVar15 + 1" (subscript_expression "local_b8[7]" identifier [ number_literal ]) = (binary_expression "(int)piVar15 + 1" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);" (assignment_expression "piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc)" identifier = (cast_expression "(int *)(local_b8[8] + (int)piVar15 * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b8[8] + (int)piVar15 * 0xc)" ( (binary_expression "local_b8[8] + (int)piVar15 * 0xc" (subscript_expression "local_b8[8]" identifier [ number_literal ]) + (binary_expression "(int)piVar15 * 0xc" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "*piVar3 = iVar13;" (assignment_expression "*piVar3 = iVar13" (pointer_expression "*piVar3" * identifier) = identifier) ;) (expression_statement "piVar3[1] = 1;" (assignment_expression "piVar3[1] = 1" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar3[2] = local_b4;" (assignment_expression "piVar3[2] = local_b4" (subscript_expression "piVar3[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 "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (if_statement "if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }" { (expression_statement "piVar15 = param_1;" (assignment_expression "piVar15 = param_1" identifier = identifier) ;) (expression_statement "FUN_00157888(param_1,0,local_b8);" (call_expression "FUN_00157888(param_1,0,local_b8)" identifier (argument_list "(param_1,0,local_b8)" ( identifier , number_literal , identifier ))) ;) (goto_statement "goto LAB_0015817c;" goto statement_identifier ;) })) })) })) }))) }))) }) (else_clause "else {\nLAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    iVar12 = param_1[9];\n  }" else (compound_statement "{\nLAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    iVar12 = param_1[9];\n  }" { (labeled_statement "LAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();" statement_identifier : (expression_statement "(*(code *)(PTR_LAB_00190ba4 + 0x3894))();" (call_expression "(*(code *)(PTR_LAB_00190ba4 + 0x3894))()" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba4 + 0x3894))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba4 + 0x3894)" * (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x3894)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba4 + 0x3894)" ( (binary_expression "PTR_LAB_00190ba4 + 0x3894" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;)) (expression_statement "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) }))) (expression_statement "piVar3 = local_b8;" (assignment_expression "piVar3 = local_b8" identifier = identifier) ;) (expression_statement "iVar13 = *param_1;" (assignment_expression "iVar13 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if ((iVar12 == 0) && (piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15)) {\n    iVar20 = local_b8[3];\n    iVar16 = local_b8[2];\n    iVar13 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16;\n    local_b8[2] = iVar12;\n    uVar18 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13);\n    FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13);\n    piVar15 = param_1;\n    FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18);\n    iVar13 = *param_1;\n    iVar12 = param_1[9];\n  }" if (parenthesized_expression "((iVar12 == 0) && (piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15))" ( (binary_expression "(iVar12 == 0) && (piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15)" (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) && (parenthesized_expression "(piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15)" ( (comma_expression "piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15" (assignment_expression "piVar15 = *(int **)(iVar13 + 0x48)" identifier = (pointer_expression "*(int **)(iVar13 + 0x48)" * (cast_expression "(int **)(iVar13 + 0x48)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + 0x48)" ( (binary_expression "iVar13 + 0x48" identifier + number_literal) ))))) , (binary_expression "0 < (int)piVar15" number_literal < (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (compound_statement "{\n    iVar20 = local_b8[3];\n    iVar16 = local_b8[2];\n    iVar13 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16;\n    local_b8[2] = iVar12;\n    uVar18 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13);\n    FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13);\n    piVar15 = param_1;\n    FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18);\n    iVar13 = *param_1;\n    iVar12 = 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 "iVar16 = local_b8[2];" (assignment_expression "iVar16 = local_b8[2]" identifier = (subscript_expression "local_b8[2]" identifier [ number_literal ])) ;) (expression_statement "iVar13 = param_1[2];" (assignment_expression "iVar13 = 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 "iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16;" (assignment_expression "iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16" identifier = (binary_expression "(uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16" (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] = iVar12;" (assignment_expression "local_b8[2] = iVar12" (subscript_expression "local_b8[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar18 = *(undefined4 *)(*param_1 + 0x48);" (assignment_expression "uVar18 = *(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_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13);" (call_expression "FUN_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13)" identifier (argument_list "(iVar12,uVar17,iVar13 >> 0x1f,iVar13)" ( identifier , identifier , (binary_expression "iVar13 >> 0x1f" identifier >> number_literal) , identifier ))) ;) (expression_statement "FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13);" (call_expression "FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13)" identifier (argument_list "(iVar16,iVar20,iVar13 >> 0x1f,iVar13)" ( identifier , identifier , (binary_expression "iVar13 >> 0x1f" identifier >> number_literal) , identifier ))) ;) (expression_statement "piVar15 = param_1;" (assignment_expression "piVar15 = param_1" identifier = identifier) ;) (expression_statement "FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18);" (call_expression "FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18)" identifier (argument_list "(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18)" ( identifier , (pointer_expression "&local_b8" & identifier) , (binary_expression "(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[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 "piVar3[5]" identifier [ number_literal ])) , identifier ))) ;) (expression_statement "iVar13 = *param_1;" (assignment_expression "iVar13 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar12 = param_1[9];" (assignment_expression "iVar12 = 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 "iVar13 = *(int *)(iVar13 + 0x4c);" (assignment_expression "iVar13 = *(int *)(iVar13 + 0x4c)" identifier = (pointer_expression "*(int *)(iVar13 + 0x4c)" * (cast_expression "(int *)(iVar13 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x4c)" ( (binary_expression "iVar13 + 0x4c" 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 (piVar3 = local_90[0], iVar12 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }\n  }" while (parenthesized_expression "(piVar3 = local_90[0], iVar12 == 0)" ( (comma_expression "piVar3 = local_90[0], iVar12 == 0" (assignment_expression "piVar3 = local_90[0]" identifier = (subscript_expression "local_90[0]" identifier [ number_literal ])) , (binary_expression "iVar12 == 0" identifier == number_literal)) )) (compound_statement "{\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }\n  }" { (while_statement "while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }" { (if_statement "if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }" if (parenthesized_expression "(local_90[0][iVar20 * 3 + 7] < iVar13)" ( (binary_expression "local_90[0][iVar20 * 3 + 7] < iVar13" (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        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\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 "(*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);" (call_expression "(*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0)" (parenthesized_expression "(*(code *)(PTR_LAB_00190bb0 + -0x5abc))" ( (pointer_expression "*(code *)(PTR_LAB_00190bb0 + -0x5abc)" * (cast_expression "(code *)(PTR_LAB_00190bb0 + -0x5abc)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190bb0 + -0x5abc)" ( (binary_expression "PTR_LAB_00190bb0 + -0x5abc" identifier + number_literal) )))) )) (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 "piVar15 = param_1;" (assignment_expression "piVar15 = param_1" identifier = identifier) ;) (expression_statement "piVar3 = local_b8;" (assignment_expression "piVar3 = local_b8" identifier = identifier) ;) (goto_statement "goto LAB_00157ea0;" goto statement_identifier ;) })) (expression_statement "piVar15 = param_1;" (assignment_expression "piVar15 = param_1" identifier = identifier) ;) (expression_statement "FUN_00156cac(param_1,local_90,iVar20);" (call_expression "FUN_00156cac(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 "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (if_statement "if (iVar12 != 0) break;" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "piVar15 = param_1;" (assignment_expression "piVar15 = param_1" identifier = identifier) ;) (expression_statement "FUN_00157888(param_1,iVar20);" (call_expression "FUN_00157888(param_1,iVar20)" identifier (argument_list "(param_1,iVar20)" ( identifier , identifier ))) ;) (expression_statement "piVar3 = local_90[0];" (assignment_expression "piVar3 = local_90[0]" identifier = (subscript_expression "local_90[0]" identifier [ number_literal ])) ;) (if_statement "if (param_1[9] != 0) goto LAB_00157ea0;" 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_00157ea0;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00157ea0:\n  local_b8 = piVar3;" statement_identifier : (expression_statement "local_b8 = piVar3;" (assignment_expression "local_b8 = piVar3" identifier = identifier) ;)) (if_statement "if ((local_b8 != (int *)0x0) && (iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1)) {\n    piVar15 = local_b8;\n    (*(code *)(PTR_LAB_00190ba4 + 0x380c))();\n  }" if (parenthesized_expression "((local_b8 != (int *)0x0) && (iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1))" ( (binary_expression "(local_b8 != (int *)0x0) && (iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -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 "(iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1)" ( (comma_expression "iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1" (assignment_expression "iVar12 = *local_b8" identifier = (pointer_expression "*local_b8" * identifier)) , (comma_expression "*local_b8 = iVar12 + -1, iVar12 + -1 < 1" (assignment_expression "*local_b8 = iVar12 + -1" (pointer_expression "*local_b8" * identifier) = (binary_expression "iVar12 + -1" identifier + number_literal)) , (binary_expression "iVar12 + -1 < 1" (binary_expression "iVar12 + -1" identifier + number_literal) < number_literal))) ))) )) (compound_statement "{\n    piVar15 = local_b8;\n    (*(code *)(PTR_LAB_00190ba4 + 0x380c))();\n  }" { (expression_statement "piVar15 = local_b8;" (assignment_expression "piVar15 = local_b8" identifier = identifier) ;) (expression_statement "(*(code *)(PTR_LAB_00190ba4 + 0x380c))();" (call_expression "(*(code *)(PTR_LAB_00190ba4 + 0x380c))()" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba4 + 0x380c))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba4 + 0x380c)" * (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x380c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba4 + 0x380c)" ( (binary_expression "PTR_LAB_00190ba4 + 0x380c" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;) })) (if_statement "if (local_2c == *(int *)puVar24) {\n    return *(int *)puVar24;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar24)" ( (binary_expression "local_2c == *(int *)puVar24" identifier == (pointer_expression "*(int *)puVar24" * (cast_expression "(int *)puVar24" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return *(int *)puVar24;\n  }" { (return_statement "return *(int *)puVar24;" return (pointer_expression "*(int *)puVar24" * (cast_expression "(int *)puVar24" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "puVar24 = PTR___stack_chk_fail_00190df8;" (assignment_expression "puVar24 = PTR___stack_chk_fail_00190df8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00190df8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00190df8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00190df8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00190df8" * (cast_expression "(code *)PTR___stack_chk_fail_00190df8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar19 = *(undefined4 *)(*(int *)*piVar15 + 0x2c);" (assignment_expression "uVar19 = *(undefined4 *)(*(int *)*piVar15 + 0x2c)" identifier = (pointer_expression "*(undefined4 *)(*(int *)*piVar15 + 0x2c)" * (cast_expression "(undefined4 *)(*(int *)*piVar15 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)*piVar15 + 0x2c)" ( (binary_expression "*(int *)*piVar15 + 0x2c" (pointer_expression "*(int *)*piVar15" * (cast_expression "(int *)*piVar15" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar15" * identifier))) + number_literal) ))))) ;) (expression_statement "uVar18 = *(undefined4 *)(*(int *)*piVar15 + 0x28);" (assignment_expression "uVar18 = *(undefined4 *)(*(int *)*piVar15 + 0x28)" identifier = (pointer_expression "*(undefined4 *)(*(int *)*piVar15 + 0x28)" * (cast_expression "(undefined4 *)(*(int *)*piVar15 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)*piVar15 + 0x28)" ( (binary_expression "*(int *)*piVar15 + 0x28" (pointer_expression "*(int *)*piVar15" * (cast_expression "(int *)*piVar15" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar15" * identifier))) + number_literal) ))))) ;) (if_statement "if (piVar15[2] != 0) {\n    iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))();\n    piVar15[2] = 0;\n    if (iVar12 != 0) {\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }\n  }" if (parenthesized_expression "(piVar15[2] != 0)" ( (binary_expression "piVar15[2] != 0" (subscript_expression "piVar15[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))();\n    piVar15[2] = 0;\n    if (iVar12 != 0) {\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }\n  }" { (expression_statement "iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))();" (assignment_expression "iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))()" identifier = (call_expression "(*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))()" (parenthesized_expression "(*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))" ( (pointer_expression "*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8)" * (cast_expression "(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar24 + 0x384d4) + -0x62b8)" ( (binary_expression "*(int *)(puVar24 + 0x384d4) + -0x62b8" (pointer_expression "*(int *)(puVar24 + 0x384d4)" * (cast_expression "(int *)(puVar24 + 0x384d4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x384d4)" ( (binary_expression "puVar24 + 0x384d4" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "()" ( )))) ;) (expression_statement "piVar15[2] = 0;" (assignment_expression "piVar15[2] = 0" (subscript_expression "piVar15[2]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (iVar12 != 0) {\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }" { (expression_statement "iVar13 = *(int *)*piVar15;" (assignment_expression "iVar13 = *(int *)*piVar15" identifier = (pointer_expression "*(int *)*piVar15" * (cast_expression "(int *)*piVar15" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar15" * identifier)))) ;) (expression_statement "iVar16 = *(int *)(iVar13 + 0xc);" (assignment_expression "iVar16 = *(int *)(iVar13 + 0xc)" identifier = (pointer_expression "*(int *)(iVar13 + 0xc)" * (cast_expression "(int *)(iVar13 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0xc)" ( (binary_expression "iVar13 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar20 = *(int *)(puVar24 + 0x3826c);" (assignment_expression "iVar20 = *(int *)(puVar24 + 0x3826c)" identifier = (pointer_expression "*(int *)(puVar24 + 0x3826c)" * (cast_expression "(int *)(puVar24 + 0x3826c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x3826c)" ( (binary_expression "puVar24 + 0x3826c" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x001587e4;" goto statement_identifier ;) })) })) (expression_statement "iVar13 = piVar15[1];" (assignment_expression "iVar13 = piVar15[1]" identifier = (subscript_expression "piVar15[1]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(iVar13 + 0x10) != 0) {\n    *(undefined4 *)(iVar13 + 0x10) = 0;\n    FUN_00157d5c(iVar13);\n  }" if (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    *(undefined4 *)(iVar13 + 0x10) = 0;\n    FUN_00157d5c(iVar13);\n  }" { (expression_statement "*(undefined4 *)(iVar13 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(iVar13 + 0x10) = 0" (pointer_expression "*(undefined4 *)(iVar13 + 0x10)" * (cast_expression "(undefined4 *)(iVar13 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x10)" ( (binary_expression "iVar13 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00157d5c(iVar13);" (call_expression "FUN_00157d5c(iVar13)" identifier (argument_list "(iVar13)" ( identifier ))) ;) })) (expression_statement "pcVar25 = *(code **)(puVar24 + 0x38578);" (assignment_expression "pcVar25 = *(code **)(puVar24 + 0x38578)" identifier = (pointer_expression "*(code **)(puVar24 + 0x38578)" * (cast_expression "(code **)(puVar24 + 0x38578)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x38578)" ( (binary_expression "puVar24 + 0x38578" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(iVar13 + 0x28) != 0) {\n    *(undefined4 *)(iVar13 + 0x28) = 0;\n    (*pcVar25)();\n  }" if (parenthesized_expression "(*(int *)(iVar13 + 0x28) != 0)" ( (binary_expression "*(int *)(iVar13 + 0x28) != 0" (pointer_expression "*(int *)(iVar13 + 0x28)" * (cast_expression "(int *)(iVar13 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x28)" ( (binary_expression "iVar13 + 0x28" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    *(undefined4 *)(iVar13 + 0x28) = 0;\n    (*pcVar25)();\n  }" { (expression_statement "*(undefined4 *)(iVar13 + 0x28) = 0;" (assignment_expression "*(undefined4 *)(iVar13 + 0x28) = 0" (pointer_expression "*(undefined4 *)(iVar13 + 0x28)" * (cast_expression "(undefined4 *)(iVar13 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x28)" ( (binary_expression "iVar13 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar25)();" (call_expression "(*pcVar25)()" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "iVar12 = *(int *)(iVar13 + 0x24);" (assignment_expression "iVar12 = *(int *)(iVar13 + 0x24)" identifier = (pointer_expression "*(int *)(iVar13 + 0x24)" * (cast_expression "(int *)(iVar13 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x24)" ( (binary_expression "iVar13 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(iVar13 + 0x24) = 0" (pointer_expression "*(undefined4 *)(iVar13 + 0x24)" * (cast_expression "(undefined4 *)(iVar13 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x24)" ( (binary_expression "iVar13 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = *(int *)*piVar15;" (assignment_expression "iVar13 = *(int *)*piVar15" identifier = (pointer_expression "*(int *)*piVar15" * (cast_expression "(int *)*piVar15" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar15" * identifier)))) ;) (expression_statement "iVar16 = *(int *)(iVar13 + 0xc);" (assignment_expression "iVar16 = *(int *)(iVar13 + 0xc)" identifier = (pointer_expression "*(int *)(iVar13 + 0xc)" * (cast_expression "(int *)(iVar13 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0xc)" ( (binary_expression "iVar13 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar20 = *(int *)(puVar24 + 0x3826c);" (assignment_expression "iVar20 = *(int *)(puVar24 + 0x3826c)" identifier = (pointer_expression "*(int *)(puVar24 + 0x3826c)" * (cast_expression "(int *)(puVar24 + 0x3826c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x3826c)" ( (binary_expression "puVar24 + 0x3826c" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x001587e4:\n  if (iVar16 == 0) {\n    *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n    *(undefined4 *)(iVar13 + 0x28) = uVar18;\n    return iVar12;\n  }" statement_identifier : (if_statement "if (iVar16 == 0) {\n    *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n    *(undefined4 *)(iVar13 + 0x28) = uVar18;\n    return iVar12;\n  }" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (compound_statement "{\n    *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n    *(undefined4 *)(iVar13 + 0x28) = uVar18;\n    return iVar12;\n  }" { (expression_statement "*(undefined4 *)(iVar13 + 0x2c) = uVar19;" (assignment_expression "*(undefined4 *)(iVar13 + 0x2c) = uVar19" (pointer_expression "*(undefined4 *)(iVar13 + 0x2c)" * (cast_expression "(undefined4 *)(iVar13 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x2c)" ( (binary_expression "iVar13 + 0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x28) = uVar18;" (assignment_expression "*(undefined4 *)(iVar13 + 0x28) = uVar18" (pointer_expression "*(undefined4 *)(iVar13 + 0x28)" * (cast_expression "(undefined4 *)(iVar13 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x28)" ( (binary_expression "iVar13 + 0x28" identifier + number_literal) )))) = identifier) ;) (return_statement "return iVar12;" return identifier ;) }))) (expression_statement "(**(code **)(iVar20 + -0xb1c))();" (call_expression "(**(code **)(iVar20 + -0xb1c))()" (parenthesized_expression "(**(code **)(iVar20 + -0xb1c))" ( (pointer_expression "**(code **)(iVar20 + -0xb1c)" * (pointer_expression "*(code **)(iVar20 + -0xb1c)" * (cast_expression "(code **)(iVar20 + -0xb1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar20 + -0xb1c)" ( (binary_expression "iVar20 + -0xb1c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x2c) = uVar19;" (assignment_expression "*(undefined4 *)(iVar13 + 0x2c) = uVar19" (pointer_expression "*(undefined4 *)(iVar13 + 0x2c)" * (cast_expression "(undefined4 *)(iVar13 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x2c)" ( (binary_expression "iVar13 + 0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x28) = uVar18;" (assignment_expression "*(undefined4 *)(iVar13 + 0x28) = uVar18" (pointer_expression "*(undefined4 *)(iVar13 + 0x28)" * (cast_expression "(undefined4 *)(iVar13 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x28)" ( (binary_expression "iVar13 + 0x28" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(int *)(iVar13 + 0xc) != 0) {\n    (**(code **)(iVar20 + -0xb14))();\n  }" if (parenthesized_expression "(*(int *)(iVar13 + 0xc) != 0)" ( (binary_expression "*(int *)(iVar13 + 0xc) != 0" (pointer_expression "*(int *)(iVar13 + 0xc)" * (cast_expression "(int *)(iVar13 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0xc)" ( (binary_expression "iVar13 + 0xc" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    (**(code **)(iVar20 + -0xb14))();\n  }" { (expression_statement "(**(code **)(iVar20 + -0xb14))();" (call_expression "(**(code **)(iVar20 + -0xb14))()" (parenthesized_expression "(**(code **)(iVar20 + -0xb14))" ( (pointer_expression "**(code **)(iVar20 + -0xb14)" * (pointer_expression "*(code **)(iVar20 + -0xb14)" * (cast_expression "(code **)(iVar20 + -0xb14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar20 + -0xb14)" ( (binary_expression "iVar20 + -0xb14" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) (return_statement "return iVar12;" return identifier ;) })))
(translation_unit "void fts5FlushOneHash(Fts5Index *p)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  char *pcVar3;\n  u8 *puVar4;\n  Fts5Structure *pFVar5;\n  int iVar6;\n  int iVar7;\n  Fts5StructureSegment *pFVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  Fts5HashEntry *pFVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  Fts5Hash *pFVar17;\n  Fts5Config *pFVar18;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar19;\n  sqlite3 *psVar20;\n  Fts5Index *pFVar21;\n  sqlite3_mutex *psVar22;\n  uint uVar23;\n  Fts5Index *pFVar24;\n  int iVar25;\n  undefined4 uVar26;\n  int iVar27;\n  u8 *puVar28;\n  undefined4 uVar29;\n  int iVar30;\n  int iVar31;\n  int iVar32;\n  int iVar33;\n  code *pcVar34;\n  code *pcVar35;\n  undefined1 *bInsert;\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  puVar2 = PTR___stack_chk_guard_00190e24;\n  bInsert = &_gp;\n  pFVar21 = (Fts5Index *)&p->pStruct;\n  pgnoLast = 0;\n  pFVar17 = p->pHash;\n  iVar6 = *(int *)PTR___stack_chk_guard_00190e24;\n  pStruct = fts5StructureRead(p);\n  if (p->rc == 0) {\n    if (1999 < pStruct->nSegment) {\n      p->rc = 0xd;\n      goto LAB_00157de0;\n    }\n    iVar25 = (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3b44))(pStruct);\n    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))();\n    if (iVar25 == 0) {\nLAB_0015817c:\n      iVar7 = p->rc;\n    }\n    else {\n      iVar30 = p->pConfig->pgsz;\n      iVar7 = p->pConfig->eDetail;\n      (*(code *)(*(int *)(bInsert + -0x7cbc) + 0xf64))(p,&writer,iVar25);\n      if (p->rc == 0) {\n        iVar27 = (*(code *)(*(int *)(bInsert + -0x7d68) + 0x71a8))(pFVar17,0,0,&pFVar17->pScan);\n        p->rc = iVar27;\n        if ((iVar27 != 0) ||\n           (iVar27 = *(int *)(bInsert + -0x7d7c), pFVar17->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00158078;\n        iVar31 = *(int *)(bInsert + -0x7d70);\n        iVar9 = *(int *)(bInsert + -0x7de0);\n        iVar10 = *(int *)(bInsert + -0x7d70);\n        iVar11 = *(int *)(bInsert + -0x7d7c);\n        do {\n          (*(code *)(iVar27 + 0x76a8))(pFVar17,&zTerm,&pDoclist,&nDoclist);\n          pcVar3 = zTerm;\n          uVar26 = (**(code **)(bInsert + -0x7ba0))(zTerm);\n          (*(code *)(iVar31 + -0x5434))(p,&writer,uVar26,pcVar3);\n          if (p->rc != 0) goto LAB_00158078;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar30) {\n            (**(code **)(bInsert + -0x7af4))(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_00158078;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar33 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta);\n              iVar13 = iVar33 + iVar13;\n              uVar23 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                if (iVar7 != 1) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }\nLAB_001583dc:\n                iVar33 = iVar13;\n                iVar19 = writer.writer.buf.n;\n                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar19;\n                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }\n                iVar14 = p->rc;\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\n              }\n              if (iVar14 != 0) goto LAB_00158078;\n              bVar1 = iVar33 < nDoclist;\n              uStack_f4 = uVar23;\n            }\n          }\n          pFVar12 = pFVar17->pScan->pScanNext;\n          pFVar17->pScan = pFVar12;\n          iVar33 = *(int *)(bInsert + -0x7d78);\n        } while ((p->rc == 0) && (pFVar12 != (Fts5HashEntry *)0x0));\n      }\n      else {\nLAB_00158078:\n        iVar33 = *(int *)(bInsert + -0x7d78);\n      }\n      pFVar24 = (Fts5Index *)&p->rc;\n      (*(code *)(iVar33 + 0xe8))(pFVar17);\n      pFVar21 = p;\n      (*(code *)(*(int *)(bInsert + -0x7d70) + -0x5098))(p,&writer,&pgnoLast);\n      if (pStruct->nLevel == 0) {\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          pFVar21 = pFVar24;\n          (*(code *)(*(int *)(bInsert + -0x7cf4) + -0x1080))(pFVar24,&pStruct);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          fts5StructureExtendLevel((int *)pFVar24,pStruct,0,0,(int)bInsert);\n          iVar7 = p->rc;\n          pFVar21 = pFVar24;\n          if (iVar7 == 0) {\n            pFVar21 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&pFVar21->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)pFVar21;\n            pFVar8->iSegid = iVar25;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              pFVar21 = p;\n              fts5StructurePromote(p,0,pStruct);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00157de0:\n    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))();\n    iVar7 = p->rc;\n  }\n  pFVar5 = pStruct;\n  pFVar18 = p->pConfig;\n  if ((iVar7 == 0) && (pFVar21 = (Fts5Index *)pFVar18->nAutomerge, 0 < (int)pFVar21)) {\n    iVar30 = (int)pStruct->nWriteCounter;\n    iVar27 = *(int *)&pStruct->nWriteCounter;\n    iVar7 = p->nWorkUnit;\n    uVar23 = pgnoLast + iVar30;\n    *(uint *)((int)&pStruct->nWriteCounter + 4) = uVar23;\n    iVar25 = (uint)(uVar23 < (uint)pgnoLast) + (pgnoLast >> 0x1f) + iVar27;\n    *(int *)&pStruct->nWriteCounter = iVar25;\n    iVar31 = p->pConfig->nAutomerge;\n    __udivdi3(iVar25,uVar23,iVar7 >> 0x1f,iVar7);\n    __udivdi3(iVar27,iVar30,iVar7 >> 0x1f,iVar7);\n    pFVar21 = p;\n    fts5IndexMerge(p,&pStruct,(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar5->nLevel,iVar31)\n    ;\n    pFVar18 = p->pConfig;\n    iVar7 = p->rc;\n  }\n  iVar30 = 0;\n  iVar25 = pFVar18->nCrisisMerge;\n  writer.iSegid = (int)pStruct;\n  while (pFVar5 = (Fts5Structure *)writer.iSegid, iVar7 == 0) {\n    while( true ) {\n      if (*(int *)(writer.iSegid + iVar30 * 0xc + 0x1c) < iVar25) {\n        pStruct = (Fts5Structure *)writer.iSegid;\n        (*(code *)(*(int *)(bInsert + -0x7d70) + -0x5abc))(p,writer.iSegid);\n        pFVar21 = p;\n        pFVar5 = pStruct;\n        goto LAB_00157ea0;\n      }\n      pFVar21 = p;\n      fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar30,(int *)0x0);\n      iVar30 = iVar30 + 1;\n      iVar7 = p->rc;\n      if (iVar7 != 0) break;\n      pFVar21 = p;\n      fts5StructurePromote(p,iVar30,(Fts5Structure *)writer.iSegid);\n      pFVar5 = (Fts5Structure *)writer.iSegid;\n      if (p->rc != 0) goto LAB_00157ea0;\n    }\n  }\nLAB_00157ea0:\n  pStruct = pFVar5;\n  if ((pStruct != (Fts5Structure *)0x0) &&\n     (iVar25 = pStruct->nRef + -1, pStruct->nRef = iVar25, iVar25 < 1)) {\n    pFVar21 = (Fts5Index *)pStruct;\n    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x380c))();\n  }\n  if (iVar6 == *(int *)puVar2) {\n    return;\n  }\n  pcVar34 = *(code **)(bInsert + -0x7b28);\n  (*pcVar34)();\n  psVar20 = pFVar21->pConfig->db;\n  uVar29 = (undefined4)psVar20->lastRowid;\n  uVar26 = *(undefined4 *)&psVar20->lastRowid;\n  if (pFVar21->nWorkUnit != 0) {\n    iVar6 = (*(code *)(*(int *)(pcVar34 + 0x384d4) + -0x62b8))();\n    pFVar21->nWorkUnit = 0;\n    if (iVar6 != 0) {\n      psVar20 = pFVar21->pConfig->db;\n      psVar22 = psVar20->mutex;\n      iVar6 = *(int *)(pcVar34 + 0x3826c);\n      goto joined_r0x001587e4;\n    }\n  }\n  pFVar24 = (Fts5Index *)pFVar21->zDataTbl;\n  if (pFVar24->nPendingData != 0) {\n    pFVar24->nPendingData = 0;\n    fts5FlushOneHash(pFVar24);\n  }\n  pcVar35 = *(code **)(pcVar34 + 0x38578);\n  if (pFVar24->pReader != (sqlite3_blob *)0x0) {\n    pFVar24->pReader = (sqlite3_blob *)0x0;\n    (*pcVar35)();\n  }\n  pFVar24->rc = 0;\n  psVar20 = pFVar21->pConfig->db;\n  psVar22 = psVar20->mutex;\n  iVar6 = *(int *)(pcVar34 + 0x3826c);\njoined_r0x001587e4:\n  if (psVar22 == (sqlite3_mutex *)0x0) {\n    *(undefined4 *)((int)&psVar20->lastRowid + 4) = uVar29;\n    *(undefined4 *)&psVar20->lastRowid = uVar26;\n    return;\n  }\n  (**(code **)(iVar6 + -0xb1c))();\n  psVar22 = psVar20->mutex;\n  *(undefined4 *)((int)&psVar20->lastRowid + 4) = uVar29;\n  *(undefined4 *)&psVar20->lastRowid = uVar26;\n  if (psVar22 != (sqlite3_mutex *)0x0) {\n    (**(code **)(iVar6 + -0xb14))();\n  }\n  return;\n}\n\n" (function_definition "void fts5FlushOneHash(Fts5Index *p)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  char *pcVar3;\n  u8 *puVar4;\n  Fts5Structure *pFVar5;\n  int iVar6;\n  int iVar7;\n  Fts5StructureSegment *pFVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  Fts5HashEntry *pFVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  Fts5Hash *pFVar17;\n  Fts5Config *pFVar18;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar19;\n  sqlite3 *psVar20;\n  Fts5Index *pFVar21;\n  sqlite3_mutex *psVar22;\n  uint uVar23;\n  Fts5Index *pFVar24;\n  int iVar25;\n  undefined4 uVar26;\n  int iVar27;\n  u8 *puVar28;\n  undefined4 uVar29;\n  int iVar30;\n  int iVar31;\n  int iVar32;\n  int iVar33;\n  code *pcVar34;\n  code *pcVar35;\n  undefined1 *bInsert;\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  puVar2 = PTR___stack_chk_guard_00190e24;\n  bInsert = &_gp;\n  pFVar21 = (Fts5Index *)&p->pStruct;\n  pgnoLast = 0;\n  pFVar17 = p->pHash;\n  iVar6 = *(int *)PTR___stack_chk_guard_00190e24;\n  pStruct = fts5StructureRead(p);\n  if (p->rc == 0) {\n    if (1999 < pStruct->nSegment) {\n      p->rc = 0xd;\n      goto LAB_00157de0;\n    }\n    iVar25 = (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3b44))(pStruct);\n    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))();\n    if (iVar25 == 0) {\nLAB_0015817c:\n      iVar7 = p->rc;\n    }\n    else {\n      iVar30 = p->pConfig->pgsz;\n      iVar7 = p->pConfig->eDetail;\n      (*(code *)(*(int *)(bInsert + -0x7cbc) + 0xf64))(p,&writer,iVar25);\n      if (p->rc == 0) {\n        iVar27 = (*(code *)(*(int *)(bInsert + -0x7d68) + 0x71a8))(pFVar17,0,0,&pFVar17->pScan);\n        p->rc = iVar27;\n        if ((iVar27 != 0) ||\n           (iVar27 = *(int *)(bInsert + -0x7d7c), pFVar17->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00158078;\n        iVar31 = *(int *)(bInsert + -0x7d70);\n        iVar9 = *(int *)(bInsert + -0x7de0);\n        iVar10 = *(int *)(bInsert + -0x7d70);\n        iVar11 = *(int *)(bInsert + -0x7d7c);\n        do {\n          (*(code *)(iVar27 + 0x76a8))(pFVar17,&zTerm,&pDoclist,&nDoclist);\n          pcVar3 = zTerm;\n          uVar26 = (**(code **)(bInsert + -0x7ba0))(zTerm);\n          (*(code *)(iVar31 + -0x5434))(p,&writer,uVar26,pcVar3);\n          if (p->rc != 0) goto LAB_00158078;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar30) {\n            (**(code **)(bInsert + -0x7af4))(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_00158078;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar33 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta);\n              iVar13 = iVar33 + iVar13;\n              uVar23 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                if (iVar7 != 1) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }\nLAB_001583dc:\n                iVar33 = iVar13;\n                iVar19 = writer.writer.buf.n;\n                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar19;\n                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }\n                iVar14 = p->rc;\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\n              }\n              if (iVar14 != 0) goto LAB_00158078;\n              bVar1 = iVar33 < nDoclist;\n              uStack_f4 = uVar23;\n            }\n          }\n          pFVar12 = pFVar17->pScan->pScanNext;\n          pFVar17->pScan = pFVar12;\n          iVar33 = *(int *)(bInsert + -0x7d78);\n        } while ((p->rc == 0) && (pFVar12 != (Fts5HashEntry *)0x0));\n      }\n      else {\nLAB_00158078:\n        iVar33 = *(int *)(bInsert + -0x7d78);\n      }\n      pFVar24 = (Fts5Index *)&p->rc;\n      (*(code *)(iVar33 + 0xe8))(pFVar17);\n      pFVar21 = p;\n      (*(code *)(*(int *)(bInsert + -0x7d70) + -0x5098))(p,&writer,&pgnoLast);\n      if (pStruct->nLevel == 0) {\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          pFVar21 = pFVar24;\n          (*(code *)(*(int *)(bInsert + -0x7cf4) + -0x1080))(pFVar24,&pStruct);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          fts5StructureExtendLevel((int *)pFVar24,pStruct,0,0,(int)bInsert);\n          iVar7 = p->rc;\n          pFVar21 = pFVar24;\n          if (iVar7 == 0) {\n            pFVar21 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&pFVar21->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)pFVar21;\n            pFVar8->iSegid = iVar25;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              pFVar21 = p;\n              fts5StructurePromote(p,0,pStruct);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00157de0:\n    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))();\n    iVar7 = p->rc;\n  }\n  pFVar5 = pStruct;\n  pFVar18 = p->pConfig;\n  if ((iVar7 == 0) && (pFVar21 = (Fts5Index *)pFVar18->nAutomerge, 0 < (int)pFVar21)) {\n    iVar30 = (int)pStruct->nWriteCounter;\n    iVar27 = *(int *)&pStruct->nWriteCounter;\n    iVar7 = p->nWorkUnit;\n    uVar23 = pgnoLast + iVar30;\n    *(uint *)((int)&pStruct->nWriteCounter + 4) = uVar23;\n    iVar25 = (uint)(uVar23 < (uint)pgnoLast) + (pgnoLast >> 0x1f) + iVar27;\n    *(int *)&pStruct->nWriteCounter = iVar25;\n    iVar31 = p->pConfig->nAutomerge;\n    __udivdi3(iVar25,uVar23,iVar7 >> 0x1f,iVar7);\n    __udivdi3(iVar27,iVar30,iVar7 >> 0x1f,iVar7);\n    pFVar21 = p;\n    fts5IndexMerge(p,&pStruct,(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar5->nLevel,iVar31)\n    ;\n    pFVar18 = p->pConfig;\n    iVar7 = p->rc;\n  }\n  iVar30 = 0;\n  iVar25 = pFVar18->nCrisisMerge;\n  writer.iSegid = (int)pStruct;\n  while (pFVar5 = (Fts5Structure *)writer.iSegid, iVar7 == 0) {\n    while( true ) {\n      if (*(int *)(writer.iSegid + iVar30 * 0xc + 0x1c) < iVar25) {\n        pStruct = (Fts5Structure *)writer.iSegid;\n        (*(code *)(*(int *)(bInsert + -0x7d70) + -0x5abc))(p,writer.iSegid);\n        pFVar21 = p;\n        pFVar5 = pStruct;\n        goto LAB_00157ea0;\n      }\n      pFVar21 = p;\n      fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar30,(int *)0x0);\n      iVar30 = iVar30 + 1;\n      iVar7 = p->rc;\n      if (iVar7 != 0) break;\n      pFVar21 = p;\n      fts5StructurePromote(p,iVar30,(Fts5Structure *)writer.iSegid);\n      pFVar5 = (Fts5Structure *)writer.iSegid;\n      if (p->rc != 0) goto LAB_00157ea0;\n    }\n  }\nLAB_00157ea0:\n  pStruct = pFVar5;\n  if ((pStruct != (Fts5Structure *)0x0) &&\n     (iVar25 = pStruct->nRef + -1, pStruct->nRef = iVar25, iVar25 < 1)) {\n    pFVar21 = (Fts5Index *)pStruct;\n    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x380c))();\n  }\n  if (iVar6 == *(int *)puVar2) {\n    return;\n  }\n  pcVar34 = *(code **)(bInsert + -0x7b28);\n  (*pcVar34)();\n  psVar20 = pFVar21->pConfig->db;\n  uVar29 = (undefined4)psVar20->lastRowid;\n  uVar26 = *(undefined4 *)&psVar20->lastRowid;\n  if (pFVar21->nWorkUnit != 0) {\n    iVar6 = (*(code *)(*(int *)(pcVar34 + 0x384d4) + -0x62b8))();\n    pFVar21->nWorkUnit = 0;\n    if (iVar6 != 0) {\n      psVar20 = pFVar21->pConfig->db;\n      psVar22 = psVar20->mutex;\n      iVar6 = *(int *)(pcVar34 + 0x3826c);\n      goto joined_r0x001587e4;\n    }\n  }\n  pFVar24 = (Fts5Index *)pFVar21->zDataTbl;\n  if (pFVar24->nPendingData != 0) {\n    pFVar24->nPendingData = 0;\n    fts5FlushOneHash(pFVar24);\n  }\n  pcVar35 = *(code **)(pcVar34 + 0x38578);\n  if (pFVar24->pReader != (sqlite3_blob *)0x0) {\n    pFVar24->pReader = (sqlite3_blob *)0x0;\n    (*pcVar35)();\n  }\n  pFVar24->rc = 0;\n  psVar20 = pFVar21->pConfig->db;\n  psVar22 = psVar20->mutex;\n  iVar6 = *(int *)(pcVar34 + 0x3826c);\njoined_r0x001587e4:\n  if (psVar22 == (sqlite3_mutex *)0x0) {\n    *(undefined4 *)((int)&psVar20->lastRowid + 4) = uVar29;\n    *(undefined4 *)&psVar20->lastRowid = uVar26;\n    return;\n  }\n  (**(code **)(iVar6 + -0xb1c))();\n  psVar22 = psVar20->mutex;\n  *(undefined4 *)((int)&psVar20->lastRowid + 4) = uVar29;\n  *(undefined4 *)&psVar20->lastRowid = uVar26;\n  if (psVar22 != (sqlite3_mutex *)0x0) {\n    (**(code **)(iVar6 + -0xb14))();\n  }\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  undefined *puVar2;\n  char *pcVar3;\n  u8 *puVar4;\n  Fts5Structure *pFVar5;\n  int iVar6;\n  int iVar7;\n  Fts5StructureSegment *pFVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  Fts5HashEntry *pFVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  Fts5Hash *pFVar17;\n  Fts5Config *pFVar18;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar19;\n  sqlite3 *psVar20;\n  Fts5Index *pFVar21;\n  sqlite3_mutex *psVar22;\n  uint uVar23;\n  Fts5Index *pFVar24;\n  int iVar25;\n  undefined4 uVar26;\n  int iVar27;\n  u8 *puVar28;\n  undefined4 uVar29;\n  int iVar30;\n  int iVar31;\n  int iVar32;\n  int iVar33;\n  code *pcVar34;\n  code *pcVar35;\n  undefined1 *bInsert;\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  puVar2 = PTR___stack_chk_guard_00190e24;\n  bInsert = &_gp;\n  pFVar21 = (Fts5Index *)&p->pStruct;\n  pgnoLast = 0;\n  pFVar17 = p->pHash;\n  iVar6 = *(int *)PTR___stack_chk_guard_00190e24;\n  pStruct = fts5StructureRead(p);\n  if (p->rc == 0) {\n    if (1999 < pStruct->nSegment) {\n      p->rc = 0xd;\n      goto LAB_00157de0;\n    }\n    iVar25 = (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3b44))(pStruct);\n    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))();\n    if (iVar25 == 0) {\nLAB_0015817c:\n      iVar7 = p->rc;\n    }\n    else {\n      iVar30 = p->pConfig->pgsz;\n      iVar7 = p->pConfig->eDetail;\n      (*(code *)(*(int *)(bInsert + -0x7cbc) + 0xf64))(p,&writer,iVar25);\n      if (p->rc == 0) {\n        iVar27 = (*(code *)(*(int *)(bInsert + -0x7d68) + 0x71a8))(pFVar17,0,0,&pFVar17->pScan);\n        p->rc = iVar27;\n        if ((iVar27 != 0) ||\n           (iVar27 = *(int *)(bInsert + -0x7d7c), pFVar17->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00158078;\n        iVar31 = *(int *)(bInsert + -0x7d70);\n        iVar9 = *(int *)(bInsert + -0x7de0);\n        iVar10 = *(int *)(bInsert + -0x7d70);\n        iVar11 = *(int *)(bInsert + -0x7d7c);\n        do {\n          (*(code *)(iVar27 + 0x76a8))(pFVar17,&zTerm,&pDoclist,&nDoclist);\n          pcVar3 = zTerm;\n          uVar26 = (**(code **)(bInsert + -0x7ba0))(zTerm);\n          (*(code *)(iVar31 + -0x5434))(p,&writer,uVar26,pcVar3);\n          if (p->rc != 0) goto LAB_00158078;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar30) {\n            (**(code **)(bInsert + -0x7af4))(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_00158078;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar33 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta);\n              iVar13 = iVar33 + iVar13;\n              uVar23 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                if (iVar7 != 1) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }\nLAB_001583dc:\n                iVar33 = iVar13;\n                iVar19 = writer.writer.buf.n;\n                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar19;\n                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }\n                iVar14 = p->rc;\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\n              }\n              if (iVar14 != 0) goto LAB_00158078;\n              bVar1 = iVar33 < nDoclist;\n              uStack_f4 = uVar23;\n            }\n          }\n          pFVar12 = pFVar17->pScan->pScanNext;\n          pFVar17->pScan = pFVar12;\n          iVar33 = *(int *)(bInsert + -0x7d78);\n        } while ((p->rc == 0) && (pFVar12 != (Fts5HashEntry *)0x0));\n      }\n      else {\nLAB_00158078:\n        iVar33 = *(int *)(bInsert + -0x7d78);\n      }\n      pFVar24 = (Fts5Index *)&p->rc;\n      (*(code *)(iVar33 + 0xe8))(pFVar17);\n      pFVar21 = p;\n      (*(code *)(*(int *)(bInsert + -0x7d70) + -0x5098))(p,&writer,&pgnoLast);\n      if (pStruct->nLevel == 0) {\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          pFVar21 = pFVar24;\n          (*(code *)(*(int *)(bInsert + -0x7cf4) + -0x1080))(pFVar24,&pStruct);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          fts5StructureExtendLevel((int *)pFVar24,pStruct,0,0,(int)bInsert);\n          iVar7 = p->rc;\n          pFVar21 = pFVar24;\n          if (iVar7 == 0) {\n            pFVar21 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&pFVar21->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)pFVar21;\n            pFVar8->iSegid = iVar25;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              pFVar21 = p;\n              fts5StructurePromote(p,0,pStruct);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00157de0:\n    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))();\n    iVar7 = p->rc;\n  }\n  pFVar5 = pStruct;\n  pFVar18 = p->pConfig;\n  if ((iVar7 == 0) && (pFVar21 = (Fts5Index *)pFVar18->nAutomerge, 0 < (int)pFVar21)) {\n    iVar30 = (int)pStruct->nWriteCounter;\n    iVar27 = *(int *)&pStruct->nWriteCounter;\n    iVar7 = p->nWorkUnit;\n    uVar23 = pgnoLast + iVar30;\n    *(uint *)((int)&pStruct->nWriteCounter + 4) = uVar23;\n    iVar25 = (uint)(uVar23 < (uint)pgnoLast) + (pgnoLast >> 0x1f) + iVar27;\n    *(int *)&pStruct->nWriteCounter = iVar25;\n    iVar31 = p->pConfig->nAutomerge;\n    __udivdi3(iVar25,uVar23,iVar7 >> 0x1f,iVar7);\n    __udivdi3(iVar27,iVar30,iVar7 >> 0x1f,iVar7);\n    pFVar21 = p;\n    fts5IndexMerge(p,&pStruct,(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar5->nLevel,iVar31)\n    ;\n    pFVar18 = p->pConfig;\n    iVar7 = p->rc;\n  }\n  iVar30 = 0;\n  iVar25 = pFVar18->nCrisisMerge;\n  writer.iSegid = (int)pStruct;\n  while (pFVar5 = (Fts5Structure *)writer.iSegid, iVar7 == 0) {\n    while( true ) {\n      if (*(int *)(writer.iSegid + iVar30 * 0xc + 0x1c) < iVar25) {\n        pStruct = (Fts5Structure *)writer.iSegid;\n        (*(code *)(*(int *)(bInsert + -0x7d70) + -0x5abc))(p,writer.iSegid);\n        pFVar21 = p;\n        pFVar5 = pStruct;\n        goto LAB_00157ea0;\n      }\n      pFVar21 = p;\n      fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar30,(int *)0x0);\n      iVar30 = iVar30 + 1;\n      iVar7 = p->rc;\n      if (iVar7 != 0) break;\n      pFVar21 = p;\n      fts5StructurePromote(p,iVar30,(Fts5Structure *)writer.iSegid);\n      pFVar5 = (Fts5Structure *)writer.iSegid;\n      if (p->rc != 0) goto LAB_00157ea0;\n    }\n  }\nLAB_00157ea0:\n  pStruct = pFVar5;\n  if ((pStruct != (Fts5Structure *)0x0) &&\n     (iVar25 = pStruct->nRef + -1, pStruct->nRef = iVar25, iVar25 < 1)) {\n    pFVar21 = (Fts5Index *)pStruct;\n    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x380c))();\n  }\n  if (iVar6 == *(int *)puVar2) {\n    return;\n  }\n  pcVar34 = *(code **)(bInsert + -0x7b28);\n  (*pcVar34)();\n  psVar20 = pFVar21->pConfig->db;\n  uVar29 = (undefined4)psVar20->lastRowid;\n  uVar26 = *(undefined4 *)&psVar20->lastRowid;\n  if (pFVar21->nWorkUnit != 0) {\n    iVar6 = (*(code *)(*(int *)(pcVar34 + 0x384d4) + -0x62b8))();\n    pFVar21->nWorkUnit = 0;\n    if (iVar6 != 0) {\n      psVar20 = pFVar21->pConfig->db;\n      psVar22 = psVar20->mutex;\n      iVar6 = *(int *)(pcVar34 + 0x3826c);\n      goto joined_r0x001587e4;\n    }\n  }\n  pFVar24 = (Fts5Index *)pFVar21->zDataTbl;\n  if (pFVar24->nPendingData != 0) {\n    pFVar24->nPendingData = 0;\n    fts5FlushOneHash(pFVar24);\n  }\n  pcVar35 = *(code **)(pcVar34 + 0x38578);\n  if (pFVar24->pReader != (sqlite3_blob *)0x0) {\n    pFVar24->pReader = (sqlite3_blob *)0x0;\n    (*pcVar35)();\n  }\n  pFVar24->rc = 0;\n  psVar20 = pFVar21->pConfig->db;\n  psVar22 = psVar20->mutex;\n  iVar6 = *(int *)(pcVar34 + 0x3826c);\njoined_r0x001587e4:\n  if (psVar22 == (sqlite3_mutex *)0x0) {\n    *(undefined4 *)((int)&psVar20->lastRowid + 4) = uVar29;\n    *(undefined4 *)&psVar20->lastRowid = uVar26;\n    return;\n  }\n  (**(code **)(iVar6 + -0xb1c))();\n  psVar22 = psVar20->mutex;\n  *(undefined4 *)((int)&psVar20->lastRowid + 4) = uVar29;\n  *(undefined4 *)&psVar20->lastRowid = uVar26;\n  if (psVar22 != (sqlite3_mutex *)0x0) {\n    (**(code **)(iVar6 + -0xb14))();\n  }\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "u8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "Fts5Structure *pFVar5;" type_identifier (pointer_declarator "*pFVar5" * 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 "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "Fts5HashEntry *pFVar12;" type_identifier (pointer_declarator "*pFVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "Fts5Hash *pFVar17;" type_identifier (pointer_declarator "*pFVar17" * identifier) ;) (declaration "Fts5Config *pFVar18;" type_identifier (pointer_declarator "*pFVar18" * identifier) ;) (declaration "int extraout_v1;" primitive_type identifier ;) (declaration "int extraout_v1_00;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "sqlite3 *psVar20;" type_identifier (pointer_declarator "*psVar20" * identifier) ;) (declaration "Fts5Index *pFVar21;" type_identifier (pointer_declarator "*pFVar21" * identifier) ;) (declaration "sqlite3_mutex *psVar22;" type_identifier (pointer_declarator "*psVar22" * identifier) ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "Fts5Index *pFVar24;" type_identifier (pointer_declarator "*pFVar24" * identifier) ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "undefined4 uVar26;" type_identifier identifier ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "u8 *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "undefined4 uVar29;" type_identifier identifier ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "int iVar31;" primitive_type identifier ;) (declaration "int iVar32;" primitive_type identifier ;) (declaration "int iVar33;" primitive_type identifier ;) (declaration "code *pcVar34;" type_identifier (pointer_declarator "*pcVar34" * identifier) ;) (declaration "code *pcVar35;" type_identifier (pointer_declarator "*pcVar35" * identifier) ;) (declaration "undefined1 *bInsert;" type_identifier (pointer_declarator "*bInsert" * 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 "puVar2 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00190e24" identifier = identifier) ;) (expression_statement "bInsert = &_gp;" (assignment_expression "bInsert = &_gp" identifier = (pointer_expression "&_gp" & identifier)) ;) (expression_statement "pFVar21 = (Fts5Index *)&p->pStruct;" (assignment_expression "pFVar21 = (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 "pFVar17 = p->pHash;" (assignment_expression "pFVar17 = p->pHash" identifier = (field_expression "p->pHash" identifier -> field_identifier)) ;) (expression_statement "iVar6 = *(int *)PTR___stack_chk_guard_00190e24;" (assignment_expression "iVar6 = *(int *)PTR___stack_chk_guard_00190e24" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00190e24" * (cast_expression "(int *)PTR___stack_chk_guard_00190e24" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) 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_00157de0;\n    }\n    iVar25 = (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3b44))(pStruct);\n    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))();\n    if (iVar25 == 0) {\nLAB_0015817c:\n      iVar7 = p->rc;\n    }\n    else {\n      iVar30 = p->pConfig->pgsz;\n      iVar7 = p->pConfig->eDetail;\n      (*(code *)(*(int *)(bInsert + -0x7cbc) + 0xf64))(p,&writer,iVar25);\n      if (p->rc == 0) {\n        iVar27 = (*(code *)(*(int *)(bInsert + -0x7d68) + 0x71a8))(pFVar17,0,0,&pFVar17->pScan);\n        p->rc = iVar27;\n        if ((iVar27 != 0) ||\n           (iVar27 = *(int *)(bInsert + -0x7d7c), pFVar17->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00158078;\n        iVar31 = *(int *)(bInsert + -0x7d70);\n        iVar9 = *(int *)(bInsert + -0x7de0);\n        iVar10 = *(int *)(bInsert + -0x7d70);\n        iVar11 = *(int *)(bInsert + -0x7d7c);\n        do {\n          (*(code *)(iVar27 + 0x76a8))(pFVar17,&zTerm,&pDoclist,&nDoclist);\n          pcVar3 = zTerm;\n          uVar26 = (**(code **)(bInsert + -0x7ba0))(zTerm);\n          (*(code *)(iVar31 + -0x5434))(p,&writer,uVar26,pcVar3);\n          if (p->rc != 0) goto LAB_00158078;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar30) {\n            (**(code **)(bInsert + -0x7af4))(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_00158078;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar33 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta);\n              iVar13 = iVar33 + iVar13;\n              uVar23 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                if (iVar7 != 1) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }\nLAB_001583dc:\n                iVar33 = iVar13;\n                iVar19 = writer.writer.buf.n;\n                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar19;\n                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }\n                iVar14 = p->rc;\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\n              }\n              if (iVar14 != 0) goto LAB_00158078;\n              bVar1 = iVar33 < nDoclist;\n              uStack_f4 = uVar23;\n            }\n          }\n          pFVar12 = pFVar17->pScan->pScanNext;\n          pFVar17->pScan = pFVar12;\n          iVar33 = *(int *)(bInsert + -0x7d78);\n        } while ((p->rc == 0) && (pFVar12 != (Fts5HashEntry *)0x0));\n      }\n      else {\nLAB_00158078:\n        iVar33 = *(int *)(bInsert + -0x7d78);\n      }\n      pFVar24 = (Fts5Index *)&p->rc;\n      (*(code *)(iVar33 + 0xe8))(pFVar17);\n      pFVar21 = p;\n      (*(code *)(*(int *)(bInsert + -0x7d70) + -0x5098))(p,&writer,&pgnoLast);\n      if (pStruct->nLevel == 0) {\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          pFVar21 = pFVar24;\n          (*(code *)(*(int *)(bInsert + -0x7cf4) + -0x1080))(pFVar24,&pStruct);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          fts5StructureExtendLevel((int *)pFVar24,pStruct,0,0,(int)bInsert);\n          iVar7 = p->rc;\n          pFVar21 = pFVar24;\n          if (iVar7 == 0) {\n            pFVar21 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&pFVar21->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)pFVar21;\n            pFVar8->iSegid = iVar25;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              pFVar21 = p;\n              fts5StructurePromote(p,0,pStruct);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00157de0:\n    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))();\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_00157de0;\n    }\n    iVar25 = (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3b44))(pStruct);\n    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))();\n    if (iVar25 == 0) {\nLAB_0015817c:\n      iVar7 = p->rc;\n    }\n    else {\n      iVar30 = p->pConfig->pgsz;\n      iVar7 = p->pConfig->eDetail;\n      (*(code *)(*(int *)(bInsert + -0x7cbc) + 0xf64))(p,&writer,iVar25);\n      if (p->rc == 0) {\n        iVar27 = (*(code *)(*(int *)(bInsert + -0x7d68) + 0x71a8))(pFVar17,0,0,&pFVar17->pScan);\n        p->rc = iVar27;\n        if ((iVar27 != 0) ||\n           (iVar27 = *(int *)(bInsert + -0x7d7c), pFVar17->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00158078;\n        iVar31 = *(int *)(bInsert + -0x7d70);\n        iVar9 = *(int *)(bInsert + -0x7de0);\n        iVar10 = *(int *)(bInsert + -0x7d70);\n        iVar11 = *(int *)(bInsert + -0x7d7c);\n        do {\n          (*(code *)(iVar27 + 0x76a8))(pFVar17,&zTerm,&pDoclist,&nDoclist);\n          pcVar3 = zTerm;\n          uVar26 = (**(code **)(bInsert + -0x7ba0))(zTerm);\n          (*(code *)(iVar31 + -0x5434))(p,&writer,uVar26,pcVar3);\n          if (p->rc != 0) goto LAB_00158078;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar30) {\n            (**(code **)(bInsert + -0x7af4))(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_00158078;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar33 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta);\n              iVar13 = iVar33 + iVar13;\n              uVar23 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                if (iVar7 != 1) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }\nLAB_001583dc:\n                iVar33 = iVar13;\n                iVar19 = writer.writer.buf.n;\n                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar19;\n                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }\n                iVar14 = p->rc;\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\n              }\n              if (iVar14 != 0) goto LAB_00158078;\n              bVar1 = iVar33 < nDoclist;\n              uStack_f4 = uVar23;\n            }\n          }\n          pFVar12 = pFVar17->pScan->pScanNext;\n          pFVar17->pScan = pFVar12;\n          iVar33 = *(int *)(bInsert + -0x7d78);\n        } while ((p->rc == 0) && (pFVar12 != (Fts5HashEntry *)0x0));\n      }\n      else {\nLAB_00158078:\n        iVar33 = *(int *)(bInsert + -0x7d78);\n      }\n      pFVar24 = (Fts5Index *)&p->rc;\n      (*(code *)(iVar33 + 0xe8))(pFVar17);\n      pFVar21 = p;\n      (*(code *)(*(int *)(bInsert + -0x7d70) + -0x5098))(p,&writer,&pgnoLast);\n      if (pStruct->nLevel == 0) {\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          pFVar21 = pFVar24;\n          (*(code *)(*(int *)(bInsert + -0x7cf4) + -0x1080))(pFVar24,&pStruct);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          fts5StructureExtendLevel((int *)pFVar24,pStruct,0,0,(int)bInsert);\n          iVar7 = p->rc;\n          pFVar21 = pFVar24;\n          if (iVar7 == 0) {\n            pFVar21 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&pFVar21->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)pFVar21;\n            pFVar8->iSegid = iVar25;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              pFVar21 = p;\n              fts5StructurePromote(p,0,pStruct);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }\n  }" { (if_statement "if (1999 < pStruct->nSegment) {\n      p->rc = 0xd;\n      goto LAB_00157de0;\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_00157de0;\n    }" { (expression_statement "p->rc = 0xd;" (assignment_expression "p->rc = 0xd" (field_expression "p->rc" identifier -> field_identifier) = number_literal) ;) (goto_statement "goto LAB_00157de0;" goto statement_identifier ;) })) (expression_statement "iVar25 = (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3b44))(pStruct);" (assignment_expression "iVar25 = (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3b44))(pStruct)" identifier = (call_expression "(*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3b44))(pStruct)" (parenthesized_expression "(*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3b44))" ( (pointer_expression "*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3b44)" * (cast_expression "(code *)(*(int *)(bInsert + -0x7d7c) + 0x3b44)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(bInsert + -0x7d7c) + 0x3b44)" ( (binary_expression "*(int *)(bInsert + -0x7d7c) + 0x3b44" (pointer_expression "*(int *)(bInsert + -0x7d7c)" * (cast_expression "(int *)(bInsert + -0x7d7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d7c)" ( (binary_expression "bInsert + -0x7d7c" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(pStruct)" ( identifier )))) ;) (expression_statement "(*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))();" (call_expression "(*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))()" (parenthesized_expression "(*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))" ( (pointer_expression "*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894)" * (cast_expression "(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(bInsert + -0x7d7c) + 0x3894)" ( (binary_expression "*(int *)(bInsert + -0x7d7c) + 0x3894" (pointer_expression "*(int *)(bInsert + -0x7d7c)" * (cast_expression "(int *)(bInsert + -0x7d7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d7c)" ( (binary_expression "bInsert + -0x7d7c" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "()" ( ))) ;) (if_statement "if (iVar25 == 0) {\nLAB_0015817c:\n      iVar7 = p->rc;\n    }\n    else {\n      iVar30 = p->pConfig->pgsz;\n      iVar7 = p->pConfig->eDetail;\n      (*(code *)(*(int *)(bInsert + -0x7cbc) + 0xf64))(p,&writer,iVar25);\n      if (p->rc == 0) {\n        iVar27 = (*(code *)(*(int *)(bInsert + -0x7d68) + 0x71a8))(pFVar17,0,0,&pFVar17->pScan);\n        p->rc = iVar27;\n        if ((iVar27 != 0) ||\n           (iVar27 = *(int *)(bInsert + -0x7d7c), pFVar17->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00158078;\n        iVar31 = *(int *)(bInsert + -0x7d70);\n        iVar9 = *(int *)(bInsert + -0x7de0);\n        iVar10 = *(int *)(bInsert + -0x7d70);\n        iVar11 = *(int *)(bInsert + -0x7d7c);\n        do {\n          (*(code *)(iVar27 + 0x76a8))(pFVar17,&zTerm,&pDoclist,&nDoclist);\n          pcVar3 = zTerm;\n          uVar26 = (**(code **)(bInsert + -0x7ba0))(zTerm);\n          (*(code *)(iVar31 + -0x5434))(p,&writer,uVar26,pcVar3);\n          if (p->rc != 0) goto LAB_00158078;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar30) {\n            (**(code **)(bInsert + -0x7af4))(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_00158078;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar33 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta);\n              iVar13 = iVar33 + iVar13;\n              uVar23 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                if (iVar7 != 1) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }\nLAB_001583dc:\n                iVar33 = iVar13;\n                iVar19 = writer.writer.buf.n;\n                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar19;\n                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }\n                iVar14 = p->rc;\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\n              }\n              if (iVar14 != 0) goto LAB_00158078;\n              bVar1 = iVar33 < nDoclist;\n              uStack_f4 = uVar23;\n            }\n          }\n          pFVar12 = pFVar17->pScan->pScanNext;\n          pFVar17->pScan = pFVar12;\n          iVar33 = *(int *)(bInsert + -0x7d78);\n        } while ((p->rc == 0) && (pFVar12 != (Fts5HashEntry *)0x0));\n      }\n      else {\nLAB_00158078:\n        iVar33 = *(int *)(bInsert + -0x7d78);\n      }\n      pFVar24 = (Fts5Index *)&p->rc;\n      (*(code *)(iVar33 + 0xe8))(pFVar17);\n      pFVar21 = p;\n      (*(code *)(*(int *)(bInsert + -0x7d70) + -0x5098))(p,&writer,&pgnoLast);\n      if (pStruct->nLevel == 0) {\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          pFVar21 = pFVar24;\n          (*(code *)(*(int *)(bInsert + -0x7cf4) + -0x1080))(pFVar24,&pStruct);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          fts5StructureExtendLevel((int *)pFVar24,pStruct,0,0,(int)bInsert);\n          iVar7 = p->rc;\n          pFVar21 = pFVar24;\n          if (iVar7 == 0) {\n            pFVar21 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&pFVar21->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)pFVar21;\n            pFVar8->iSegid = iVar25;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              pFVar21 = p;\n              fts5StructurePromote(p,0,pStruct);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "(iVar25 == 0)" ( (binary_expression "iVar25 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0015817c:\n      iVar7 = p->rc;\n    }" { (labeled_statement "LAB_0015817c:\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      iVar30 = p->pConfig->pgsz;\n      iVar7 = p->pConfig->eDetail;\n      (*(code *)(*(int *)(bInsert + -0x7cbc) + 0xf64))(p,&writer,iVar25);\n      if (p->rc == 0) {\n        iVar27 = (*(code *)(*(int *)(bInsert + -0x7d68) + 0x71a8))(pFVar17,0,0,&pFVar17->pScan);\n        p->rc = iVar27;\n        if ((iVar27 != 0) ||\n           (iVar27 = *(int *)(bInsert + -0x7d7c), pFVar17->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00158078;\n        iVar31 = *(int *)(bInsert + -0x7d70);\n        iVar9 = *(int *)(bInsert + -0x7de0);\n        iVar10 = *(int *)(bInsert + -0x7d70);\n        iVar11 = *(int *)(bInsert + -0x7d7c);\n        do {\n          (*(code *)(iVar27 + 0x76a8))(pFVar17,&zTerm,&pDoclist,&nDoclist);\n          pcVar3 = zTerm;\n          uVar26 = (**(code **)(bInsert + -0x7ba0))(zTerm);\n          (*(code *)(iVar31 + -0x5434))(p,&writer,uVar26,pcVar3);\n          if (p->rc != 0) goto LAB_00158078;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar30) {\n            (**(code **)(bInsert + -0x7af4))(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_00158078;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar33 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta);\n              iVar13 = iVar33 + iVar13;\n              uVar23 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                if (iVar7 != 1) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }\nLAB_001583dc:\n                iVar33 = iVar13;\n                iVar19 = writer.writer.buf.n;\n                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar19;\n                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }\n                iVar14 = p->rc;\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\n              }\n              if (iVar14 != 0) goto LAB_00158078;\n              bVar1 = iVar33 < nDoclist;\n              uStack_f4 = uVar23;\n            }\n          }\n          pFVar12 = pFVar17->pScan->pScanNext;\n          pFVar17->pScan = pFVar12;\n          iVar33 = *(int *)(bInsert + -0x7d78);\n        } while ((p->rc == 0) && (pFVar12 != (Fts5HashEntry *)0x0));\n      }\n      else {\nLAB_00158078:\n        iVar33 = *(int *)(bInsert + -0x7d78);\n      }\n      pFVar24 = (Fts5Index *)&p->rc;\n      (*(code *)(iVar33 + 0xe8))(pFVar17);\n      pFVar21 = p;\n      (*(code *)(*(int *)(bInsert + -0x7d70) + -0x5098))(p,&writer,&pgnoLast);\n      if (pStruct->nLevel == 0) {\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          pFVar21 = pFVar24;\n          (*(code *)(*(int *)(bInsert + -0x7cf4) + -0x1080))(pFVar24,&pStruct);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          fts5StructureExtendLevel((int *)pFVar24,pStruct,0,0,(int)bInsert);\n          iVar7 = p->rc;\n          pFVar21 = pFVar24;\n          if (iVar7 == 0) {\n            pFVar21 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&pFVar21->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)pFVar21;\n            pFVar8->iSegid = iVar25;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              pFVar21 = p;\n              fts5StructurePromote(p,0,pStruct);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }" else (compound_statement "{\n      iVar30 = p->pConfig->pgsz;\n      iVar7 = p->pConfig->eDetail;\n      (*(code *)(*(int *)(bInsert + -0x7cbc) + 0xf64))(p,&writer,iVar25);\n      if (p->rc == 0) {\n        iVar27 = (*(code *)(*(int *)(bInsert + -0x7d68) + 0x71a8))(pFVar17,0,0,&pFVar17->pScan);\n        p->rc = iVar27;\n        if ((iVar27 != 0) ||\n           (iVar27 = *(int *)(bInsert + -0x7d7c), pFVar17->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00158078;\n        iVar31 = *(int *)(bInsert + -0x7d70);\n        iVar9 = *(int *)(bInsert + -0x7de0);\n        iVar10 = *(int *)(bInsert + -0x7d70);\n        iVar11 = *(int *)(bInsert + -0x7d7c);\n        do {\n          (*(code *)(iVar27 + 0x76a8))(pFVar17,&zTerm,&pDoclist,&nDoclist);\n          pcVar3 = zTerm;\n          uVar26 = (**(code **)(bInsert + -0x7ba0))(zTerm);\n          (*(code *)(iVar31 + -0x5434))(p,&writer,uVar26,pcVar3);\n          if (p->rc != 0) goto LAB_00158078;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar30) {\n            (**(code **)(bInsert + -0x7af4))(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_00158078;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar33 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta);\n              iVar13 = iVar33 + iVar13;\n              uVar23 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                if (iVar7 != 1) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }\nLAB_001583dc:\n                iVar33 = iVar13;\n                iVar19 = writer.writer.buf.n;\n                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar19;\n                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }\n                iVar14 = p->rc;\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\n              }\n              if (iVar14 != 0) goto LAB_00158078;\n              bVar1 = iVar33 < nDoclist;\n              uStack_f4 = uVar23;\n            }\n          }\n          pFVar12 = pFVar17->pScan->pScanNext;\n          pFVar17->pScan = pFVar12;\n          iVar33 = *(int *)(bInsert + -0x7d78);\n        } while ((p->rc == 0) && (pFVar12 != (Fts5HashEntry *)0x0));\n      }\n      else {\nLAB_00158078:\n        iVar33 = *(int *)(bInsert + -0x7d78);\n      }\n      pFVar24 = (Fts5Index *)&p->rc;\n      (*(code *)(iVar33 + 0xe8))(pFVar17);\n      pFVar21 = p;\n      (*(code *)(*(int *)(bInsert + -0x7d70) + -0x5098))(p,&writer,&pgnoLast);\n      if (pStruct->nLevel == 0) {\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          pFVar21 = pFVar24;\n          (*(code *)(*(int *)(bInsert + -0x7cf4) + -0x1080))(pFVar24,&pStruct);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          fts5StructureExtendLevel((int *)pFVar24,pStruct,0,0,(int)bInsert);\n          iVar7 = p->rc;\n          pFVar21 = pFVar24;\n          if (iVar7 == 0) {\n            pFVar21 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&pFVar21->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)pFVar21;\n            pFVar8->iSegid = iVar25;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              pFVar21 = p;\n              fts5StructurePromote(p,0,pStruct);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }" { (expression_statement "iVar30 = p->pConfig->pgsz;" (assignment_expression "iVar30 = 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 *)(bInsert + -0x7cbc) + 0xf64))(p,&writer,iVar25);" (call_expression "(*(code *)(*(int *)(bInsert + -0x7cbc) + 0xf64))(p,&writer,iVar25)" (parenthesized_expression "(*(code *)(*(int *)(bInsert + -0x7cbc) + 0xf64))" ( (pointer_expression "*(code *)(*(int *)(bInsert + -0x7cbc) + 0xf64)" * (cast_expression "(code *)(*(int *)(bInsert + -0x7cbc) + 0xf64)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(bInsert + -0x7cbc) + 0xf64)" ( (binary_expression "*(int *)(bInsert + -0x7cbc) + 0xf64" (pointer_expression "*(int *)(bInsert + -0x7cbc)" * (cast_expression "(int *)(bInsert + -0x7cbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7cbc)" ( (binary_expression "bInsert + -0x7cbc" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(p,&writer,iVar25)" ( identifier , (pointer_expression "&writer" & identifier) , identifier ))) ;) (if_statement "if (p->rc == 0) {\n        iVar27 = (*(code *)(*(int *)(bInsert + -0x7d68) + 0x71a8))(pFVar17,0,0,&pFVar17->pScan);\n        p->rc = iVar27;\n        if ((iVar27 != 0) ||\n           (iVar27 = *(int *)(bInsert + -0x7d7c), pFVar17->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00158078;\n        iVar31 = *(int *)(bInsert + -0x7d70);\n        iVar9 = *(int *)(bInsert + -0x7de0);\n        iVar10 = *(int *)(bInsert + -0x7d70);\n        iVar11 = *(int *)(bInsert + -0x7d7c);\n        do {\n          (*(code *)(iVar27 + 0x76a8))(pFVar17,&zTerm,&pDoclist,&nDoclist);\n          pcVar3 = zTerm;\n          uVar26 = (**(code **)(bInsert + -0x7ba0))(zTerm);\n          (*(code *)(iVar31 + -0x5434))(p,&writer,uVar26,pcVar3);\n          if (p->rc != 0) goto LAB_00158078;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar30) {\n            (**(code **)(bInsert + -0x7af4))(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_00158078;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar33 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta);\n              iVar13 = iVar33 + iVar13;\n              uVar23 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                if (iVar7 != 1) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }\nLAB_001583dc:\n                iVar33 = iVar13;\n                iVar19 = writer.writer.buf.n;\n                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar19;\n                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }\n                iVar14 = p->rc;\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\n              }\n              if (iVar14 != 0) goto LAB_00158078;\n              bVar1 = iVar33 < nDoclist;\n              uStack_f4 = uVar23;\n            }\n          }\n          pFVar12 = pFVar17->pScan->pScanNext;\n          pFVar17->pScan = pFVar12;\n          iVar33 = *(int *)(bInsert + -0x7d78);\n        } while ((p->rc == 0) && (pFVar12 != (Fts5HashEntry *)0x0));\n      }\n      else {\nLAB_00158078:\n        iVar33 = *(int *)(bInsert + -0x7d78);\n      }" if (parenthesized_expression "(p->rc == 0)" ( (binary_expression "p->rc == 0" (field_expression "p->rc" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n        iVar27 = (*(code *)(*(int *)(bInsert + -0x7d68) + 0x71a8))(pFVar17,0,0,&pFVar17->pScan);\n        p->rc = iVar27;\n        if ((iVar27 != 0) ||\n           (iVar27 = *(int *)(bInsert + -0x7d7c), pFVar17->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00158078;\n        iVar31 = *(int *)(bInsert + -0x7d70);\n        iVar9 = *(int *)(bInsert + -0x7de0);\n        iVar10 = *(int *)(bInsert + -0x7d70);\n        iVar11 = *(int *)(bInsert + -0x7d7c);\n        do {\n          (*(code *)(iVar27 + 0x76a8))(pFVar17,&zTerm,&pDoclist,&nDoclist);\n          pcVar3 = zTerm;\n          uVar26 = (**(code **)(bInsert + -0x7ba0))(zTerm);\n          (*(code *)(iVar31 + -0x5434))(p,&writer,uVar26,pcVar3);\n          if (p->rc != 0) goto LAB_00158078;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar30) {\n            (**(code **)(bInsert + -0x7af4))(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_00158078;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar33 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta);\n              iVar13 = iVar33 + iVar13;\n              uVar23 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                if (iVar7 != 1) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }\nLAB_001583dc:\n                iVar33 = iVar13;\n                iVar19 = writer.writer.buf.n;\n                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar19;\n                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }\n                iVar14 = p->rc;\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\n              }\n              if (iVar14 != 0) goto LAB_00158078;\n              bVar1 = iVar33 < nDoclist;\n              uStack_f4 = uVar23;\n            }\n          }\n          pFVar12 = pFVar17->pScan->pScanNext;\n          pFVar17->pScan = pFVar12;\n          iVar33 = *(int *)(bInsert + -0x7d78);\n        } while ((p->rc == 0) && (pFVar12 != (Fts5HashEntry *)0x0));\n      }" { (expression_statement "iVar27 = (*(code *)(*(int *)(bInsert + -0x7d68) + 0x71a8))(pFVar17,0,0,&pFVar17->pScan);" (assignment_expression "iVar27 = (*(code *)(*(int *)(bInsert + -0x7d68) + 0x71a8))(pFVar17,0,0,&pFVar17->pScan)" identifier = (call_expression "(*(code *)(*(int *)(bInsert + -0x7d68) + 0x71a8))(pFVar17,0,0,&pFVar17->pScan)" (parenthesized_expression "(*(code *)(*(int *)(bInsert + -0x7d68) + 0x71a8))" ( (pointer_expression "*(code *)(*(int *)(bInsert + -0x7d68) + 0x71a8)" * (cast_expression "(code *)(*(int *)(bInsert + -0x7d68) + 0x71a8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(bInsert + -0x7d68) + 0x71a8)" ( (binary_expression "*(int *)(bInsert + -0x7d68) + 0x71a8" (pointer_expression "*(int *)(bInsert + -0x7d68)" * (cast_expression "(int *)(bInsert + -0x7d68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d68)" ( (binary_expression "bInsert + -0x7d68" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(pFVar17,0,0,&pFVar17->pScan)" ( identifier , number_literal , number_literal , (pointer_expression "&pFVar17->pScan" & (field_expression "pFVar17->pScan" identifier -> field_identifier)) )))) ;) (expression_statement "p->rc = iVar27;" (assignment_expression "p->rc = iVar27" (field_expression "p->rc" identifier -> field_identifier) = identifier) ;) (if_statement "if ((iVar27 != 0) ||\n           (iVar27 = *(int *)(bInsert + -0x7d7c), pFVar17->pScan == (Fts5HashEntry *)0x0))\n        goto LAB_00158078;" if (parenthesized_expression "((iVar27 != 0) ||\n           (iVar27 = *(int *)(bInsert + -0x7d7c), pFVar17->pScan == (Fts5HashEntry *)0x0))" ( (binary_expression "(iVar27 != 0) ||\n           (iVar27 = *(int *)(bInsert + -0x7d7c), pFVar17->pScan == (Fts5HashEntry *)0x0)" (parenthesized_expression "(iVar27 != 0)" ( (binary_expression "iVar27 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar27 = *(int *)(bInsert + -0x7d7c), pFVar17->pScan == (Fts5HashEntry *)0x0)" ( (comma_expression "iVar27 = *(int *)(bInsert + -0x7d7c), pFVar17->pScan == (Fts5HashEntry *)0x0" (assignment_expression "iVar27 = *(int *)(bInsert + -0x7d7c)" identifier = (pointer_expression "*(int *)(bInsert + -0x7d7c)" * (cast_expression "(int *)(bInsert + -0x7d7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d7c)" ( (binary_expression "bInsert + -0x7d7c" identifier + number_literal) ))))) , (binary_expression "pFVar17->pScan == (Fts5HashEntry *)0x0" (field_expression "pFVar17->pScan" identifier -> field_identifier) == (cast_expression "(Fts5HashEntry *)0x0" ( (type_descriptor "Fts5HashEntry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_00158078;" goto statement_identifier ;)) (expression_statement "iVar31 = *(int *)(bInsert + -0x7d70);" (assignment_expression "iVar31 = *(int *)(bInsert + -0x7d70)" identifier = (pointer_expression "*(int *)(bInsert + -0x7d70)" * (cast_expression "(int *)(bInsert + -0x7d70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d70)" ( (binary_expression "bInsert + -0x7d70" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *(int *)(bInsert + -0x7de0);" (assignment_expression "iVar9 = *(int *)(bInsert + -0x7de0)" identifier = (pointer_expression "*(int *)(bInsert + -0x7de0)" * (cast_expression "(int *)(bInsert + -0x7de0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7de0)" ( (binary_expression "bInsert + -0x7de0" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *(int *)(bInsert + -0x7d70);" (assignment_expression "iVar10 = *(int *)(bInsert + -0x7d70)" identifier = (pointer_expression "*(int *)(bInsert + -0x7d70)" * (cast_expression "(int *)(bInsert + -0x7d70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d70)" ( (binary_expression "bInsert + -0x7d70" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = *(int *)(bInsert + -0x7d7c);" (assignment_expression "iVar11 = *(int *)(bInsert + -0x7d7c)" identifier = (pointer_expression "*(int *)(bInsert + -0x7d7c)" * (cast_expression "(int *)(bInsert + -0x7d7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d7c)" ( (binary_expression "bInsert + -0x7d7c" identifier + number_literal) ))))) ;) (do_statement "do {\n          (*(code *)(iVar27 + 0x76a8))(pFVar17,&zTerm,&pDoclist,&nDoclist);\n          pcVar3 = zTerm;\n          uVar26 = (**(code **)(bInsert + -0x7ba0))(zTerm);\n          (*(code *)(iVar31 + -0x5434))(p,&writer,uVar26,pcVar3);\n          if (p->rc != 0) goto LAB_00158078;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar30) {\n            (**(code **)(bInsert + -0x7af4))(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_00158078;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar33 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta);\n              iVar13 = iVar33 + iVar13;\n              uVar23 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                if (iVar7 != 1) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }\nLAB_001583dc:\n                iVar33 = iVar13;\n                iVar19 = writer.writer.buf.n;\n                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar19;\n                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }\n                iVar14 = p->rc;\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\n              }\n              if (iVar14 != 0) goto LAB_00158078;\n              bVar1 = iVar33 < nDoclist;\n              uStack_f4 = uVar23;\n            }\n          }\n          pFVar12 = pFVar17->pScan->pScanNext;\n          pFVar17->pScan = pFVar12;\n          iVar33 = *(int *)(bInsert + -0x7d78);\n        } while ((p->rc == 0) && (pFVar12 != (Fts5HashEntry *)0x0));" do (compound_statement "{\n          (*(code *)(iVar27 + 0x76a8))(pFVar17,&zTerm,&pDoclist,&nDoclist);\n          pcVar3 = zTerm;\n          uVar26 = (**(code **)(bInsert + -0x7ba0))(zTerm);\n          (*(code *)(iVar31 + -0x5434))(p,&writer,uVar26,pcVar3);\n          if (p->rc != 0) goto LAB_00158078;\n          if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar30) {\n            (**(code **)(bInsert + -0x7af4))(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_00158078;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar33 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta);\n              iVar13 = iVar33 + iVar13;\n              uVar23 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                if (iVar7 != 1) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }\nLAB_001583dc:\n                iVar33 = iVar13;\n                iVar19 = writer.writer.buf.n;\n                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar19;\n                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }\n                iVar14 = p->rc;\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\n              }\n              if (iVar14 != 0) goto LAB_00158078;\n              bVar1 = iVar33 < nDoclist;\n              uStack_f4 = uVar23;\n            }\n          }\n          pFVar12 = pFVar17->pScan->pScanNext;\n          pFVar17->pScan = pFVar12;\n          iVar33 = *(int *)(bInsert + -0x7d78);\n        }" { (expression_statement "(*(code *)(iVar27 + 0x76a8))(pFVar17,&zTerm,&pDoclist,&nDoclist);" (call_expression "(*(code *)(iVar27 + 0x76a8))(pFVar17,&zTerm,&pDoclist,&nDoclist)" (parenthesized_expression "(*(code *)(iVar27 + 0x76a8))" ( (pointer_expression "*(code *)(iVar27 + 0x76a8)" * (cast_expression "(code *)(iVar27 + 0x76a8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x76a8)" ( (binary_expression "iVar27 + 0x76a8" identifier + number_literal) )))) )) (argument_list "(pFVar17,&zTerm,&pDoclist,&nDoclist)" ( identifier , (pointer_expression "&zTerm" & identifier) , (pointer_expression "&pDoclist" & identifier) , (pointer_expression "&nDoclist" & identifier) ))) ;) (expression_statement "pcVar3 = zTerm;" (assignment_expression "pcVar3 = zTerm" identifier = identifier) ;) (expression_statement "uVar26 = (**(code **)(bInsert + -0x7ba0))(zTerm);" (assignment_expression "uVar26 = (**(code **)(bInsert + -0x7ba0))(zTerm)" identifier = (call_expression "(**(code **)(bInsert + -0x7ba0))(zTerm)" (parenthesized_expression "(**(code **)(bInsert + -0x7ba0))" ( (pointer_expression "**(code **)(bInsert + -0x7ba0)" * (pointer_expression "*(code **)(bInsert + -0x7ba0)" * (cast_expression "(code **)(bInsert + -0x7ba0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(bInsert + -0x7ba0)" ( (binary_expression "bInsert + -0x7ba0" identifier + number_literal) ))))) )) (argument_list "(zTerm)" ( identifier )))) ;) (expression_statement "(*(code *)(iVar31 + -0x5434))(p,&writer,uVar26,pcVar3);" (call_expression "(*(code *)(iVar31 + -0x5434))(p,&writer,uVar26,pcVar3)" (parenthesized_expression "(*(code *)(iVar31 + -0x5434))" ( (pointer_expression "*(code *)(iVar31 + -0x5434)" * (cast_expression "(code *)(iVar31 + -0x5434)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar31 + -0x5434)" ( (binary_expression "iVar31 + -0x5434" identifier + number_literal) )))) )) (argument_list "(p,&writer,uVar26,pcVar3)" ( identifier , (pointer_expression "&writer" & identifier) , identifier , identifier ))) ;) (if_statement "if (p->rc != 0) goto LAB_00158078;" if (parenthesized_expression "(p->rc != 0)" ( (binary_expression "p->rc != 0" (field_expression "p->rc" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_00158078;" goto statement_identifier ;)) (if_statement "if (writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar30) {\n            (**(code **)(bInsert + -0x7af4))(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_00158078;\n          }\n          else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar33 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta);\n              iVar13 = iVar33 + iVar13;\n              uVar23 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                if (iVar7 != 1) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }\nLAB_001583dc:\n                iVar33 = iVar13;\n                iVar19 = writer.writer.buf.n;\n                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar19;\n                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }\n                iVar14 = p->rc;\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\n              }\n              if (iVar14 != 0) goto LAB_00158078;\n              bVar1 = iVar33 < nDoclist;\n              uStack_f4 = uVar23;\n            }\n          }" if (parenthesized_expression "(writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar30)" ( (binary_expression "writer.writer.buf.n + writer.writer.pgidx.n + nDoclist < iVar30" (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 **)(bInsert + -0x7af4))(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_00158078;\n          }" { (expression_statement "(**(code **)(bInsert + -0x7af4))(writer.writer.buf.p + writer.writer.buf.n,pDoclist);" (call_expression "(**(code **)(bInsert + -0x7af4))(writer.writer.buf.p + writer.writer.buf.n,pDoclist)" (parenthesized_expression "(**(code **)(bInsert + -0x7af4))" ( (pointer_expression "**(code **)(bInsert + -0x7af4)" * (pointer_expression "*(code **)(bInsert + -0x7af4)" * (cast_expression "(code **)(bInsert + -0x7af4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(bInsert + -0x7af4)" ( (binary_expression "bInsert + -0x7af4" 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_00158078;" if (parenthesized_expression "(p->rc != 0)" ( (binary_expression "p->rc != 0" (field_expression "p->rc" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_00158078;" goto statement_identifier ;)) }) (else_clause "else {\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar33 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta);\n              iVar13 = iVar33 + iVar13;\n              uVar23 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                if (iVar7 != 1) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }\nLAB_001583dc:\n                iVar33 = iVar13;\n                iVar19 = writer.writer.buf.n;\n                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar19;\n                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }\n                iVar14 = p->rc;\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\n              }\n              if (iVar14 != 0) goto LAB_00158078;\n              bVar1 = iVar33 < nDoclist;\n              uStack_f4 = uVar23;\n            }\n          }" else (compound_statement "{\n            iStack_fc = 0;\n            uStack_f4 = 0;\n            iDelta._0_4_ = 0;\n            iVar33 = 0;\n            iDelta._4_4_ = 0;\n            bVar1 = 0 < nDoclist;\n            while (bVar1) {\n              iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta);\n              iVar13 = iVar33 + iVar13;\n              uVar23 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                if (iVar7 != 1) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }\nLAB_001583dc:\n                iVar33 = iVar13;\n                iVar19 = writer.writer.buf.n;\n                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar19;\n                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }\n                iVar14 = p->rc;\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\n              }\n              if (iVar14 != 0) goto LAB_00158078;\n              bVar1 = iVar33 < nDoclist;\n              uStack_f4 = uVar23;\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 "iVar33 = 0;" (assignment_expression "iVar33 = 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              iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta);\n              iVar13 = iVar33 + iVar13;\n              uVar23 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                if (iVar7 != 1) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }\nLAB_001583dc:\n                iVar33 = iVar13;\n                iVar19 = writer.writer.buf.n;\n                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar19;\n                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }\n                iVar14 = p->rc;\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\n              }\n              if (iVar14 != 0) goto LAB_00158078;\n              bVar1 = iVar33 < nDoclist;\n              uStack_f4 = uVar23;\n            }" while (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n              iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta);\n              iVar13 = iVar33 + iVar13;\n              uVar23 = uStack_f4 + iDelta._4_4_;\n              iStack_fc = (uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_;\n              if (writer.bFirstRowidInPage == '\0') {\n                if (iDelta._0_4_ == 0) {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                if (iVar7 != 1) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }\nLAB_001583dc:\n                iVar33 = iVar13;\n                iVar19 = writer.writer.buf.n;\n                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar19;\n                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }\n                iVar14 = p->rc;\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\n              }\n              if (iVar14 != 0) goto LAB_00158078;\n              bVar1 = iVar33 < nDoclist;\n              uStack_f4 = uVar23;\n            }" { (expression_statement "iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta);" (assignment_expression "iVar13 = (*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta)" identifier = (call_expression "(*(code *)(iVar9 + -0x80))(pDoclist + iVar33,&iDelta)" (parenthesized_expression "(*(code *)(iVar9 + -0x80))" ( (pointer_expression "*(code *)(iVar9 + -0x80)" * (cast_expression "(code *)(iVar9 + -0x80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + -0x80)" ( (binary_expression "iVar9 + -0x80" identifier + number_literal) )))) )) (argument_list "(pDoclist + iVar33,&iDelta)" ( (binary_expression "pDoclist + iVar33" identifier + identifier) , (pointer_expression "&iDelta" & identifier) )))) ;) (expression_statement "iVar13 = iVar33 + iVar13;" (assignment_expression "iVar13 = iVar33 + iVar13" identifier = (binary_expression "iVar33 + iVar13" identifier + identifier)) ;) (expression_statement "uVar23 = uStack_f4 + iDelta._4_4_;" (assignment_expression "uVar23 = 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)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_;" (assignment_expression "iStack_fc = (uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_" identifier = (binary_expression "(uint)(uVar23 < uStack_f4) + iStack_fc + iDelta._0_4_" (binary_expression "(uint)(uVar23 < uStack_f4) + iStack_fc" (call_expression "(uint)(uVar23 < uStack_f4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar23 < uStack_f4)" ( (binary_expression "uVar23 < 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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                if (iVar7 != 1) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }\nLAB_001583dc:\n                iVar33 = iVar13;\n                iVar19 = writer.writer.buf.n;\n                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar19;\n                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }\n                iVar14 = p->rc;\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                if (iVar7 != 1) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }\nLAB_001583dc:\n                iVar33 = iVar13;\n                iVar19 = writer.writer.buf.n;\n                if ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }\n                writer.writer.buf.n = iVar19;\n                if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }\n                iVar14 = p->rc;\n              }" { (if_statement "if (iDelta._0_4_ == 0) {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)iDelta._4_4_;\n                  iVar33 = 1;\n                }" { (expression_statement "iVar33 = *(int *)(bInsert + -0x7d78);" (assignment_expression "iVar33 = *(int *)(bInsert + -0x7d78)" identifier = (pointer_expression "*(int *)(bInsert + -0x7d78)" * (cast_expression "(int *)(bInsert + -0x7d78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d78)" ( (binary_expression "bInsert + -0x7d78" identifier + number_literal) ))))) ;) (if_statement "if (0x7f < iDelta._4_4_) goto LAB_0015847c;" 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_0015847c;" 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 "iVar33 = 1;" (assignment_expression "iVar33 = 1" identifier = number_literal) ;) }) (else_clause "else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }" else (compound_statement "{\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();\n                }" { (expression_statement "iVar33 = *(int *)(bInsert + -0x7d78);" (assignment_expression "iVar33 = *(int *)(bInsert + -0x7d78)" identifier = (pointer_expression "*(int *)(bInsert + -0x7d78)" * (cast_expression "(int *)(bInsert + -0x7d78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d78)" ( (binary_expression "bInsert + -0x7d78" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0015847c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))();" statement_identifier : (expression_statement "iVar33 = (*(code *)(iVar33 + 0x3284))();" (assignment_expression "iVar33 = (*(code *)(iVar33 + 0x3284))()" identifier = (call_expression "(*(code *)(iVar33 + 0x3284))()" (parenthesized_expression "(*(code *)(iVar33 + 0x3284))" ( (pointer_expression "*(code *)(iVar33 + 0x3284)" * (cast_expression "(code *)(iVar33 + 0x3284)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x3284)" ( (binary_expression "iVar33 + 0x3284" identifier + number_literal) )))) )) (argument_list "()" ( )))) ;)) }))) (expression_statement "writer.writer.buf.n = writer.writer.buf.n + iVar33;" (assignment_expression "writer.writer.buf.n = writer.writer.buf.n + iVar33" (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 + iVar33" (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) {\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }" if (parenthesized_expression "(iVar7 != 1)" ( (binary_expression "iVar7 != 1" identifier != number_literal) )) (compound_statement "{\n                  iVar33 = *(int *)(bInsert + -0x7d7c);\n                  goto LAB_001584ac;\n                }" { (expression_statement "iVar33 = *(int *)(bInsert + -0x7d7c);" (assignment_expression "iVar33 = *(int *)(bInsert + -0x7d7c)" identifier = (pointer_expression "*(int *)(bInsert + -0x7d7c)" * (cast_expression "(int *)(bInsert + -0x7d7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d7c)" ( (binary_expression "bInsert + -0x7d7c" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_001584ac;" goto statement_identifier ;) })) (labeled_statement "LAB_001583dc:\n                iVar33 = iVar13;" statement_identifier : (expression_statement "iVar33 = iVar13;" (assignment_expression "iVar33 = iVar13" identifier = identifier) ;)) (expression_statement "iVar19 = writer.writer.buf.n;" (assignment_expression "iVar19 = 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 ((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')) {\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }" if (parenthesized_expression "((iVar13 < nDoclist) && (pDoclist[iVar13] == '\0'))" ( (binary_expression "(iVar13 < nDoclist) && (pDoclist[iVar13] == '\0')" (parenthesized_expression "(iVar13 < nDoclist)" ( (binary_expression "iVar13 < nDoclist" identifier < identifier) )) && (parenthesized_expression "(pDoclist[iVar13] == '\0')" ( (binary_expression "pDoclist[iVar13] == '\0'" (subscript_expression "pDoclist[iVar13]" identifier [ identifier ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                  iVar19 = writer.writer.buf.n + 1;\n                  iVar33 = iVar13 + 1;\n                  writer.writer.buf.p[writer.writer.buf.n] = '\0';\n                  if ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }\n                }" { (expression_statement "iVar19 = writer.writer.buf.n + 1;" (assignment_expression "iVar19 = 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 "iVar33 = iVar13 + 1;" (assignment_expression "iVar33 = iVar13 + 1" identifier = (binary_expression "iVar13 + 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 ((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')) {\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }" if (parenthesized_expression "((iVar33 < nDoclist) && (pDoclist[iVar33] == '\0'))" ( (binary_expression "(iVar33 < nDoclist) && (pDoclist[iVar33] == '\0')" (parenthesized_expression "(iVar33 < nDoclist)" ( (binary_expression "iVar33 < nDoclist" identifier < identifier) )) && (parenthesized_expression "(pDoclist[iVar33] == '\0')" ( (binary_expression "pDoclist[iVar33] == '\0'" (subscript_expression "pDoclist[iVar33]" identifier [ identifier ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                    iVar33 = iVar13 + 2;\n                    writer.writer.buf.p[iVar19] = '\0';\n                    iVar19 = writer.writer.buf.n + 2;\n                  }" { (expression_statement "iVar33 = iVar13 + 2;" (assignment_expression "iVar33 = iVar13 + 2" identifier = (binary_expression "iVar13 + 2" identifier + number_literal)) ;) (expression_statement "writer.writer.buf.p[iVar19] = '\0';" (assignment_expression "writer.writer.buf.p[iVar19] = '\0'" (subscript_expression "writer.writer.buf.p[iVar19]" (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 "iVar19 = writer.writer.buf.n + 2;" (assignment_expression "iVar19 = 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 = iVar19;" (assignment_expression "writer.writer.buf.n = iVar19" (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 (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) {\n                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }" if (parenthesized_expression "(iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n)" ( (binary_expression "iVar30 <= 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                  (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                }" { (expression_statement "(*(code *)(iVar10 + -0x5df0))(p,&writer);" (call_expression "(*(code *)(iVar10 + -0x5df0))(p,&writer)" (parenthesized_expression "(*(code *)(iVar10 + -0x5df0))" ( (pointer_expression "*(code *)(iVar10 + -0x5df0)" * (cast_expression "(code *)(iVar10 + -0x5df0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0x5df0)" ( (binary_expression "iVar10 + -0x5df0" identifier + number_literal) )))) )) (argument_list "(p,&writer)" ( identifier , (pointer_expression "&writer" & identifier) ))) ;) })) (expression_statement "iVar14 = p->rc;" (assignment_expression "iVar14 = p->rc" identifier = (field_expression "p->rc" identifier -> field_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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }\n                writer.writer.buf.n = writer.writer.buf.n + iVar33;\n                writer.bFirstRowidInPage = '\0';\n                (*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);\n                if (p->rc != 0) goto LAB_00158078;\n                iVar33 = *(int *)(bInsert + -0x7d7c);\n                if (iVar7 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);\n                puVar4 = pDoclist;\n                iVar33 = iVar33 + nPos;\n                if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }\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                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }\n                else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }" if (parenthesized_expression "(iStack_fc == 0)" ( (binary_expression "iStack_fc == 0" identifier == number_literal) )) (compound_statement "{\n                  iVar33 = *(int *)(bInsert + -0x7d78);\n                  if (0x7f < uVar23) goto LAB_0015837c;\n                  writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;\n                  iVar33 = 1;\n                }" { (expression_statement "iVar33 = *(int *)(bInsert + -0x7d78);" (assignment_expression "iVar33 = *(int *)(bInsert + -0x7d78)" identifier = (pointer_expression "*(int *)(bInsert + -0x7d78)" * (cast_expression "(int *)(bInsert + -0x7d78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d78)" ( (binary_expression "bInsert + -0x7d78" identifier + number_literal) ))))) ;) (if_statement "if (0x7f < uVar23) goto LAB_0015837c;" if (parenthesized_expression "(0x7f < uVar23)" ( (binary_expression "0x7f < uVar23" number_literal < identifier) )) (goto_statement "goto LAB_0015837c;" goto statement_identifier ;)) (expression_statement "writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23;" (assignment_expression "writer.writer.buf.p[writer.writer.buf.n] = (u8)uVar23" (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)uVar23" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (expression_statement "iVar33 = 1;" (assignment_expression "iVar33 = 1" identifier = number_literal) ;) }) (else_clause "else {\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }" else (compound_statement "{\n                  iVar33 = *(int *)(bInsert + -0x7d78);\nLAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);\n                }" { (expression_statement "iVar33 = *(int *)(bInsert + -0x7d78);" (assignment_expression "iVar33 = *(int *)(bInsert + -0x7d78)" identifier = (pointer_expression "*(int *)(bInsert + -0x7d78)" * (cast_expression "(int *)(bInsert + -0x7d78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d78)" ( (binary_expression "bInsert + -0x7d78" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0015837c:\n                  iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);" statement_identifier : (expression_statement "iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23);" (assignment_expression "iVar33 = (*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23)" identifier = (call_expression "(*(code *)(iVar33 + 0x3284))\n                                     (writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23)" (parenthesized_expression "(*(code *)(iVar33 + 0x3284))" ( (pointer_expression "*(code *)(iVar33 + 0x3284)" * (cast_expression "(code *)(iVar33 + 0x3284)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x3284)" ( (binary_expression "iVar33 + 0x3284" identifier + number_literal) )))) )) (argument_list "(writer.writer.buf.p + writer.writer.buf.n,iStack_fc,iStack_fc,\n                                      uVar23)" ( (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 + iVar33;" (assignment_expression "writer.writer.buf.n = writer.writer.buf.n + iVar33" (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 + iVar33" (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 "(*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23);" (call_expression "(*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))(p,&writer,iStack_fc,uVar23)" (parenthesized_expression "(*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158))" ( (pointer_expression "*(code *)(*(int *)(bInsert + -0x7d70) + -0x6158)" * (cast_expression "(code *)(*(int *)(bInsert + -0x7d70) + -0x6158)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(bInsert + -0x7d70) + -0x6158)" ( (binary_expression "*(int *)(bInsert + -0x7d70) + -0x6158" (pointer_expression "*(int *)(bInsert + -0x7d70)" * (cast_expression "(int *)(bInsert + -0x7d70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d70)" ( (binary_expression "bInsert + -0x7d70" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(p,&writer,iStack_fc,uVar23)" ( identifier , (pointer_expression "&writer" & identifier) , identifier , identifier ))) ;) (if_statement "if (p->rc != 0) goto LAB_00158078;" if (parenthesized_expression "(p->rc != 0)" ( (binary_expression "p->rc != 0" (field_expression "p->rc" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_00158078;" goto statement_identifier ;)) (expression_statement "iVar33 = *(int *)(bInsert + -0x7d7c);" (assignment_expression "iVar33 = *(int *)(bInsert + -0x7d7c)" identifier = (pointer_expression "*(int *)(bInsert + -0x7d7c)" * (cast_expression "(int *)(bInsert + -0x7d7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d7c)" ( (binary_expression "bInsert + -0x7d7c" identifier + number_literal) ))))) ;) (if_statement "if (iVar7 == 1) goto LAB_001583dc;" if (parenthesized_expression "(iVar7 == 1)" ( (binary_expression "iVar7 == 1" identifier == number_literal) )) (goto_statement "goto LAB_001583dc;" goto statement_identifier ;)) (labeled_statement "LAB_001584ac:\n                iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);" statement_identifier : (expression_statement "iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy);" (assignment_expression "iVar33 = (*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy)" identifier = (call_expression "(*(code *)(iVar33 + 0x61f0))(pDoclist + iVar13,&nPos,&bDummy)" (parenthesized_expression "(*(code *)(iVar33 + 0x61f0))" ( (pointer_expression "*(code *)(iVar33 + 0x61f0)" * (cast_expression "(code *)(iVar33 + 0x61f0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x61f0)" ( (binary_expression "iVar33 + 0x61f0" identifier + number_literal) )))) )) (argument_list "(pDoclist + iVar13,&nPos,&bDummy)" ( (binary_expression "pDoclist + iVar13" identifier + identifier) , (pointer_expression "&nPos" & identifier) , (pointer_expression "&bDummy" & identifier) )))) ;)) (expression_statement "puVar4 = pDoclist;" (assignment_expression "puVar4 = pDoclist" identifier = identifier) ;) (expression_statement "iVar33 = iVar33 + nPos;" (assignment_expression "iVar33 = iVar33 + nPos" identifier = (binary_expression "iVar33 + nPos" identifier + identifier)) ;) (if_statement "if (iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33) {\n                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }\n                else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }" if (parenthesized_expression "(iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33)" ( (binary_expression "iVar30 < writer.writer.buf.n + writer.writer.pgidx.n + iVar33" identifier < (binary_expression "writer.writer.buf.n + writer.writer.pgidx.n + iVar33" (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                  iVar19 = 0;\n                  do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);\n                  iVar14 = p->rc;\n                  iVar33 = iVar13 + iVar33;\n                }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  } while (iVar19 < iVar33);" do (compound_statement "{\n                    iVar14 = p->rc;\n                    if (iVar14 != 0) goto LAB_00158518;\n                    iVar32 = iVar33 - iVar19;\n                    puVar28 = puVar4 + iVar19 + iVar13;\n                    iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;\n                    if (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }\n                  }" { (expression_statement "iVar14 = p->rc;" (assignment_expression "iVar14 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;) (if_statement "if (iVar14 != 0) goto LAB_00158518;" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00158518;" goto statement_identifier ;)) (expression_statement "iVar32 = iVar33 - iVar19;" (assignment_expression "iVar32 = iVar33 - iVar19" identifier = (binary_expression "iVar33 - iVar19" identifier - identifier)) ;) (expression_statement "puVar28 = puVar4 + iVar19 + iVar13;" (assignment_expression "puVar28 = puVar4 + iVar19 + iVar13" identifier = (binary_expression "puVar4 + iVar19 + iVar13" (binary_expression "puVar4 + iVar19" identifier + identifier) + identifier)) ;) (expression_statement "iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n;" (assignment_expression "iVar14 = (iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n" identifier = (binary_expression "(iVar30 - writer.writer.buf.n) - writer.writer.pgidx.n" (parenthesized_expression "(iVar30 - writer.writer.buf.n)" ( (binary_expression "iVar30 - 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 (iVar14 < iVar32) {\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }\n                    else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }" if (parenthesized_expression "(iVar14 < iVar32)" ( (binary_expression "iVar14 < iVar32" identifier < identifier) )) (compound_statement "{\n                      iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);\n                      iVar32 = iVar15;\n                      if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }\n                      iVar19 = iVar19 + iVar15;\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);\n                      writer.writer.buf.n = iVar15 + writer.writer.buf.n;\n                      if (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;\n                    }" { (expression_statement "iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy);" (assignment_expression "iVar15 = (*(code *)(iVar11 + 0x610c))(puVar28,&dummy)" identifier = (call_expression "(*(code *)(iVar11 + 0x610c))(puVar28,&dummy)" (parenthesized_expression "(*(code *)(iVar11 + 0x610c))" ( (pointer_expression "*(code *)(iVar11 + 0x610c)" * (cast_expression "(code *)(iVar11 + 0x610c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x610c)" ( (binary_expression "iVar11 + 0x610c" identifier + number_literal) )))) )) (argument_list "(puVar28,&dummy)" ( identifier , (pointer_expression "&dummy" & identifier) )))) ;) (expression_statement "iVar32 = iVar15;" (assignment_expression "iVar32 = iVar15" identifier = identifier) ;) (if_statement "if (iVar15 < iVar14) {\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }" if (parenthesized_expression "(iVar15 < iVar14)" ( (binary_expression "iVar15 < iVar14" identifier < identifier) )) (compound_statement "{\n                        do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);\n                      }" { (do_statement "do {\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        } while (iVar15 + iVar16 <= iVar14);" do (compound_statement "{\n                          iVar15 = iVar32;\n                          iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);\n                          iVar32 = iVar15 + iVar16;\n                        }" { (expression_statement "iVar15 = iVar32;" (assignment_expression "iVar15 = iVar32" identifier = identifier) ;) (expression_statement "iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy);" (assignment_expression "iVar16 = (*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy)" identifier = (call_expression "(*(code *)(iVar11 + 0x610c))(puVar28 + iVar15,&dummy)" (parenthesized_expression "(*(code *)(iVar11 + 0x610c))" ( (pointer_expression "*(code *)(iVar11 + 0x610c)" * (cast_expression "(code *)(iVar11 + 0x610c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x610c)" ( (binary_expression "iVar11 + 0x610c" identifier + number_literal) )))) )) (argument_list "(puVar28 + iVar15,&dummy)" ( (binary_expression "puVar28 + iVar15" identifier + identifier) , (pointer_expression "&dummy" & identifier) )))) ;) (expression_statement "iVar32 = iVar15 + iVar16;" (assignment_expression "iVar32 = iVar15 + iVar16" identifier = (binary_expression "iVar15 + iVar16" identifier + identifier)) ;) }) while (parenthesized_expression "(iVar15 + iVar16 <= iVar14)" ( (binary_expression "iVar15 + iVar16 <= iVar14" (binary_expression "iVar15 + iVar16" identifier + identifier) <= identifier) )) ;) })) (expression_statement "iVar19 = iVar19 + iVar15;" (assignment_expression "iVar19 = iVar19 + iVar15" identifier = (binary_expression "iVar19 + iVar15" identifier + identifier)) ;) (expression_statement "(**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15);" (call_expression "(**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15)" (parenthesized_expression "(**(code **)(bInsert + -0x7af4))" ( (pointer_expression "**(code **)(bInsert + -0x7af4)" * (pointer_expression "*(code **)(bInsert + -0x7af4)" * (cast_expression "(code **)(bInsert + -0x7af4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(bInsert + -0x7af4)" ( (binary_expression "bInsert + -0x7af4" identifier + number_literal) ))))) )) (argument_list "(writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar15)" ( (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 = iVar15 + writer.writer.buf.n;" (assignment_expression "writer.writer.buf.n = iVar15 + 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 "iVar15 + 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 (iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;" if (parenthesized_expression "(iVar30 <= writer.writer.buf.n + writer.writer.pgidx.n)" ( (binary_expression "iVar30 <= 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_00158574;" goto statement_identifier ;)) }) (else_clause "else {\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }" else (compound_statement "{\n                      (**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);\n                      writer.writer.buf.n = iVar32 + writer.writer.buf.n;\n                      iVar19 = iVar33;\n                      if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;\nLAB_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);\n                    }" { (expression_statement "(**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32);" (call_expression "(**(code **)(bInsert + -0x7af4))\n                                (writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32)" (parenthesized_expression "(**(code **)(bInsert + -0x7af4))" ( (pointer_expression "**(code **)(bInsert + -0x7af4)" * (pointer_expression "*(code **)(bInsert + -0x7af4)" * (cast_expression "(code **)(bInsert + -0x7af4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(bInsert + -0x7af4)" ( (binary_expression "bInsert + -0x7af4" identifier + number_literal) ))))) )) (argument_list "(writer.writer.buf.p + writer.writer.buf.n,puVar28,iVar32)" ( (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 = iVar32 + writer.writer.buf.n;" (assignment_expression "writer.writer.buf.n = iVar32 + 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 "iVar32 + 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 "iVar19 = iVar33;" (assignment_expression "iVar19 = iVar33" identifier = identifier) ;) (if_statement "if (writer.writer.buf.n + writer.writer.pgidx.n < iVar30) break;" if (parenthesized_expression "(writer.writer.buf.n + writer.writer.pgidx.n < iVar30)" ( (binary_expression "writer.writer.buf.n + writer.writer.pgidx.n < iVar30" (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_00158574:\n                      (*(code *)(iVar10 + -0x5df0))(p,&writer);" statement_identifier : (expression_statement "(*(code *)(iVar10 + -0x5df0))(p,&writer);" (call_expression "(*(code *)(iVar10 + -0x5df0))(p,&writer)" (parenthesized_expression "(*(code *)(iVar10 + -0x5df0))" ( (pointer_expression "*(code *)(iVar10 + -0x5df0)" * (cast_expression "(code *)(iVar10 + -0x5df0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0x5df0)" ( (binary_expression "iVar10 + -0x5df0" identifier + number_literal) )))) )) (argument_list "(p,&writer)" ( identifier , (pointer_expression "&writer" & identifier) ))) ;)) }))) }) while (parenthesized_expression "(iVar19 < iVar33)" ( (binary_expression "iVar19 < iVar33" identifier < identifier) )) ;) (expression_statement "iVar14 = p->rc;" (assignment_expression "iVar14 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;) (expression_statement "iVar33 = iVar13 + iVar33;" (assignment_expression "iVar33 = iVar13 + iVar33" identifier = (binary_expression "iVar13 + iVar33" identifier + identifier)) ;) }) (else_clause "else {\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }" else (compound_statement "{\n                  (**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);\n                  iVar14 = p->rc;\n                  writer.writer.buf.n = writer.writer.buf.n + iVar33;\nLAB_00158518:\n                  iVar33 = iVar13 + iVar33;\n                }" { (expression_statement "(**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33);" (call_expression "(**(code **)(bInsert + -0x7af4))\n                            (writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33)" (parenthesized_expression "(**(code **)(bInsert + -0x7af4))" ( (pointer_expression "**(code **)(bInsert + -0x7af4)" * (pointer_expression "*(code **)(bInsert + -0x7af4)" * (cast_expression "(code **)(bInsert + -0x7af4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(bInsert + -0x7af4)" ( (binary_expression "bInsert + -0x7af4" identifier + number_literal) ))))) )) (argument_list "(writer.writer.buf.p + writer.writer.buf.n,pDoclist + iVar13,iVar33)" ( (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 + iVar13" identifier + identifier) , identifier ))) ;) (expression_statement "iVar14 = p->rc;" (assignment_expression "iVar14 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;) (expression_statement "writer.writer.buf.n = writer.writer.buf.n + iVar33;" (assignment_expression "writer.writer.buf.n = writer.writer.buf.n + iVar33" (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 + iVar33" (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_00158518:\n                  iVar33 = iVar13 + iVar33;" statement_identifier : (expression_statement "iVar33 = iVar13 + iVar33;" (assignment_expression "iVar33 = iVar13 + iVar33" identifier = (binary_expression "iVar13 + iVar33" identifier + identifier)) ;)) }))) }))) (if_statement "if (iVar14 != 0) goto LAB_00158078;" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00158078;" goto statement_identifier ;)) (expression_statement "bVar1 = iVar33 < nDoclist;" (assignment_expression "bVar1 = iVar33 < nDoclist" identifier = (binary_expression "iVar33 < nDoclist" identifier < identifier)) ;) (expression_statement "uStack_f4 = uVar23;" (assignment_expression "uStack_f4 = uVar23" identifier = identifier) ;) })) }))) (expression_statement "pFVar12 = pFVar17->pScan->pScanNext;" (assignment_expression "pFVar12 = pFVar17->pScan->pScanNext" identifier = (field_expression "pFVar17->pScan->pScanNext" (field_expression "pFVar17->pScan" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pFVar17->pScan = pFVar12;" (assignment_expression "pFVar17->pScan = pFVar12" (field_expression "pFVar17->pScan" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar33 = *(int *)(bInsert + -0x7d78);" (assignment_expression "iVar33 = *(int *)(bInsert + -0x7d78)" identifier = (pointer_expression "*(int *)(bInsert + -0x7d78)" * (cast_expression "(int *)(bInsert + -0x7d78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d78)" ( (binary_expression "bInsert + -0x7d78" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "((p->rc == 0) && (pFVar12 != (Fts5HashEntry *)0x0))" ( (binary_expression "(p->rc == 0) && (pFVar12 != (Fts5HashEntry *)0x0)" (parenthesized_expression "(p->rc == 0)" ( (binary_expression "p->rc == 0" (field_expression "p->rc" identifier -> field_identifier) == number_literal) )) && (parenthesized_expression "(pFVar12 != (Fts5HashEntry *)0x0)" ( (binary_expression "pFVar12 != (Fts5HashEntry *)0x0" identifier != (cast_expression "(Fts5HashEntry *)0x0" ( (type_descriptor "Fts5HashEntry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) ;) }) (else_clause "else {\nLAB_00158078:\n        iVar33 = *(int *)(bInsert + -0x7d78);\n      }" else (compound_statement "{\nLAB_00158078:\n        iVar33 = *(int *)(bInsert + -0x7d78);\n      }" { (labeled_statement "LAB_00158078:\n        iVar33 = *(int *)(bInsert + -0x7d78);" statement_identifier : (expression_statement "iVar33 = *(int *)(bInsert + -0x7d78);" (assignment_expression "iVar33 = *(int *)(bInsert + -0x7d78)" identifier = (pointer_expression "*(int *)(bInsert + -0x7d78)" * (cast_expression "(int *)(bInsert + -0x7d78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d78)" ( (binary_expression "bInsert + -0x7d78" identifier + number_literal) ))))) ;)) }))) (expression_statement "pFVar24 = (Fts5Index *)&p->rc;" (assignment_expression "pFVar24 = (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 *)(iVar33 + 0xe8))(pFVar17);" (call_expression "(*(code *)(iVar33 + 0xe8))(pFVar17)" (parenthesized_expression "(*(code *)(iVar33 + 0xe8))" ( (pointer_expression "*(code *)(iVar33 + 0xe8)" * (cast_expression "(code *)(iVar33 + 0xe8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0xe8)" ( (binary_expression "iVar33 + 0xe8" identifier + number_literal) )))) )) (argument_list "(pFVar17)" ( identifier ))) ;) (expression_statement "pFVar21 = p;" (assignment_expression "pFVar21 = p" identifier = identifier) ;) (expression_statement "(*(code *)(*(int *)(bInsert + -0x7d70) + -0x5098))(p,&writer,&pgnoLast);" (call_expression "(*(code *)(*(int *)(bInsert + -0x7d70) + -0x5098))(p,&writer,&pgnoLast)" (parenthesized_expression "(*(code *)(*(int *)(bInsert + -0x7d70) + -0x5098))" ( (pointer_expression "*(code *)(*(int *)(bInsert + -0x7d70) + -0x5098)" * (cast_expression "(code *)(*(int *)(bInsert + -0x7d70) + -0x5098)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(bInsert + -0x7d70) + -0x5098)" ( (binary_expression "*(int *)(bInsert + -0x7d70) + -0x5098" (pointer_expression "*(int *)(bInsert + -0x7d70)" * (cast_expression "(int *)(bInsert + -0x7d70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d70)" ( (binary_expression "bInsert + -0x7d70" identifier + number_literal) )))) + number_literal) )))) )) (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          pFVar21 = pFVar24;\n          (*(code *)(*(int *)(bInsert + -0x7cf4) + -0x1080))(pFVar24,&pStruct);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          fts5StructureExtendLevel((int *)pFVar24,pStruct,0,0,(int)bInsert);\n          iVar7 = p->rc;\n          pFVar21 = pFVar24;\n          if (iVar7 == 0) {\n            pFVar21 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&pFVar21->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)pFVar21;\n            pFVar8->iSegid = iVar25;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              pFVar21 = p;\n              fts5StructurePromote(p,0,pStruct);\n              goto LAB_0015817c;\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          pFVar21 = pFVar24;\n          (*(code *)(*(int *)(bInsert + -0x7cf4) + -0x1080))(pFVar24,&pStruct);\n          goto LAB_001580dc;\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          pFVar21 = pFVar24;\n          (*(code *)(*(int *)(bInsert + -0x7cf4) + -0x1080))(pFVar24,&pStruct);\n          goto LAB_001580dc;\n        }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          pFVar21 = pFVar24;\n          (*(code *)(*(int *)(bInsert + -0x7cf4) + -0x1080))(pFVar24,&pStruct);\n          goto LAB_001580dc;\n        }" { (expression_statement "pFVar21 = pFVar24;" (assignment_expression "pFVar21 = pFVar24" identifier = identifier) ;) (expression_statement "(*(code *)(*(int *)(bInsert + -0x7cf4) + -0x1080))(pFVar24,&pStruct);" (call_expression "(*(code *)(*(int *)(bInsert + -0x7cf4) + -0x1080))(pFVar24,&pStruct)" (parenthesized_expression "(*(code *)(*(int *)(bInsert + -0x7cf4) + -0x1080))" ( (pointer_expression "*(code *)(*(int *)(bInsert + -0x7cf4) + -0x1080)" * (cast_expression "(code *)(*(int *)(bInsert + -0x7cf4) + -0x1080)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(bInsert + -0x7cf4) + -0x1080)" ( (binary_expression "*(int *)(bInsert + -0x7cf4) + -0x1080" (pointer_expression "*(int *)(bInsert + -0x7cf4)" * (cast_expression "(int *)(bInsert + -0x7cf4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7cf4)" ( (binary_expression "bInsert + -0x7cf4" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(pFVar24,&pStruct)" ( identifier , (pointer_expression "&pStruct" & identifier) ))) ;) (goto_statement "goto LAB_001580dc;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_001580dc:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          fts5StructureExtendLevel((int *)pFVar24,pStruct,0,0,(int)bInsert);\n          iVar7 = p->rc;\n          pFVar21 = pFVar24;\n          if (iVar7 == 0) {\n            pFVar21 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&pFVar21->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)pFVar21;\n            pFVar8->iSegid = iVar25;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              pFVar21 = p;\n              fts5StructurePromote(p,0,pStruct);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }" else (compound_statement "{\nLAB_001580dc:\n        iVar7 = p->rc;\n        if (iVar7 == 0) {\n          fts5StructureExtendLevel((int *)pFVar24,pStruct,0,0,(int)bInsert);\n          iVar7 = p->rc;\n          pFVar21 = pFVar24;\n          if (iVar7 == 0) {\n            pFVar21 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&pFVar21->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)pFVar21;\n            pFVar8->iSegid = iVar25;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              pFVar21 = p;\n              fts5StructurePromote(p,0,pStruct);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }" { (labeled_statement "LAB_001580dc:\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          fts5StructureExtendLevel((int *)pFVar24,pStruct,0,0,(int)bInsert);\n          iVar7 = p->rc;\n          pFVar21 = pFVar24;\n          if (iVar7 == 0) {\n            pFVar21 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&pFVar21->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)pFVar21;\n            pFVar8->iSegid = iVar25;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              pFVar21 = p;\n              fts5StructurePromote(p,0,pStruct);\n              goto LAB_0015817c;\n            }\n          }\n        }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          fts5StructureExtendLevel((int *)pFVar24,pStruct,0,0,(int)bInsert);\n          iVar7 = p->rc;\n          pFVar21 = pFVar24;\n          if (iVar7 == 0) {\n            pFVar21 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&pFVar21->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)pFVar21;\n            pFVar8->iSegid = iVar25;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              pFVar21 = p;\n              fts5StructurePromote(p,0,pStruct);\n              goto LAB_0015817c;\n            }\n          }\n        }" { (expression_statement "fts5StructureExtendLevel((int *)pFVar24,pStruct,0,0,(int)bInsert);" (call_expression "fts5StructureExtendLevel((int *)pFVar24,pStruct,0,0,(int)bInsert)" identifier (argument_list "((int *)pFVar24,pStruct,0,0,(int)bInsert)" ( (cast_expression "(int *)pFVar24" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , number_literal , number_literal , (cast_expression "(int)bInsert" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "iVar7 = p->rc;" (assignment_expression "iVar7 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;) (expression_statement "pFVar21 = pFVar24;" (assignment_expression "pFVar21 = pFVar24" identifier = identifier) ;) (if_statement "if (iVar7 == 0) {\n            pFVar21 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&pFVar21->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)pFVar21;\n            pFVar8->iSegid = iVar25;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              pFVar21 = p;\n              fts5StructurePromote(p,0,pStruct);\n              goto LAB_0015817c;\n            }\n          }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n            pFVar21 = (Fts5Index *)pStruct->aLevel[0].nSeg;\n            pStruct->aLevel[0].nSeg = (int)((int)&pFVar21->pConfig + 1);\n            pFVar8 = pStruct->aLevel[0].aSeg + (int)pFVar21;\n            pFVar8->iSegid = iVar25;\n            pFVar8->pgnoFirst = 1;\n            pFVar8->pgnoLast = pgnoLast;\n            pStruct->nSegment = pStruct->nSegment + 1;\n            iVar7 = p->rc;\n            if (iVar7 == 0) {\n              pFVar21 = p;\n              fts5StructurePromote(p,0,pStruct);\n              goto LAB_0015817c;\n            }\n          }" { (expression_statement "pFVar21 = (Fts5Index *)pStruct->aLevel[0].nSeg;" (assignment_expression "pFVar21 = (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)&pFVar21->pConfig + 1);" (assignment_expression "pStruct->aLevel[0].nSeg = (int)((int)&pFVar21->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)&pFVar21->pConfig + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&pFVar21->pConfig + 1)" ( (binary_expression "(int)&pFVar21->pConfig + 1" (cast_expression "(int)&pFVar21->pConfig" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pFVar21->pConfig" & (field_expression "pFVar21->pConfig" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "pFVar8 = pStruct->aLevel[0].aSeg + (int)pFVar21;" (assignment_expression "pFVar8 = pStruct->aLevel[0].aSeg + (int)pFVar21" identifier = (binary_expression "pStruct->aLevel[0].aSeg + (int)pFVar21" (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)pFVar21" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pFVar8->iSegid = iVar25;" (assignment_expression "pFVar8->iSegid = iVar25" (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              pFVar21 = p;\n              fts5StructurePromote(p,0,pStruct);\n              goto LAB_0015817c;\n            }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n              pFVar21 = p;\n              fts5StructurePromote(p,0,pStruct);\n              goto LAB_0015817c;\n            }" { (expression_statement "pFVar21 = p;" (assignment_expression "pFVar21 = p" identifier = identifier) ;) (expression_statement "fts5StructurePromote(p,0,pStruct);" (call_expression "fts5StructurePromote(p,0,pStruct)" identifier (argument_list "(p,0,pStruct)" ( identifier , number_literal , identifier ))) ;) (goto_statement "goto LAB_0015817c;" goto statement_identifier ;) })) })) })) }))) }))) }) (else_clause "else {\nLAB_00157de0:\n    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))();\n    iVar7 = p->rc;\n  }" else (compound_statement "{\nLAB_00157de0:\n    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))();\n    iVar7 = p->rc;\n  }" { (labeled_statement "LAB_00157de0:\n    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))();" statement_identifier : (expression_statement "(*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))();" (call_expression "(*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))()" (parenthesized_expression "(*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894))" ( (pointer_expression "*(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894)" * (cast_expression "(code *)(*(int *)(bInsert + -0x7d7c) + 0x3894)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(bInsert + -0x7d7c) + 0x3894)" ( (binary_expression "*(int *)(bInsert + -0x7d7c) + 0x3894" (pointer_expression "*(int *)(bInsert + -0x7d7c)" * (cast_expression "(int *)(bInsert + -0x7d7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d7c)" ( (binary_expression "bInsert + -0x7d7c" 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 "pFVar5 = pStruct;" (assignment_expression "pFVar5 = pStruct" identifier = identifier) ;) (expression_statement "pFVar18 = p->pConfig;" (assignment_expression "pFVar18 = p->pConfig" identifier = (field_expression "p->pConfig" identifier -> field_identifier)) ;) (if_statement "if ((iVar7 == 0) && (pFVar21 = (Fts5Index *)pFVar18->nAutomerge, 0 < (int)pFVar21)) {\n    iVar30 = (int)pStruct->nWriteCounter;\n    iVar27 = *(int *)&pStruct->nWriteCounter;\n    iVar7 = p->nWorkUnit;\n    uVar23 = pgnoLast + iVar30;\n    *(uint *)((int)&pStruct->nWriteCounter + 4) = uVar23;\n    iVar25 = (uint)(uVar23 < (uint)pgnoLast) + (pgnoLast >> 0x1f) + iVar27;\n    *(int *)&pStruct->nWriteCounter = iVar25;\n    iVar31 = p->pConfig->nAutomerge;\n    __udivdi3(iVar25,uVar23,iVar7 >> 0x1f,iVar7);\n    __udivdi3(iVar27,iVar30,iVar7 >> 0x1f,iVar7);\n    pFVar21 = p;\n    fts5IndexMerge(p,&pStruct,(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar5->nLevel,iVar31)\n    ;\n    pFVar18 = p->pConfig;\n    iVar7 = p->rc;\n  }" if (parenthesized_expression "((iVar7 == 0) && (pFVar21 = (Fts5Index *)pFVar18->nAutomerge, 0 < (int)pFVar21))" ( (binary_expression "(iVar7 == 0) && (pFVar21 = (Fts5Index *)pFVar18->nAutomerge, 0 < (int)pFVar21)" (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) && (parenthesized_expression "(pFVar21 = (Fts5Index *)pFVar18->nAutomerge, 0 < (int)pFVar21)" ( (comma_expression "pFVar21 = (Fts5Index *)pFVar18->nAutomerge, 0 < (int)pFVar21" (assignment_expression "pFVar21 = (Fts5Index *)pFVar18->nAutomerge" identifier = (cast_expression "(Fts5Index *)pFVar18->nAutomerge" ( (type_descriptor "Fts5Index *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar18->nAutomerge" identifier -> field_identifier))) , (binary_expression "0 < (int)pFVar21" number_literal < (cast_expression "(int)pFVar21" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (compound_statement "{\n    iVar30 = (int)pStruct->nWriteCounter;\n    iVar27 = *(int *)&pStruct->nWriteCounter;\n    iVar7 = p->nWorkUnit;\n    uVar23 = pgnoLast + iVar30;\n    *(uint *)((int)&pStruct->nWriteCounter + 4) = uVar23;\n    iVar25 = (uint)(uVar23 < (uint)pgnoLast) + (pgnoLast >> 0x1f) + iVar27;\n    *(int *)&pStruct->nWriteCounter = iVar25;\n    iVar31 = p->pConfig->nAutomerge;\n    __udivdi3(iVar25,uVar23,iVar7 >> 0x1f,iVar7);\n    __udivdi3(iVar27,iVar30,iVar7 >> 0x1f,iVar7);\n    pFVar21 = p;\n    fts5IndexMerge(p,&pStruct,(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar5->nLevel,iVar31)\n    ;\n    pFVar18 = p->pConfig;\n    iVar7 = p->rc;\n  }" { (expression_statement "iVar30 = (int)pStruct->nWriteCounter;" (assignment_expression "iVar30 = (int)pStruct->nWriteCounter" identifier = (cast_expression "(int)pStruct->nWriteCounter" ( (type_descriptor "int" primitive_type) ) (field_expression "pStruct->nWriteCounter" identifier -> field_identifier))) ;) (expression_statement "iVar27 = *(int *)&pStruct->nWriteCounter;" (assignment_expression "iVar27 = *(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 "uVar23 = pgnoLast + iVar30;" (assignment_expression "uVar23 = pgnoLast + iVar30" identifier = (binary_expression "pgnoLast + iVar30" identifier + identifier)) ;) (expression_statement "*(uint *)((int)&pStruct->nWriteCounter + 4) = uVar23;" (assignment_expression "*(uint *)((int)&pStruct->nWriteCounter + 4) = uVar23" (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 "iVar25 = (uint)(uVar23 < (uint)pgnoLast) + (pgnoLast >> 0x1f) + iVar27;" (assignment_expression "iVar25 = (uint)(uVar23 < (uint)pgnoLast) + (pgnoLast >> 0x1f) + iVar27" identifier = (binary_expression "(uint)(uVar23 < (uint)pgnoLast) + (pgnoLast >> 0x1f) + iVar27" (binary_expression "(uint)(uVar23 < (uint)pgnoLast) + (pgnoLast >> 0x1f)" (call_expression "(uint)(uVar23 < (uint)pgnoLast)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar23 < (uint)pgnoLast)" ( (binary_expression "uVar23 < (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 = iVar25;" (assignment_expression "*(int *)&pStruct->nWriteCounter = iVar25" (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 "iVar31 = p->pConfig->nAutomerge;" (assignment_expression "iVar31 = p->pConfig->nAutomerge" identifier = (field_expression "p->pConfig->nAutomerge" (field_expression "p->pConfig" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "__udivdi3(iVar25,uVar23,iVar7 >> 0x1f,iVar7);" (call_expression "__udivdi3(iVar25,uVar23,iVar7 >> 0x1f,iVar7)" identifier (argument_list "(iVar25,uVar23,iVar7 >> 0x1f,iVar7)" ( identifier , identifier , (binary_expression "iVar7 >> 0x1f" identifier >> number_literal) , identifier ))) ;) (expression_statement "__udivdi3(iVar27,iVar30,iVar7 >> 0x1f,iVar7);" (call_expression "__udivdi3(iVar27,iVar30,iVar7 >> 0x1f,iVar7)" identifier (argument_list "(iVar27,iVar30,iVar7 >> 0x1f,iVar7)" ( identifier , identifier , (binary_expression "iVar7 >> 0x1f" identifier >> number_literal) , identifier ))) ;) (expression_statement "pFVar21 = p;" (assignment_expression "pFVar21 = p" identifier = identifier) ;) (expression_statement "fts5IndexMerge(p,&pStruct,(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar5->nLevel,iVar31)\n    ;" (call_expression "fts5IndexMerge(p,&pStruct,(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar5->nLevel,iVar31)" identifier (argument_list "(p,&pStruct,(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar5->nLevel,iVar31)" ( identifier , (pointer_expression "&pStruct" & identifier) , (binary_expression "(extraout_v1 - extraout_v1_00) * p->nWorkUnit * pFVar5->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 "pFVar5->nLevel" identifier -> field_identifier)) , identifier ))) ;) (expression_statement "pFVar18 = p->pConfig;" (assignment_expression "pFVar18 = 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 "iVar30 = 0;" (assignment_expression "iVar30 = 0" identifier = number_literal) ;) (expression_statement "iVar25 = pFVar18->nCrisisMerge;" (assignment_expression "iVar25 = pFVar18->nCrisisMerge" identifier = (field_expression "pFVar18->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 (pFVar5 = (Fts5Structure *)writer.iSegid, iVar7 == 0) {\n    while( true ) {\n      if (*(int *)(writer.iSegid + iVar30 * 0xc + 0x1c) < iVar25) {\n        pStruct = (Fts5Structure *)writer.iSegid;\n        (*(code *)(*(int *)(bInsert + -0x7d70) + -0x5abc))(p,writer.iSegid);\n        pFVar21 = p;\n        pFVar5 = pStruct;\n        goto LAB_00157ea0;\n      }\n      pFVar21 = p;\n      fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar30,(int *)0x0);\n      iVar30 = iVar30 + 1;\n      iVar7 = p->rc;\n      if (iVar7 != 0) break;\n      pFVar21 = p;\n      fts5StructurePromote(p,iVar30,(Fts5Structure *)writer.iSegid);\n      pFVar5 = (Fts5Structure *)writer.iSegid;\n      if (p->rc != 0) goto LAB_00157ea0;\n    }\n  }" while (parenthesized_expression "(pFVar5 = (Fts5Structure *)writer.iSegid, iVar7 == 0)" ( (comma_expression "pFVar5 = (Fts5Structure *)writer.iSegid, iVar7 == 0" (assignment_expression "pFVar5 = (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 + iVar30 * 0xc + 0x1c) < iVar25) {\n        pStruct = (Fts5Structure *)writer.iSegid;\n        (*(code *)(*(int *)(bInsert + -0x7d70) + -0x5abc))(p,writer.iSegid);\n        pFVar21 = p;\n        pFVar5 = pStruct;\n        goto LAB_00157ea0;\n      }\n      pFVar21 = p;\n      fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar30,(int *)0x0);\n      iVar30 = iVar30 + 1;\n      iVar7 = p->rc;\n      if (iVar7 != 0) break;\n      pFVar21 = p;\n      fts5StructurePromote(p,iVar30,(Fts5Structure *)writer.iSegid);\n      pFVar5 = (Fts5Structure *)writer.iSegid;\n      if (p->rc != 0) goto LAB_00157ea0;\n    }\n  }" { (while_statement "while( true ) {\n      if (*(int *)(writer.iSegid + iVar30 * 0xc + 0x1c) < iVar25) {\n        pStruct = (Fts5Structure *)writer.iSegid;\n        (*(code *)(*(int *)(bInsert + -0x7d70) + -0x5abc))(p,writer.iSegid);\n        pFVar21 = p;\n        pFVar5 = pStruct;\n        goto LAB_00157ea0;\n      }\n      pFVar21 = p;\n      fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar30,(int *)0x0);\n      iVar30 = iVar30 + 1;\n      iVar7 = p->rc;\n      if (iVar7 != 0) break;\n      pFVar21 = p;\n      fts5StructurePromote(p,iVar30,(Fts5Structure *)writer.iSegid);\n      pFVar5 = (Fts5Structure *)writer.iSegid;\n      if (p->rc != 0) goto LAB_00157ea0;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if (*(int *)(writer.iSegid + iVar30 * 0xc + 0x1c) < iVar25) {\n        pStruct = (Fts5Structure *)writer.iSegid;\n        (*(code *)(*(int *)(bInsert + -0x7d70) + -0x5abc))(p,writer.iSegid);\n        pFVar21 = p;\n        pFVar5 = pStruct;\n        goto LAB_00157ea0;\n      }\n      pFVar21 = p;\n      fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar30,(int *)0x0);\n      iVar30 = iVar30 + 1;\n      iVar7 = p->rc;\n      if (iVar7 != 0) break;\n      pFVar21 = p;\n      fts5StructurePromote(p,iVar30,(Fts5Structure *)writer.iSegid);\n      pFVar5 = (Fts5Structure *)writer.iSegid;\n      if (p->rc != 0) goto LAB_00157ea0;\n    }" { (if_statement "if (*(int *)(writer.iSegid + iVar30 * 0xc + 0x1c) < iVar25) {\n        pStruct = (Fts5Structure *)writer.iSegid;\n        (*(code *)(*(int *)(bInsert + -0x7d70) + -0x5abc))(p,writer.iSegid);\n        pFVar21 = p;\n        pFVar5 = pStruct;\n        goto LAB_00157ea0;\n      }" if (parenthesized_expression "(*(int *)(writer.iSegid + iVar30 * 0xc + 0x1c) < iVar25)" ( (binary_expression "*(int *)(writer.iSegid + iVar30 * 0xc + 0x1c) < iVar25" (pointer_expression "*(int *)(writer.iSegid + iVar30 * 0xc + 0x1c)" * (cast_expression "(int *)(writer.iSegid + iVar30 * 0xc + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(writer.iSegid + iVar30 * 0xc + 0x1c)" ( (binary_expression "writer.iSegid + iVar30 * 0xc + 0x1c" (binary_expression "writer.iSegid + iVar30 * 0xc" (field_expression "writer.iSegid" identifier . field_identifier) + (binary_expression "iVar30 * 0xc" identifier * number_literal)) + number_literal) )))) < identifier) )) (compound_statement "{\n        pStruct = (Fts5Structure *)writer.iSegid;\n        (*(code *)(*(int *)(bInsert + -0x7d70) + -0x5abc))(p,writer.iSegid);\n        pFVar21 = p;\n        pFVar5 = pStruct;\n        goto LAB_00157ea0;\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 "(*(code *)(*(int *)(bInsert + -0x7d70) + -0x5abc))(p,writer.iSegid);" (call_expression "(*(code *)(*(int *)(bInsert + -0x7d70) + -0x5abc))(p,writer.iSegid)" (parenthesized_expression "(*(code *)(*(int *)(bInsert + -0x7d70) + -0x5abc))" ( (pointer_expression "*(code *)(*(int *)(bInsert + -0x7d70) + -0x5abc)" * (cast_expression "(code *)(*(int *)(bInsert + -0x7d70) + -0x5abc)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(bInsert + -0x7d70) + -0x5abc)" ( (binary_expression "*(int *)(bInsert + -0x7d70) + -0x5abc" (pointer_expression "*(int *)(bInsert + -0x7d70)" * (cast_expression "(int *)(bInsert + -0x7d70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d70)" ( (binary_expression "bInsert + -0x7d70" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(p,writer.iSegid)" ( identifier , (field_expression "writer.iSegid" identifier . field_identifier) ))) ;) (expression_statement "pFVar21 = p;" (assignment_expression "pFVar21 = p" identifier = identifier) ;) (expression_statement "pFVar5 = pStruct;" (assignment_expression "pFVar5 = pStruct" identifier = identifier) ;) (goto_statement "goto LAB_00157ea0;" goto statement_identifier ;) })) (expression_statement "pFVar21 = p;" (assignment_expression "pFVar21 = p" identifier = identifier) ;) (expression_statement "fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar30,(int *)0x0);" (call_expression "fts5IndexMergeLevel(p,(Fts5Structure **)&writer,iVar30,(int *)0x0)" identifier (argument_list "(p,(Fts5Structure **)&writer,iVar30,(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 "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 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 "pFVar21 = p;" (assignment_expression "pFVar21 = p" identifier = identifier) ;) (expression_statement "fts5StructurePromote(p,iVar30,(Fts5Structure *)writer.iSegid);" (call_expression "fts5StructurePromote(p,iVar30,(Fts5Structure *)writer.iSegid)" identifier (argument_list "(p,iVar30,(Fts5Structure *)writer.iSegid)" ( identifier , identifier , (cast_expression "(Fts5Structure *)writer.iSegid" ( (type_descriptor "Fts5Structure *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "writer.iSegid" identifier . field_identifier)) ))) ;) (expression_statement "pFVar5 = (Fts5Structure *)writer.iSegid;" (assignment_expression "pFVar5 = (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_00157ea0;" if (parenthesized_expression "(p->rc != 0)" ( (binary_expression "p->rc != 0" (field_expression "p->rc" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_00157ea0;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00157ea0:\n  pStruct = pFVar5;" statement_identifier : (expression_statement "pStruct = pFVar5;" (assignment_expression "pStruct = pFVar5" identifier = identifier) ;)) (if_statement "if ((pStruct != (Fts5Structure *)0x0) &&\n     (iVar25 = pStruct->nRef + -1, pStruct->nRef = iVar25, iVar25 < 1)) {\n    pFVar21 = (Fts5Index *)pStruct;\n    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x380c))();\n  }" if (parenthesized_expression "((pStruct != (Fts5Structure *)0x0) &&\n     (iVar25 = pStruct->nRef + -1, pStruct->nRef = iVar25, iVar25 < 1))" ( (binary_expression "(pStruct != (Fts5Structure *)0x0) &&\n     (iVar25 = pStruct->nRef + -1, pStruct->nRef = iVar25, iVar25 < 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 "(iVar25 = pStruct->nRef + -1, pStruct->nRef = iVar25, iVar25 < 1)" ( (comma_expression "iVar25 = pStruct->nRef + -1, pStruct->nRef = iVar25, iVar25 < 1" (assignment_expression "iVar25 = pStruct->nRef + -1" identifier = (binary_expression "pStruct->nRef + -1" (field_expression "pStruct->nRef" identifier -> field_identifier) + number_literal)) , (comma_expression "pStruct->nRef = iVar25, iVar25 < 1" (assignment_expression "pStruct->nRef = iVar25" (field_expression "pStruct->nRef" identifier -> field_identifier) = identifier) , (binary_expression "iVar25 < 1" identifier < number_literal))) ))) )) (compound_statement "{\n    pFVar21 = (Fts5Index *)pStruct;\n    (*(code *)(*(int *)(bInsert + -0x7d7c) + 0x380c))();\n  }" { (expression_statement "pFVar21 = (Fts5Index *)pStruct;" (assignment_expression "pFVar21 = (Fts5Index *)pStruct" identifier = (cast_expression "(Fts5Index *)pStruct" ( (type_descriptor "Fts5Index *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "(*(code *)(*(int *)(bInsert + -0x7d7c) + 0x380c))();" (call_expression "(*(code *)(*(int *)(bInsert + -0x7d7c) + 0x380c))()" (parenthesized_expression "(*(code *)(*(int *)(bInsert + -0x7d7c) + 0x380c))" ( (pointer_expression "*(code *)(*(int *)(bInsert + -0x7d7c) + 0x380c)" * (cast_expression "(code *)(*(int *)(bInsert + -0x7d7c) + 0x380c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(bInsert + -0x7d7c) + 0x380c)" ( (binary_expression "*(int *)(bInsert + -0x7d7c) + 0x380c" (pointer_expression "*(int *)(bInsert + -0x7d7c)" * (cast_expression "(int *)(bInsert + -0x7d7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bInsert + -0x7d7c)" ( (binary_expression "bInsert + -0x7d7c" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "()" ( ))) ;) })) (if_statement "if (iVar6 == *(int *)puVar2) {\n    return;\n  }" if (parenthesized_expression "(iVar6 == *(int *)puVar2)" ( (binary_expression "iVar6 == *(int *)puVar2" identifier == (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar34 = *(code **)(bInsert + -0x7b28);" (assignment_expression "pcVar34 = *(code **)(bInsert + -0x7b28)" identifier = (pointer_expression "*(code **)(bInsert + -0x7b28)" * (cast_expression "(code **)(bInsert + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(bInsert + -0x7b28)" ( (binary_expression "bInsert + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar34)();" (call_expression "(*pcVar34)()" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "psVar20 = pFVar21->pConfig->db;" (assignment_expression "psVar20 = pFVar21->pConfig->db" identifier = (field_expression "pFVar21->pConfig->db" (field_expression "pFVar21->pConfig" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "uVar29 = (undefined4)psVar20->lastRowid;" (assignment_expression "uVar29 = (undefined4)psVar20->lastRowid" identifier = (cast_expression "(undefined4)psVar20->lastRowid" ( (type_descriptor "undefined4" type_identifier) ) (field_expression "psVar20->lastRowid" identifier -> field_identifier))) ;) (expression_statement "uVar26 = *(undefined4 *)&psVar20->lastRowid;" (assignment_expression "uVar26 = *(undefined4 *)&psVar20->lastRowid" identifier = (pointer_expression "*(undefined4 *)&psVar20->lastRowid" * (cast_expression "(undefined4 *)&psVar20->lastRowid" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&psVar20->lastRowid" & (field_expression "psVar20->lastRowid" identifier -> field_identifier))))) ;) (if_statement "if (pFVar21->nWorkUnit != 0) {\n    iVar6 = (*(code *)(*(int *)(pcVar34 + 0x384d4) + -0x62b8))();\n    pFVar21->nWorkUnit = 0;\n    if (iVar6 != 0) {\n      psVar20 = pFVar21->pConfig->db;\n      psVar22 = psVar20->mutex;\n      iVar6 = *(int *)(pcVar34 + 0x3826c);\n      goto joined_r0x001587e4;\n    }\n  }" if (parenthesized_expression "(pFVar21->nWorkUnit != 0)" ( (binary_expression "pFVar21->nWorkUnit != 0" (field_expression "pFVar21->nWorkUnit" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n    iVar6 = (*(code *)(*(int *)(pcVar34 + 0x384d4) + -0x62b8))();\n    pFVar21->nWorkUnit = 0;\n    if (iVar6 != 0) {\n      psVar20 = pFVar21->pConfig->db;\n      psVar22 = psVar20->mutex;\n      iVar6 = *(int *)(pcVar34 + 0x3826c);\n      goto joined_r0x001587e4;\n    }\n  }" { (expression_statement "iVar6 = (*(code *)(*(int *)(pcVar34 + 0x384d4) + -0x62b8))();" (assignment_expression "iVar6 = (*(code *)(*(int *)(pcVar34 + 0x384d4) + -0x62b8))()" identifier = (call_expression "(*(code *)(*(int *)(pcVar34 + 0x384d4) + -0x62b8))()" (parenthesized_expression "(*(code *)(*(int *)(pcVar34 + 0x384d4) + -0x62b8))" ( (pointer_expression "*(code *)(*(int *)(pcVar34 + 0x384d4) + -0x62b8)" * (cast_expression "(code *)(*(int *)(pcVar34 + 0x384d4) + -0x62b8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar34 + 0x384d4) + -0x62b8)" ( (binary_expression "*(int *)(pcVar34 + 0x384d4) + -0x62b8" (pointer_expression "*(int *)(pcVar34 + 0x384d4)" * (cast_expression "(int *)(pcVar34 + 0x384d4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar34 + 0x384d4)" ( (binary_expression "pcVar34 + 0x384d4" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "()" ( )))) ;) (expression_statement "pFVar21->nWorkUnit = 0;" (assignment_expression "pFVar21->nWorkUnit = 0" (field_expression "pFVar21->nWorkUnit" identifier -> field_identifier) = number_literal) ;) (if_statement "if (iVar6 != 0) {\n      psVar20 = pFVar21->pConfig->db;\n      psVar22 = psVar20->mutex;\n      iVar6 = *(int *)(pcVar34 + 0x3826c);\n      goto joined_r0x001587e4;\n    }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      psVar20 = pFVar21->pConfig->db;\n      psVar22 = psVar20->mutex;\n      iVar6 = *(int *)(pcVar34 + 0x3826c);\n      goto joined_r0x001587e4;\n    }" { (expression_statement "psVar20 = pFVar21->pConfig->db;" (assignment_expression "psVar20 = pFVar21->pConfig->db" identifier = (field_expression "pFVar21->pConfig->db" (field_expression "pFVar21->pConfig" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "psVar22 = psVar20->mutex;" (assignment_expression "psVar22 = psVar20->mutex" identifier = (field_expression "psVar20->mutex" identifier -> field_identifier)) ;) (expression_statement "iVar6 = *(int *)(pcVar34 + 0x3826c);" (assignment_expression "iVar6 = *(int *)(pcVar34 + 0x3826c)" identifier = (pointer_expression "*(int *)(pcVar34 + 0x3826c)" * (cast_expression "(int *)(pcVar34 + 0x3826c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar34 + 0x3826c)" ( (binary_expression "pcVar34 + 0x3826c" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x001587e4;" goto statement_identifier ;) })) })) (expression_statement "pFVar24 = (Fts5Index *)pFVar21->zDataTbl;" (assignment_expression "pFVar24 = (Fts5Index *)pFVar21->zDataTbl" identifier = (cast_expression "(Fts5Index *)pFVar21->zDataTbl" ( (type_descriptor "Fts5Index *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar21->zDataTbl" identifier -> field_identifier))) ;) (if_statement "if (pFVar24->nPendingData != 0) {\n    pFVar24->nPendingData = 0;\n    fts5FlushOneHash(pFVar24);\n  }" if (parenthesized_expression "(pFVar24->nPendingData != 0)" ( (binary_expression "pFVar24->nPendingData != 0" (field_expression "pFVar24->nPendingData" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n    pFVar24->nPendingData = 0;\n    fts5FlushOneHash(pFVar24);\n  }" { (expression_statement "pFVar24->nPendingData = 0;" (assignment_expression "pFVar24->nPendingData = 0" (field_expression "pFVar24->nPendingData" identifier -> field_identifier) = number_literal) ;) (expression_statement "fts5FlushOneHash(pFVar24);" (call_expression "fts5FlushOneHash(pFVar24)" identifier (argument_list "(pFVar24)" ( identifier ))) ;) })) (expression_statement "pcVar35 = *(code **)(pcVar34 + 0x38578);" (assignment_expression "pcVar35 = *(code **)(pcVar34 + 0x38578)" identifier = (pointer_expression "*(code **)(pcVar34 + 0x38578)" * (cast_expression "(code **)(pcVar34 + 0x38578)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar34 + 0x38578)" ( (binary_expression "pcVar34 + 0x38578" identifier + number_literal) ))))) ;) (if_statement "if (pFVar24->pReader != (sqlite3_blob *)0x0) {\n    pFVar24->pReader = (sqlite3_blob *)0x0;\n    (*pcVar35)();\n  }" if (parenthesized_expression "(pFVar24->pReader != (sqlite3_blob *)0x0)" ( (binary_expression "pFVar24->pReader != (sqlite3_blob *)0x0" (field_expression "pFVar24->pReader" identifier -> field_identifier) != (cast_expression "(sqlite3_blob *)0x0" ( (type_descriptor "sqlite3_blob *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pFVar24->pReader = (sqlite3_blob *)0x0;\n    (*pcVar35)();\n  }" { (expression_statement "pFVar24->pReader = (sqlite3_blob *)0x0;" (assignment_expression "pFVar24->pReader = (sqlite3_blob *)0x0" (field_expression "pFVar24->pReader" identifier -> field_identifier) = (cast_expression "(sqlite3_blob *)0x0" ( (type_descriptor "sqlite3_blob *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*pcVar35)();" (call_expression "(*pcVar35)()" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "pFVar24->rc = 0;" (assignment_expression "pFVar24->rc = 0" (field_expression "pFVar24->rc" identifier -> field_identifier) = number_literal) ;) (expression_statement "psVar20 = pFVar21->pConfig->db;" (assignment_expression "psVar20 = pFVar21->pConfig->db" identifier = (field_expression "pFVar21->pConfig->db" (field_expression "pFVar21->pConfig" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "psVar22 = psVar20->mutex;" (assignment_expression "psVar22 = psVar20->mutex" identifier = (field_expression "psVar20->mutex" identifier -> field_identifier)) ;) (expression_statement "iVar6 = *(int *)(pcVar34 + 0x3826c);" (assignment_expression "iVar6 = *(int *)(pcVar34 + 0x3826c)" identifier = (pointer_expression "*(int *)(pcVar34 + 0x3826c)" * (cast_expression "(int *)(pcVar34 + 0x3826c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar34 + 0x3826c)" ( (binary_expression "pcVar34 + 0x3826c" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x001587e4:\n  if (psVar22 == (sqlite3_mutex *)0x0) {\n    *(undefined4 *)((int)&psVar20->lastRowid + 4) = uVar29;\n    *(undefined4 *)&psVar20->lastRowid = uVar26;\n    return;\n  }" statement_identifier : (if_statement "if (psVar22 == (sqlite3_mutex *)0x0) {\n    *(undefined4 *)((int)&psVar20->lastRowid + 4) = uVar29;\n    *(undefined4 *)&psVar20->lastRowid = uVar26;\n    return;\n  }" if (parenthesized_expression "(psVar22 == (sqlite3_mutex *)0x0)" ( (binary_expression "psVar22 == (sqlite3_mutex *)0x0" identifier == (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(undefined4 *)((int)&psVar20->lastRowid + 4) = uVar29;\n    *(undefined4 *)&psVar20->lastRowid = uVar26;\n    return;\n  }" { (expression_statement "*(undefined4 *)((int)&psVar20->lastRowid + 4) = uVar29;" (assignment_expression "*(undefined4 *)((int)&psVar20->lastRowid + 4) = uVar29" (pointer_expression "*(undefined4 *)((int)&psVar20->lastRowid + 4)" * (cast_expression "(undefined4 *)((int)&psVar20->lastRowid + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&psVar20->lastRowid + 4)" ( (binary_expression "(int)&psVar20->lastRowid + 4" (cast_expression "(int)&psVar20->lastRowid" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&psVar20->lastRowid" & (field_expression "psVar20->lastRowid" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)&psVar20->lastRowid = uVar26;" (assignment_expression "*(undefined4 *)&psVar20->lastRowid = uVar26" (pointer_expression "*(undefined4 *)&psVar20->lastRowid" * (cast_expression "(undefined4 *)&psVar20->lastRowid" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&psVar20->lastRowid" & (field_expression "psVar20->lastRowid" identifier -> field_identifier)))) = identifier) ;) (return_statement "return;" return ;) }))) (expression_statement "(**(code **)(iVar6 + -0xb1c))();" (call_expression "(**(code **)(iVar6 + -0xb1c))()" (parenthesized_expression "(**(code **)(iVar6 + -0xb1c))" ( (pointer_expression "**(code **)(iVar6 + -0xb1c)" * (pointer_expression "*(code **)(iVar6 + -0xb1c)" * (cast_expression "(code **)(iVar6 + -0xb1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + -0xb1c)" ( (binary_expression "iVar6 + -0xb1c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "psVar22 = psVar20->mutex;" (assignment_expression "psVar22 = psVar20->mutex" identifier = (field_expression "psVar20->mutex" identifier -> field_identifier)) ;) (expression_statement "*(undefined4 *)((int)&psVar20->lastRowid + 4) = uVar29;" (assignment_expression "*(undefined4 *)((int)&psVar20->lastRowid + 4) = uVar29" (pointer_expression "*(undefined4 *)((int)&psVar20->lastRowid + 4)" * (cast_expression "(undefined4 *)((int)&psVar20->lastRowid + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&psVar20->lastRowid + 4)" ( (binary_expression "(int)&psVar20->lastRowid + 4" (cast_expression "(int)&psVar20->lastRowid" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&psVar20->lastRowid" & (field_expression "psVar20->lastRowid" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)&psVar20->lastRowid = uVar26;" (assignment_expression "*(undefined4 *)&psVar20->lastRowid = uVar26" (pointer_expression "*(undefined4 *)&psVar20->lastRowid" * (cast_expression "(undefined4 *)&psVar20->lastRowid" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&psVar20->lastRowid" & (field_expression "psVar20->lastRowid" identifier -> field_identifier)))) = identifier) ;) (if_statement "if (psVar22 != (sqlite3_mutex *)0x0) {\n    (**(code **)(iVar6 + -0xb14))();\n  }" if (parenthesized_expression "(psVar22 != (sqlite3_mutex *)0x0)" ( (binary_expression "psVar22 != (sqlite3_mutex *)0x0" identifier != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (**(code **)(iVar6 + -0xb14))();\n  }" { (expression_statement "(**(code **)(iVar6 + -0xb14))();" (call_expression "(**(code **)(iVar6 + -0xb14))()" (parenthesized_expression "(**(code **)(iVar6 + -0xb14))" ( (pointer_expression "**(code **)(iVar6 + -0xb14)" * (pointer_expression "*(code **)(iVar6 + -0xb14)" * (cast_expression "(code **)(iVar6 + -0xb14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + -0xb14)" ( (binary_expression "iVar6 + -0xb14" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "int FUN_00157d5c(int *param_1)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  code *pcVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  uint uVar17;\n  undefined4 uVar18;\n  undefined4 uVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  undefined *puVar24;\n  code *pcVar25;\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  puVar24 = PTR___stack_chk_guard_00190e24;\n  piVar15 = param_1 + 0x14;\n  local_b4 = 0;\n  iVar12 = param_1[3];\n  local_2c = *(int *)PTR___stack_chk_guard_00190e24;\n  local_b8 = (int *)FUN_0013c448();\n  if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00157de0;\n    }\n    iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8);\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    if (iVar13 == 0) {\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }\n    else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    iVar12 = param_1[9];\n  }\n  piVar3 = local_b8;\n  iVar13 = *param_1;\n  if ((iVar12 == 0) && (piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15)) {\n    iVar20 = local_b8[3];\n    iVar16 = local_b8[2];\n    iVar13 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16;\n    local_b8[2] = iVar12;\n    uVar18 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13);\n    FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13);\n    piVar15 = param_1;\n    FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18);\n    iVar13 = *param_1;\n    iVar12 = param_1[9];\n  }\n  iVar20 = 0;\n  iVar13 = *(int *)(iVar13 + 0x4c);\n  local_90[0] = local_b8;\n  while (piVar3 = local_90[0], iVar12 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }\n  }\nLAB_00157ea0:\n  local_b8 = piVar3;\n  if ((local_b8 != (int *)0x0) && (iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1)) {\n    piVar15 = local_b8;\n    (*(code *)(PTR_LAB_00190ba4 + 0x380c))();\n  }\n  if (local_2c == *(int *)puVar24) {\n    return *(int *)puVar24;\n  }\n  puVar24 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  uVar19 = *(undefined4 *)(*(int *)*piVar15 + 0x2c);\n  uVar18 = *(undefined4 *)(*(int *)*piVar15 + 0x28);\n  if (piVar15[2] != 0) {\n    iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))();\n    piVar15[2] = 0;\n    if (iVar12 != 0) {\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }\n  }\n  iVar13 = piVar15[1];\n  if (*(int *)(iVar13 + 0x10) != 0) {\n    *(undefined4 *)(iVar13 + 0x10) = 0;\n    FUN_00157d5c(iVar13);\n  }\n  pcVar25 = *(code **)(puVar24 + 0x38578);\n  if (*(int *)(iVar13 + 0x28) != 0) {\n    *(undefined4 *)(iVar13 + 0x28) = 0;\n    (*pcVar25)();\n  }\n  iVar12 = *(int *)(iVar13 + 0x24);\n  *(undefined4 *)(iVar13 + 0x24) = 0;\n  iVar13 = *(int *)*piVar15;\n  iVar16 = *(int *)(iVar13 + 0xc);\n  iVar20 = *(int *)(puVar24 + 0x3826c);\njoined_r0x001587e4:\n  if (iVar16 == 0) {\n    *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n    *(undefined4 *)(iVar13 + 0x28) = uVar18;\n    return iVar12;\n  }\n  (**(code **)(iVar20 + -0xb1c))();\n  *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n  *(undefined4 *)(iVar13 + 0x28) = uVar18;\n  if (*(int *)(iVar13 + 0xc) != 0) {\n    (**(code **)(iVar20 + -0xb14))();\n  }\n  return iVar12;\n}\n\n" (function_definition "int FUN_00157d5c(int *param_1)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  code *pcVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  uint uVar17;\n  undefined4 uVar18;\n  undefined4 uVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  undefined *puVar24;\n  code *pcVar25;\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  puVar24 = PTR___stack_chk_guard_00190e24;\n  piVar15 = param_1 + 0x14;\n  local_b4 = 0;\n  iVar12 = param_1[3];\n  local_2c = *(int *)PTR___stack_chk_guard_00190e24;\n  local_b8 = (int *)FUN_0013c448();\n  if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00157de0;\n    }\n    iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8);\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    if (iVar13 == 0) {\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }\n    else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    iVar12 = param_1[9];\n  }\n  piVar3 = local_b8;\n  iVar13 = *param_1;\n  if ((iVar12 == 0) && (piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15)) {\n    iVar20 = local_b8[3];\n    iVar16 = local_b8[2];\n    iVar13 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16;\n    local_b8[2] = iVar12;\n    uVar18 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13);\n    FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13);\n    piVar15 = param_1;\n    FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18);\n    iVar13 = *param_1;\n    iVar12 = param_1[9];\n  }\n  iVar20 = 0;\n  iVar13 = *(int *)(iVar13 + 0x4c);\n  local_90[0] = local_b8;\n  while (piVar3 = local_90[0], iVar12 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }\n  }\nLAB_00157ea0:\n  local_b8 = piVar3;\n  if ((local_b8 != (int *)0x0) && (iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1)) {\n    piVar15 = local_b8;\n    (*(code *)(PTR_LAB_00190ba4 + 0x380c))();\n  }\n  if (local_2c == *(int *)puVar24) {\n    return *(int *)puVar24;\n  }\n  puVar24 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  uVar19 = *(undefined4 *)(*(int *)*piVar15 + 0x2c);\n  uVar18 = *(undefined4 *)(*(int *)*piVar15 + 0x28);\n  if (piVar15[2] != 0) {\n    iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))();\n    piVar15[2] = 0;\n    if (iVar12 != 0) {\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }\n  }\n  iVar13 = piVar15[1];\n  if (*(int *)(iVar13 + 0x10) != 0) {\n    *(undefined4 *)(iVar13 + 0x10) = 0;\n    FUN_00157d5c(iVar13);\n  }\n  pcVar25 = *(code **)(puVar24 + 0x38578);\n  if (*(int *)(iVar13 + 0x28) != 0) {\n    *(undefined4 *)(iVar13 + 0x28) = 0;\n    (*pcVar25)();\n  }\n  iVar12 = *(int *)(iVar13 + 0x24);\n  *(undefined4 *)(iVar13 + 0x24) = 0;\n  iVar13 = *(int *)*piVar15;\n  iVar16 = *(int *)(iVar13 + 0xc);\n  iVar20 = *(int *)(puVar24 + 0x3826c);\njoined_r0x001587e4:\n  if (iVar16 == 0) {\n    *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n    *(undefined4 *)(iVar13 + 0x28) = uVar18;\n    return iVar12;\n  }\n  (**(code **)(iVar20 + -0xb1c))();\n  *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n  *(undefined4 *)(iVar13 + 0x28) = uVar18;\n  if (*(int *)(iVar13 + 0xc) != 0) {\n    (**(code **)(iVar20 + -0xb14))();\n  }\n  return iVar12;\n}" primitive_type (function_declarator "FUN_00157d5c(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 *piVar3;\n  int iVar4;\n  code *pcVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  uint uVar17;\n  undefined4 uVar18;\n  undefined4 uVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  undefined *puVar24;\n  code *pcVar25;\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  puVar24 = PTR___stack_chk_guard_00190e24;\n  piVar15 = param_1 + 0x14;\n  local_b4 = 0;\n  iVar12 = param_1[3];\n  local_2c = *(int *)PTR___stack_chk_guard_00190e24;\n  local_b8 = (int *)FUN_0013c448();\n  if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00157de0;\n    }\n    iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8);\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    if (iVar13 == 0) {\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }\n    else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    iVar12 = param_1[9];\n  }\n  piVar3 = local_b8;\n  iVar13 = *param_1;\n  if ((iVar12 == 0) && (piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15)) {\n    iVar20 = local_b8[3];\n    iVar16 = local_b8[2];\n    iVar13 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16;\n    local_b8[2] = iVar12;\n    uVar18 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13);\n    FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13);\n    piVar15 = param_1;\n    FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18);\n    iVar13 = *param_1;\n    iVar12 = param_1[9];\n  }\n  iVar20 = 0;\n  iVar13 = *(int *)(iVar13 + 0x4c);\n  local_90[0] = local_b8;\n  while (piVar3 = local_90[0], iVar12 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }\n  }\nLAB_00157ea0:\n  local_b8 = piVar3;\n  if ((local_b8 != (int *)0x0) && (iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1)) {\n    piVar15 = local_b8;\n    (*(code *)(PTR_LAB_00190ba4 + 0x380c))();\n  }\n  if (local_2c == *(int *)puVar24) {\n    return *(int *)puVar24;\n  }\n  puVar24 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  uVar19 = *(undefined4 *)(*(int *)*piVar15 + 0x2c);\n  uVar18 = *(undefined4 *)(*(int *)*piVar15 + 0x28);\n  if (piVar15[2] != 0) {\n    iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))();\n    piVar15[2] = 0;\n    if (iVar12 != 0) {\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }\n  }\n  iVar13 = piVar15[1];\n  if (*(int *)(iVar13 + 0x10) != 0) {\n    *(undefined4 *)(iVar13 + 0x10) = 0;\n    FUN_00157d5c(iVar13);\n  }\n  pcVar25 = *(code **)(puVar24 + 0x38578);\n  if (*(int *)(iVar13 + 0x28) != 0) {\n    *(undefined4 *)(iVar13 + 0x28) = 0;\n    (*pcVar25)();\n  }\n  iVar12 = *(int *)(iVar13 + 0x24);\n  *(undefined4 *)(iVar13 + 0x24) = 0;\n  iVar13 = *(int *)*piVar15;\n  iVar16 = *(int *)(iVar13 + 0xc);\n  iVar20 = *(int *)(puVar24 + 0x3826c);\njoined_r0x001587e4:\n  if (iVar16 == 0) {\n    *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n    *(undefined4 *)(iVar13 + 0x28) = uVar18;\n    return iVar12;\n  }\n  (**(code **)(iVar20 + -0xb1c))();\n  *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n  *(undefined4 *)(iVar13 + 0x28) = uVar18;\n  if (*(int *)(iVar13 + 0xc) != 0) {\n    (**(code **)(iVar20 + -0xb14))();\n  }\n  return iVar12;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type 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 extraout_v1;" primitive_type identifier ;) (declaration "int extraout_v1_00;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "undefined4 uVar18;" type_identifier identifier ;) (declaration "undefined4 uVar19;" type_identifier identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "int iVar23;" primitive_type identifier ;) (declaration "undefined *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "code *pcVar25;" type_identifier (pointer_declarator "*pcVar25" * 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 "puVar24 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar24 = PTR___stack_chk_guard_00190e24" identifier = identifier) ;) (expression_statement "piVar15 = param_1 + 0x14;" (assignment_expression "piVar15 = 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 "iVar12 = param_1[3];" (assignment_expression "iVar12 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00190e24;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00190e24" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00190e24" * (cast_expression "(int *)PTR___stack_chk_guard_00190e24" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_b8 = (int *)FUN_0013c448();" (assignment_expression "local_b8 = (int *)FUN_0013c448()" identifier = (cast_expression "(int *)FUN_0013c448()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0013c448()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00157de0;\n    }\n    iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8);\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    if (iVar13 == 0) {\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }\n    else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    iVar12 = 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_00157de0;\n    }\n    iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8);\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    if (iVar13 == 0) {\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }\n    else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }\n  }" { (if_statement "if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00157de0;\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_00157de0;\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_00157de0;" goto statement_identifier ;) })) (expression_statement "iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8);" (assignment_expression "iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8)" identifier = (call_expression "(*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba4 + 0x3b44))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba4 + 0x3b44)" * (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x3b44)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba4 + 0x3b44)" ( (binary_expression "PTR_LAB_00190ba4 + 0x3b44" identifier + number_literal) )))) )) (argument_list "(local_b8)" ( identifier )))) ;) (expression_statement "(*(code *)(PTR_LAB_00190ba4 + 0x3894))();" (call_expression "(*(code *)(PTR_LAB_00190ba4 + 0x3894))()" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba4 + 0x3894))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba4 + 0x3894)" * (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x3894)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba4 + 0x3894)" ( (binary_expression "PTR_LAB_00190ba4 + 0x3894" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;) (if_statement "if (iVar13 == 0) {\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }\n    else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }" { (labeled_statement "LAB_0015817c:\n      iVar12 = param_1[9];" statement_identifier : (expression_statement "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;)) }) (else_clause "else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }" else (compound_statement "{\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }" { (expression_statement "iVar16 = *(int *)(*param_1 + 0x44);" (assignment_expression "iVar16 = *(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_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);" (call_expression "(*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13)" (parenthesized_expression "(*(code *)(PTR_LAB_00190c64 + 0xf64))" ( (pointer_expression "*(code *)(PTR_LAB_00190c64 + 0xf64)" * (cast_expression "(code *)(PTR_LAB_00190c64 + 0xf64)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190c64 + 0xf64)" ( (binary_expression "PTR_LAB_00190c64 + 0xf64" identifier + number_literal) )))) )) (argument_list "(param_1,local_90,iVar13)" ( identifier , identifier , identifier ))) ;) (if_statement "if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 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        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }" { (expression_statement "iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);" (assignment_expression "iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10)" identifier = (call_expression "(*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10)" (parenthesized_expression "(*(code *)(PTR_LAB_00190bb8 + 0x71a8))" ( (pointer_expression "*(code *)(PTR_LAB_00190bb8 + 0x71a8)" * (cast_expression "(code *)(PTR_LAB_00190bb8 + 0x71a8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190bb8 + 0x71a8)" ( (binary_expression "PTR_LAB_00190bb8 + 0x71a8" identifier + number_literal) )))) )) (argument_list "(iVar12,0,0,iVar12 + 0x10)" ( identifier , number_literal , number_literal , (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) ;) (expression_statement "param_1[9] = iVar4;" (assignment_expression "param_1[9] = iVar4" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2 = PTR_LAB_00190b40;" (assignment_expression "puVar2 = PTR_LAB_00190b40" identifier = identifier) ;) (if_statement "if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }" if (parenthesized_expression "((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0))" ( (binary_expression "(iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)" (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) && (parenthesized_expression "(*(int *)(iVar12 + 0x10) != 0)" ( (binary_expression "*(int *)(iVar12 + 0x10) != 0" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }" { (expression_statement "pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);" (assignment_expression "pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8)" identifier = (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x76a8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba4 + 0x76a8)" ( (binary_expression "PTR_LAB_00190ba4 + 0x76a8" identifier + number_literal) )))) ;) (expression_statement "pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434)" identifier = (cast_expression "(code *)(PTR_LAB_00190bb0 + -0x5434)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190bb0 + -0x5434)" ( (binary_expression "PTR_LAB_00190bb0 + -0x5434" identifier + number_literal) )))) ;) (expression_statement "pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0)" identifier = (cast_expression "(code *)(PTR_LAB_00190bb0 + -0x5df0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190bb0 + -0x5df0)" ( (binary_expression "PTR_LAB_00190bb0 + -0x5df0" identifier + number_literal) )))) ;) (expression_statement "pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);" (assignment_expression "pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c)" identifier = (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x610c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba4 + 0x610c)" ( (binary_expression "PTR_LAB_00190ba4 + 0x610c" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }" { (expression_statement "(*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);" (call_expression "(*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8)" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "(iVar12,&local_b0,&local_ac,&local_a8)" ( identifier , (pointer_expression "&local_b0" & identifier) , (pointer_expression "&local_ac" & identifier) , (pointer_expression "&local_a8" & identifier) ))) ;) (expression_statement "uVar18 = local_b0;" (assignment_expression "uVar18 = local_b0" identifier = identifier) ;) (expression_statement "uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);" (assignment_expression "uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0)" identifier = (call_expression "(*(code *)PTR_strlen_00190d80)(local_b0)" (parenthesized_expression "(*(code *)PTR_strlen_00190d80)" ( (pointer_expression "*(code *)PTR_strlen_00190d80" * (cast_expression "(code *)PTR_strlen_00190d80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_b0)" ( identifier )))) ;) (expression_statement "(*pcVar5)(param_1,local_90,uVar19,uVar18);" (call_expression "(*pcVar5)(param_1,local_90,uVar19,uVar18)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(param_1,local_90,uVar19,uVar18)" ( 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 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }" if (parenthesized_expression "(local_80 + local_74 + local_a8 < iVar16)" ( (binary_expression "local_80 + local_74 + local_a8 < iVar16" (binary_expression "local_80 + local_74 + local_a8" (binary_expression "local_80 + local_74" identifier + identifier) + identifier) < identifier) )) (compound_statement "{\n              (*(code *)PTR_memcpy_00190e2c)(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_00190e2c)(local_84 + local_80,local_ac);" (call_expression "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac)" (parenthesized_expression "(*(code *)PTR_memcpy_00190e2c)" ( (pointer_expression "*(code *)PTR_memcpy_00190e2c" * (cast_expression "(code *)PTR_memcpy_00190e2c" ( (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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }" else (compound_statement "{\n              local_fc = 0;\n              local_f4 = 0;\n              local_98 = 0;\n              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < 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 "iVar4 = 0;" (assignment_expression "iVar4 = 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                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }" while (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }" { (expression_statement "iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);" (assignment_expression "iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98)" identifier = (call_expression "(*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98)" (parenthesized_expression "(*(code *)(puVar2 + -0x80))" ( (pointer_expression "*(code *)(puVar2 + -0x80)" * (cast_expression "(code *)(puVar2 + -0x80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x80)" ( (binary_expression "puVar2 + -0x80" identifier + number_literal) )))) )) (argument_list "(local_ac + iVar4,&local_98)" ( (binary_expression "local_ac + iVar4" identifier + identifier) , (pointer_expression "&local_98" & identifier) )))) ;) (expression_statement "iVar8 = iVar4 + iVar8;" (assignment_expression "iVar8 = iVar4 + iVar8" identifier = (binary_expression "iVar4 + iVar8" 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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\n                }" { (if_statement "if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\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                    iVar4 = 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 "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) }) (else_clause "else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }" else (compound_statement "{\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }" { (expression_statement "iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();" (assignment_expression "iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))()" identifier = (call_expression "(*(code *)(PTR_LAB_00190ba8 + 0x3284))()" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + 0x3284))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba8 + 0x3284)" * (cast_expression "(code *)(PTR_LAB_00190ba8 + 0x3284)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba8 + 0x3284)" ( (binary_expression "PTR_LAB_00190ba8 + 0x3284" identifier + number_literal) )))) )) (argument_list "()" ( )))) ;) }))) (expression_statement "local_80 = local_80 + iVar4;" (assignment_expression "local_80 = local_80 + iVar4" identifier = (binary_expression "local_80 + iVar4" identifier + identifier)) ;) (if_statement "if (iVar20 != 1) goto LAB_001584ac;" if (parenthesized_expression "(iVar20 != 1)" ( (binary_expression "iVar20 != 1" identifier != number_literal) )) (goto_statement "goto LAB_001584ac;" goto statement_identifier ;)) (labeled_statement "LAB_001583dc:\n                  iVar4 = iVar8;" statement_identifier : (expression_statement "iVar4 = iVar8;" (assignment_expression "iVar4 = iVar8" identifier = identifier) ;)) (expression_statement "iVar14 = local_80;" (assignment_expression "iVar14 = local_80" identifier = identifier) ;) (if_statement "if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }" if (parenthesized_expression "((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0'))" ( (binary_expression "(iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')" (parenthesized_expression "(iVar8 < local_a8)" ( (binary_expression "iVar8 < local_a8" identifier < identifier) )) && (parenthesized_expression "(*(char *)(local_ac + iVar8) == '\0')" ( (binary_expression "*(char *)(local_ac + iVar8) == '\0'" (pointer_expression "*(char *)(local_ac + iVar8)" * (cast_expression "(char *)(local_ac + iVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_ac + iVar8)" ( (binary_expression "local_ac + iVar8" identifier + identifier) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }" { (expression_statement "iVar14 = local_80 + 1;" (assignment_expression "iVar14 = local_80 + 1" identifier = (binary_expression "local_80 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = iVar8 + 1;" (assignment_expression "iVar4 = iVar8 + 1" identifier = (binary_expression "iVar8 + 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 ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }" if (parenthesized_expression "((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0'))" ( (binary_expression "(iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')" (parenthesized_expression "(iVar4 < local_a8)" ( (binary_expression "iVar4 < local_a8" identifier < identifier) )) && (parenthesized_expression "(*(char *)(local_ac + iVar4) == '\0')" ( (binary_expression "*(char *)(local_ac + iVar4) == '\0'" (pointer_expression "*(char *)(local_ac + iVar4)" * (cast_expression "(char *)(local_ac + iVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_ac + iVar4)" ( (binary_expression "local_ac + iVar4" identifier + identifier) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }" { (expression_statement "iVar4 = iVar8 + 2;" (assignment_expression "iVar4 = iVar8 + 2" identifier = (binary_expression "iVar8 + 2" identifier + number_literal)) ;) (expression_statement "local_84[iVar14] = 0;" (assignment_expression "local_84[iVar14] = 0" (subscript_expression "local_84[iVar14]" identifier [ identifier ]) = number_literal) ;) (expression_statement "iVar14 = local_80 + 2;" (assignment_expression "iVar14 = local_80 + 2" identifier = (binary_expression "local_80 + 2" identifier + number_literal)) ;) })) })) (expression_statement "local_80 = iVar14;" (assignment_expression "local_80 = iVar14" identifier = identifier) ;) (if_statement "if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }" if (parenthesized_expression "(iVar16 <= local_80 + local_74)" ( (binary_expression "iVar16 <= local_80 + local_74" identifier <= (binary_expression "local_80 + local_74" identifier + identifier)) )) (compound_statement "{\n                    (*pcVar6)(param_1,local_90);\n                  }" { (expression_statement "(*pcVar6)(param_1,local_90);" (call_expression "(*pcVar6)(param_1,local_90)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(param_1,local_90)" ( identifier , identifier ))) ;) })) (expression_statement "iVar9 = param_1[9];" (assignment_expression "iVar9 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) }) (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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\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                    iVar4 = 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 "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) }) (else_clause "else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }" else (compound_statement "{\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }" { (expression_statement "iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);" (assignment_expression "iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17)" identifier = (call_expression "(*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + 0x3284))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba8 + 0x3284)" * (cast_expression "(code *)(PTR_LAB_00190ba8 + 0x3284)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba8 + 0x3284)" ( (binary_expression "PTR_LAB_00190ba8 + 0x3284" 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 + iVar4;" (assignment_expression "local_80 = local_80 + iVar4" identifier = (binary_expression "local_80 + iVar4" identifier + identifier)) ;) (expression_statement "local_57 = '\0';" (assignment_expression "local_57 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "(*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);" (call_expression "(*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17)" (parenthesized_expression "(*(code *)(PTR_LAB_00190bb0 + -0x6158))" ( (pointer_expression "*(code *)(PTR_LAB_00190bb0 + -0x6158)" * (cast_expression "(code *)(PTR_LAB_00190bb0 + -0x6158)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190bb0 + -0x6158)" ( (binary_expression "PTR_LAB_00190bb0 + -0x6158" identifier + number_literal) )))) )) (argument_list "(param_1,local_90,local_fc,uVar17)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if (param_1[9] != 0) goto LAB_00158080;" 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_00158080;" goto statement_identifier ;)) (if_statement "if (iVar20 == 1) goto LAB_001583dc;" if (parenthesized_expression "(iVar20 == 1)" ( (binary_expression "iVar20 == 1" identifier == number_literal) )) (goto_statement "goto LAB_001583dc;" goto statement_identifier ;)) (labeled_statement "LAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);" statement_identifier : (expression_statement "iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);" (assignment_expression "iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4)" identifier = (call_expression "(*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba4 + 0x61f0))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba4 + 0x61f0)" * (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x61f0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba4 + 0x61f0)" ( (binary_expression "PTR_LAB_00190ba4 + 0x61f0" identifier + number_literal) )))) )) (argument_list "(local_ac + iVar8,&local_a0,auStack_a4)" ( (binary_expression "local_ac + iVar8" identifier + identifier) , (pointer_expression "&local_a0" & identifier) , identifier )))) ;)) (expression_statement "iVar14 = local_ac;" (assignment_expression "iVar14 = local_ac" identifier = identifier) ;) (expression_statement "iVar4 = iVar4 + local_a0;" (assignment_expression "iVar4 = iVar4 + local_a0" identifier = (binary_expression "iVar4 + local_a0" identifier + identifier)) ;) (if_statement "if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }" if (parenthesized_expression "(iVar16 < local_80 + local_74 + iVar4)" ( (binary_expression "iVar16 < local_80 + local_74 + iVar4" identifier < (binary_expression "local_80 + local_74 + iVar4" (binary_expression "local_80 + local_74" identifier + identifier) + identifier)) )) (compound_statement "{\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }" { (expression_statement "iVar22 = 0;" (assignment_expression "iVar22 = 0" identifier = number_literal) ;) (do_statement "do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);" do (compound_statement "{\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    }" { (expression_statement "iVar9 = param_1[9];" (assignment_expression "iVar9 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (if_statement "if (iVar9 != 0) goto LAB_00158518;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00158518;" goto statement_identifier ;)) (expression_statement "iVar23 = iVar4 - iVar22;" (assignment_expression "iVar23 = iVar4 - iVar22" identifier = (binary_expression "iVar4 - iVar22" identifier - identifier)) ;) (expression_statement "iVar9 = iVar14 + iVar22 + iVar8;" (assignment_expression "iVar9 = iVar14 + iVar22 + iVar8" identifier = (binary_expression "iVar14 + iVar22 + iVar8" (binary_expression "iVar14 + iVar22" identifier + identifier) + identifier)) ;) (expression_statement "iVar21 = (iVar16 - local_80) - local_74;" (assignment_expression "iVar21 = (iVar16 - local_80) - local_74" identifier = (binary_expression "(iVar16 - local_80) - local_74" (parenthesized_expression "(iVar16 - local_80)" ( (binary_expression "iVar16 - local_80" identifier - identifier) )) - identifier)) ;) (if_statement "if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }" if (parenthesized_expression "(iVar21 < iVar23)" ( (binary_expression "iVar21 < iVar23" identifier < identifier) )) (compound_statement "{\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }" { (expression_statement "iVar10 = (*pcVar7)(iVar9,auStack_9c);" (assignment_expression "iVar10 = (*pcVar7)(iVar9,auStack_9c)" identifier = (call_expression "(*pcVar7)(iVar9,auStack_9c)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(iVar9,auStack_9c)" ( identifier , identifier )))) ;) (expression_statement "iVar23 = iVar10;" (assignment_expression "iVar23 = iVar10" identifier = identifier) ;) (if_statement "if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }" if (parenthesized_expression "(iVar10 < iVar21)" ( (binary_expression "iVar10 < iVar21" identifier < identifier) )) (compound_statement "{\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }" { (do_statement "do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);" do (compound_statement "{\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          }" { (expression_statement "iVar10 = iVar23;" (assignment_expression "iVar10 = iVar23" identifier = identifier) ;) (expression_statement "iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);" (assignment_expression "iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c)" identifier = (call_expression "(*pcVar7)(iVar9 + iVar10,auStack_9c)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(iVar9 + iVar10,auStack_9c)" ( (binary_expression "iVar9 + iVar10" identifier + identifier) , identifier )))) ;) (expression_statement "iVar23 = iVar10 + iVar11;" (assignment_expression "iVar23 = iVar10 + iVar11" identifier = (binary_expression "iVar10 + iVar11" identifier + identifier)) ;) }) while (parenthesized_expression "(iVar10 + iVar11 <= iVar21)" ( (binary_expression "iVar10 + iVar11 <= iVar21" (binary_expression "iVar10 + iVar11" identifier + identifier) <= identifier) )) ;) })) (expression_statement "iVar22 = iVar22 + iVar10;" (assignment_expression "iVar22 = iVar22 + iVar10" identifier = (binary_expression "iVar22 + iVar10" identifier + identifier)) ;) (expression_statement "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);" (call_expression "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10)" (parenthesized_expression "(*(code *)PTR_memcpy_00190e2c)" ( (pointer_expression "*(code *)PTR_memcpy_00190e2c" * (cast_expression "(code *)PTR_memcpy_00190e2c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_84 + local_80,iVar9,iVar10)" ( (binary_expression "local_84 + local_80" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "local_80 = iVar10 + local_80;" (assignment_expression "local_80 = iVar10 + local_80" identifier = (binary_expression "iVar10 + local_80" identifier + identifier)) ;) (if_statement "if (iVar16 <= local_80 + local_74) goto LAB_00158574;" if (parenthesized_expression "(iVar16 <= local_80 + local_74)" ( (binary_expression "iVar16 <= local_80 + local_74" identifier <= (binary_expression "local_80 + local_74" identifier + identifier)) )) (goto_statement "goto LAB_00158574;" goto statement_identifier ;)) }) (else_clause "else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }" else (compound_statement "{\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }" { (expression_statement "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);" (call_expression "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23)" (parenthesized_expression "(*(code *)PTR_memcpy_00190e2c)" ( (pointer_expression "*(code *)PTR_memcpy_00190e2c" * (cast_expression "(code *)PTR_memcpy_00190e2c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_84 + local_80,iVar9,iVar23)" ( (binary_expression "local_84 + local_80" identifier + identifier) , identifier , identifier ))) ;) (expression_statement "local_80 = iVar23 + local_80;" (assignment_expression "local_80 = iVar23 + local_80" identifier = (binary_expression "iVar23 + local_80" identifier + identifier)) ;) (expression_statement "iVar22 = iVar4;" (assignment_expression "iVar22 = iVar4" identifier = identifier) ;) (if_statement "if (local_80 + local_74 < iVar16) break;" if (parenthesized_expression "(local_80 + local_74 < iVar16)" ( (binary_expression "local_80 + local_74 < iVar16" (binary_expression "local_80 + local_74" identifier + identifier) < identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00158574:\n                        (*pcVar6)(param_1,local_90);" statement_identifier : (expression_statement "(*pcVar6)(param_1,local_90);" (call_expression "(*pcVar6)(param_1,local_90)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(param_1,local_90)" ( identifier , identifier ))) ;)) }))) }) while (parenthesized_expression "(iVar22 < iVar4)" ( (binary_expression "iVar22 < iVar4" identifier < identifier) )) ;) (expression_statement "iVar9 = param_1[9];" (assignment_expression "iVar9 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "iVar4 = iVar8 + iVar4;" (assignment_expression "iVar4 = iVar8 + iVar4" identifier = (binary_expression "iVar8 + iVar4" identifier + identifier)) ;) }) (else_clause "else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }" else (compound_statement "{\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }" { (expression_statement "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);" (call_expression "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4)" (parenthesized_expression "(*(code *)PTR_memcpy_00190e2c)" ( (pointer_expression "*(code *)PTR_memcpy_00190e2c" * (cast_expression "(code *)PTR_memcpy_00190e2c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_84 + local_80,local_ac + iVar8,iVar4)" ( (binary_expression "local_84 + local_80" identifier + identifier) , (binary_expression "local_ac + iVar8" identifier + identifier) , identifier ))) ;) (expression_statement "iVar9 = param_1[9];" (assignment_expression "iVar9 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "local_80 = local_80 + iVar4;" (assignment_expression "local_80 = local_80 + iVar4" identifier = (binary_expression "local_80 + iVar4" identifier + identifier)) ;) (labeled_statement "LAB_00158518:\n                    iVar4 = iVar8 + iVar4;" statement_identifier : (expression_statement "iVar4 = iVar8 + iVar4;" (assignment_expression "iVar4 = iVar8 + iVar4" identifier = (binary_expression "iVar8 + iVar4" identifier + identifier)) ;)) }))) }))) (if_statement "if (iVar9 != 0) goto LAB_00158080;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00158080;" goto statement_identifier ;)) (expression_statement "bVar1 = iVar4 < local_a8;" (assignment_expression "bVar1 = iVar4 < local_a8" identifier = (binary_expression "iVar4 < local_a8" identifier < identifier)) ;) (expression_statement "local_f4 = uVar17;" (assignment_expression "local_f4 = uVar17" identifier = identifier) ;) })) }))) (expression_statement "iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);" (assignment_expression "iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar12 + 0x10) + 4)" * (cast_expression "(int *)(*(int *)(iVar12 + 0x10) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar12 + 0x10) + 4)" ( (binary_expression "*(int *)(iVar12 + 0x10) + 4" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(int *)(iVar12 + 0x10) = iVar4;" (assignment_expression "*(int *)(iVar12 + 0x10) = iVar4" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((param_1[9] != 0) || (iVar4 == 0)) break;" if (parenthesized_expression "((param_1[9] != 0) || (iVar4 == 0))" ( (binary_expression "(param_1[9] != 0) || (iVar4 == 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 "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) ))) )) (break_statement "break;" break ;)) })) })) })) (labeled_statement "LAB_00158080:\n      piVar3 = param_1 + 9;" statement_identifier : (expression_statement "piVar3 = param_1 + 9;" (assignment_expression "piVar3 = param_1 + 9" identifier = (binary_expression "param_1 + 9" identifier + number_literal)) ;)) (expression_statement "(*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);" (call_expression "(*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + 0xe8))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba8 + 0xe8)" * (cast_expression "(code *)(PTR_LAB_00190ba8 + 0xe8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba8 + 0xe8)" ( (binary_expression "PTR_LAB_00190ba8 + 0xe8" identifier + number_literal) )))) )) (argument_list "(iVar12)" ( identifier ))) ;) (expression_statement "piVar15 = param_1;" (assignment_expression "piVar15 = param_1" identifier = identifier) ;) (expression_statement "(*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);" (call_expression "(*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4)" (parenthesized_expression "(*(code *)(PTR_LAB_00190bb0 + -0x5098))" ( (pointer_expression "*(code *)(PTR_LAB_00190bb0 + -0x5098)" * (cast_expression "(code *)(PTR_LAB_00190bb0 + -0x5098)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190bb0 + -0x5098)" ( (binary_expression "PTR_LAB_00190bb0 + -0x5098" identifier + number_literal) )))) )) (argument_list "(param_1,local_90,&local_b4)" ( identifier , identifier , (pointer_expression "&local_b4" & identifier) ))) ;) (if_statement "if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\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        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }" { (expression_statement "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (if_statement "if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }" { (expression_statement "piVar15 = piVar3;" (assignment_expression "piVar15 = piVar3" identifier = identifier) ;) (expression_statement "(*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);" (call_expression "(*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8)" (parenthesized_expression "(*(code *)(PTR_LAB_00190c2c + -0x1080))" ( (pointer_expression "*(code *)(PTR_LAB_00190c2c + -0x1080)" * (cast_expression "(code *)(PTR_LAB_00190c2c + -0x1080)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190c2c + -0x1080)" ( (binary_expression "PTR_LAB_00190c2c + -0x1080" identifier + number_literal) )))) )) (argument_list "(piVar3,&local_b8)" ( identifier , (pointer_expression "&local_b8" & identifier) ))) ;) (goto_statement "goto LAB_001580dc;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }" else (compound_statement "{\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }" { (labeled_statement "LAB_001580dc:\n        iVar12 = param_1[9];" statement_identifier : (expression_statement "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;)) (if_statement "if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }" { (expression_statement "FUN_00156b10(piVar3,local_b8,0,0);" (call_expression "FUN_00156b10(piVar3,local_b8,0,0)" identifier (argument_list "(piVar3,local_b8,0,0)" ( identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "piVar15 = piVar3;" (assignment_expression "piVar15 = piVar3" identifier = identifier) ;) (if_statement "if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }" { (expression_statement "piVar15 = (int *)local_b8[7];" (assignment_expression "piVar15 = (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)piVar15 + 1;" (assignment_expression "local_b8[7] = (int)piVar15 + 1" (subscript_expression "local_b8[7]" identifier [ number_literal ]) = (binary_expression "(int)piVar15 + 1" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);" (assignment_expression "piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc)" identifier = (cast_expression "(int *)(local_b8[8] + (int)piVar15 * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b8[8] + (int)piVar15 * 0xc)" ( (binary_expression "local_b8[8] + (int)piVar15 * 0xc" (subscript_expression "local_b8[8]" identifier [ number_literal ]) + (binary_expression "(int)piVar15 * 0xc" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "*piVar3 = iVar13;" (assignment_expression "*piVar3 = iVar13" (pointer_expression "*piVar3" * identifier) = identifier) ;) (expression_statement "piVar3[1] = 1;" (assignment_expression "piVar3[1] = 1" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar3[2] = local_b4;" (assignment_expression "piVar3[2] = local_b4" (subscript_expression "piVar3[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 "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (if_statement "if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }" { (expression_statement "piVar15 = param_1;" (assignment_expression "piVar15 = param_1" identifier = identifier) ;) (expression_statement "FUN_00157888(param_1,0,local_b8);" (call_expression "FUN_00157888(param_1,0,local_b8)" identifier (argument_list "(param_1,0,local_b8)" ( identifier , number_literal , identifier ))) ;) (goto_statement "goto LAB_0015817c;" goto statement_identifier ;) })) })) })) }))) }))) }) (else_clause "else {\nLAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    iVar12 = param_1[9];\n  }" else (compound_statement "{\nLAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    iVar12 = param_1[9];\n  }" { (labeled_statement "LAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();" statement_identifier : (expression_statement "(*(code *)(PTR_LAB_00190ba4 + 0x3894))();" (call_expression "(*(code *)(PTR_LAB_00190ba4 + 0x3894))()" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba4 + 0x3894))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba4 + 0x3894)" * (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x3894)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba4 + 0x3894)" ( (binary_expression "PTR_LAB_00190ba4 + 0x3894" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;)) (expression_statement "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) }))) (expression_statement "piVar3 = local_b8;" (assignment_expression "piVar3 = local_b8" identifier = identifier) ;) (expression_statement "iVar13 = *param_1;" (assignment_expression "iVar13 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if ((iVar12 == 0) && (piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15)) {\n    iVar20 = local_b8[3];\n    iVar16 = local_b8[2];\n    iVar13 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16;\n    local_b8[2] = iVar12;\n    uVar18 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13);\n    FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13);\n    piVar15 = param_1;\n    FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18);\n    iVar13 = *param_1;\n    iVar12 = param_1[9];\n  }" if (parenthesized_expression "((iVar12 == 0) && (piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15))" ( (binary_expression "(iVar12 == 0) && (piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15)" (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) && (parenthesized_expression "(piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15)" ( (comma_expression "piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15" (assignment_expression "piVar15 = *(int **)(iVar13 + 0x48)" identifier = (pointer_expression "*(int **)(iVar13 + 0x48)" * (cast_expression "(int **)(iVar13 + 0x48)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + 0x48)" ( (binary_expression "iVar13 + 0x48" identifier + number_literal) ))))) , (binary_expression "0 < (int)piVar15" number_literal < (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (compound_statement "{\n    iVar20 = local_b8[3];\n    iVar16 = local_b8[2];\n    iVar13 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16;\n    local_b8[2] = iVar12;\n    uVar18 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13);\n    FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13);\n    piVar15 = param_1;\n    FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18);\n    iVar13 = *param_1;\n    iVar12 = 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 "iVar16 = local_b8[2];" (assignment_expression "iVar16 = local_b8[2]" identifier = (subscript_expression "local_b8[2]" identifier [ number_literal ])) ;) (expression_statement "iVar13 = param_1[2];" (assignment_expression "iVar13 = 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 "iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16;" (assignment_expression "iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16" identifier = (binary_expression "(uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16" (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] = iVar12;" (assignment_expression "local_b8[2] = iVar12" (subscript_expression "local_b8[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar18 = *(undefined4 *)(*param_1 + 0x48);" (assignment_expression "uVar18 = *(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_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13);" (call_expression "FUN_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13)" identifier (argument_list "(iVar12,uVar17,iVar13 >> 0x1f,iVar13)" ( identifier , identifier , (binary_expression "iVar13 >> 0x1f" identifier >> number_literal) , identifier ))) ;) (expression_statement "FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13);" (call_expression "FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13)" identifier (argument_list "(iVar16,iVar20,iVar13 >> 0x1f,iVar13)" ( identifier , identifier , (binary_expression "iVar13 >> 0x1f" identifier >> number_literal) , identifier ))) ;) (expression_statement "piVar15 = param_1;" (assignment_expression "piVar15 = param_1" identifier = identifier) ;) (expression_statement "FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18);" (call_expression "FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18)" identifier (argument_list "(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18)" ( identifier , (pointer_expression "&local_b8" & identifier) , (binary_expression "(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[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 "piVar3[5]" identifier [ number_literal ])) , identifier ))) ;) (expression_statement "iVar13 = *param_1;" (assignment_expression "iVar13 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar12 = param_1[9];" (assignment_expression "iVar12 = 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 "iVar13 = *(int *)(iVar13 + 0x4c);" (assignment_expression "iVar13 = *(int *)(iVar13 + 0x4c)" identifier = (pointer_expression "*(int *)(iVar13 + 0x4c)" * (cast_expression "(int *)(iVar13 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x4c)" ( (binary_expression "iVar13 + 0x4c" 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 (piVar3 = local_90[0], iVar12 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }\n  }" while (parenthesized_expression "(piVar3 = local_90[0], iVar12 == 0)" ( (comma_expression "piVar3 = local_90[0], iVar12 == 0" (assignment_expression "piVar3 = local_90[0]" identifier = (subscript_expression "local_90[0]" identifier [ number_literal ])) , (binary_expression "iVar12 == 0" identifier == number_literal)) )) (compound_statement "{\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }\n  }" { (while_statement "while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }" { (if_statement "if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }" if (parenthesized_expression "(local_90[0][iVar20 * 3 + 7] < iVar13)" ( (binary_expression "local_90[0][iVar20 * 3 + 7] < iVar13" (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        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\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 "(*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);" (call_expression "(*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0)" (parenthesized_expression "(*(code *)(PTR_LAB_00190bb0 + -0x5abc))" ( (pointer_expression "*(code *)(PTR_LAB_00190bb0 + -0x5abc)" * (cast_expression "(code *)(PTR_LAB_00190bb0 + -0x5abc)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190bb0 + -0x5abc)" ( (binary_expression "PTR_LAB_00190bb0 + -0x5abc" identifier + number_literal) )))) )) (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 "piVar15 = param_1;" (assignment_expression "piVar15 = param_1" identifier = identifier) ;) (expression_statement "piVar3 = local_b8;" (assignment_expression "piVar3 = local_b8" identifier = identifier) ;) (goto_statement "goto LAB_00157ea0;" goto statement_identifier ;) })) (expression_statement "piVar15 = param_1;" (assignment_expression "piVar15 = param_1" identifier = identifier) ;) (expression_statement "FUN_00156cac(param_1,local_90,iVar20);" (call_expression "FUN_00156cac(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 "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (if_statement "if (iVar12 != 0) break;" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "piVar15 = param_1;" (assignment_expression "piVar15 = param_1" identifier = identifier) ;) (expression_statement "FUN_00157888(param_1,iVar20);" (call_expression "FUN_00157888(param_1,iVar20)" identifier (argument_list "(param_1,iVar20)" ( identifier , identifier ))) ;) (expression_statement "piVar3 = local_90[0];" (assignment_expression "piVar3 = local_90[0]" identifier = (subscript_expression "local_90[0]" identifier [ number_literal ])) ;) (if_statement "if (param_1[9] != 0) goto LAB_00157ea0;" 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_00157ea0;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00157ea0:\n  local_b8 = piVar3;" statement_identifier : (expression_statement "local_b8 = piVar3;" (assignment_expression "local_b8 = piVar3" identifier = identifier) ;)) (if_statement "if ((local_b8 != (int *)0x0) && (iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1)) {\n    piVar15 = local_b8;\n    (*(code *)(PTR_LAB_00190ba4 + 0x380c))();\n  }" if (parenthesized_expression "((local_b8 != (int *)0x0) && (iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1))" ( (binary_expression "(local_b8 != (int *)0x0) && (iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -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 "(iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1)" ( (comma_expression "iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1" (assignment_expression "iVar12 = *local_b8" identifier = (pointer_expression "*local_b8" * identifier)) , (comma_expression "*local_b8 = iVar12 + -1, iVar12 + -1 < 1" (assignment_expression "*local_b8 = iVar12 + -1" (pointer_expression "*local_b8" * identifier) = (binary_expression "iVar12 + -1" identifier + number_literal)) , (binary_expression "iVar12 + -1 < 1" (binary_expression "iVar12 + -1" identifier + number_literal) < number_literal))) ))) )) (compound_statement "{\n    piVar15 = local_b8;\n    (*(code *)(PTR_LAB_00190ba4 + 0x380c))();\n  }" { (expression_statement "piVar15 = local_b8;" (assignment_expression "piVar15 = local_b8" identifier = identifier) ;) (expression_statement "(*(code *)(PTR_LAB_00190ba4 + 0x380c))();" (call_expression "(*(code *)(PTR_LAB_00190ba4 + 0x380c))()" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba4 + 0x380c))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba4 + 0x380c)" * (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x380c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba4 + 0x380c)" ( (binary_expression "PTR_LAB_00190ba4 + 0x380c" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;) })) (if_statement "if (local_2c == *(int *)puVar24) {\n    return *(int *)puVar24;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar24)" ( (binary_expression "local_2c == *(int *)puVar24" identifier == (pointer_expression "*(int *)puVar24" * (cast_expression "(int *)puVar24" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return *(int *)puVar24;\n  }" { (return_statement "return *(int *)puVar24;" return (pointer_expression "*(int *)puVar24" * (cast_expression "(int *)puVar24" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "puVar24 = PTR___stack_chk_fail_00190df8;" (assignment_expression "puVar24 = PTR___stack_chk_fail_00190df8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00190df8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00190df8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00190df8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00190df8" * (cast_expression "(code *)PTR___stack_chk_fail_00190df8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar19 = *(undefined4 *)(*(int *)*piVar15 + 0x2c);" (assignment_expression "uVar19 = *(undefined4 *)(*(int *)*piVar15 + 0x2c)" identifier = (pointer_expression "*(undefined4 *)(*(int *)*piVar15 + 0x2c)" * (cast_expression "(undefined4 *)(*(int *)*piVar15 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)*piVar15 + 0x2c)" ( (binary_expression "*(int *)*piVar15 + 0x2c" (pointer_expression "*(int *)*piVar15" * (cast_expression "(int *)*piVar15" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar15" * identifier))) + number_literal) ))))) ;) (expression_statement "uVar18 = *(undefined4 *)(*(int *)*piVar15 + 0x28);" (assignment_expression "uVar18 = *(undefined4 *)(*(int *)*piVar15 + 0x28)" identifier = (pointer_expression "*(undefined4 *)(*(int *)*piVar15 + 0x28)" * (cast_expression "(undefined4 *)(*(int *)*piVar15 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)*piVar15 + 0x28)" ( (binary_expression "*(int *)*piVar15 + 0x28" (pointer_expression "*(int *)*piVar15" * (cast_expression "(int *)*piVar15" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar15" * identifier))) + number_literal) ))))) ;) (if_statement "if (piVar15[2] != 0) {\n    iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))();\n    piVar15[2] = 0;\n    if (iVar12 != 0) {\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }\n  }" if (parenthesized_expression "(piVar15[2] != 0)" ( (binary_expression "piVar15[2] != 0" (subscript_expression "piVar15[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))();\n    piVar15[2] = 0;\n    if (iVar12 != 0) {\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }\n  }" { (expression_statement "iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))();" (assignment_expression "iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))()" identifier = (call_expression "(*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))()" (parenthesized_expression "(*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))" ( (pointer_expression "*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8)" * (cast_expression "(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar24 + 0x384d4) + -0x62b8)" ( (binary_expression "*(int *)(puVar24 + 0x384d4) + -0x62b8" (pointer_expression "*(int *)(puVar24 + 0x384d4)" * (cast_expression "(int *)(puVar24 + 0x384d4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x384d4)" ( (binary_expression "puVar24 + 0x384d4" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "()" ( )))) ;) (expression_statement "piVar15[2] = 0;" (assignment_expression "piVar15[2] = 0" (subscript_expression "piVar15[2]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (iVar12 != 0) {\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }" { (expression_statement "iVar13 = *(int *)*piVar15;" (assignment_expression "iVar13 = *(int *)*piVar15" identifier = (pointer_expression "*(int *)*piVar15" * (cast_expression "(int *)*piVar15" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar15" * identifier)))) ;) (expression_statement "iVar16 = *(int *)(iVar13 + 0xc);" (assignment_expression "iVar16 = *(int *)(iVar13 + 0xc)" identifier = (pointer_expression "*(int *)(iVar13 + 0xc)" * (cast_expression "(int *)(iVar13 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0xc)" ( (binary_expression "iVar13 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar20 = *(int *)(puVar24 + 0x3826c);" (assignment_expression "iVar20 = *(int *)(puVar24 + 0x3826c)" identifier = (pointer_expression "*(int *)(puVar24 + 0x3826c)" * (cast_expression "(int *)(puVar24 + 0x3826c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x3826c)" ( (binary_expression "puVar24 + 0x3826c" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x001587e4;" goto statement_identifier ;) })) })) (expression_statement "iVar13 = piVar15[1];" (assignment_expression "iVar13 = piVar15[1]" identifier = (subscript_expression "piVar15[1]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(iVar13 + 0x10) != 0) {\n    *(undefined4 *)(iVar13 + 0x10) = 0;\n    FUN_00157d5c(iVar13);\n  }" if (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    *(undefined4 *)(iVar13 + 0x10) = 0;\n    FUN_00157d5c(iVar13);\n  }" { (expression_statement "*(undefined4 *)(iVar13 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(iVar13 + 0x10) = 0" (pointer_expression "*(undefined4 *)(iVar13 + 0x10)" * (cast_expression "(undefined4 *)(iVar13 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x10)" ( (binary_expression "iVar13 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00157d5c(iVar13);" (call_expression "FUN_00157d5c(iVar13)" identifier (argument_list "(iVar13)" ( identifier ))) ;) })) (expression_statement "pcVar25 = *(code **)(puVar24 + 0x38578);" (assignment_expression "pcVar25 = *(code **)(puVar24 + 0x38578)" identifier = (pointer_expression "*(code **)(puVar24 + 0x38578)" * (cast_expression "(code **)(puVar24 + 0x38578)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x38578)" ( (binary_expression "puVar24 + 0x38578" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(iVar13 + 0x28) != 0) {\n    *(undefined4 *)(iVar13 + 0x28) = 0;\n    (*pcVar25)();\n  }" if (parenthesized_expression "(*(int *)(iVar13 + 0x28) != 0)" ( (binary_expression "*(int *)(iVar13 + 0x28) != 0" (pointer_expression "*(int *)(iVar13 + 0x28)" * (cast_expression "(int *)(iVar13 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x28)" ( (binary_expression "iVar13 + 0x28" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    *(undefined4 *)(iVar13 + 0x28) = 0;\n    (*pcVar25)();\n  }" { (expression_statement "*(undefined4 *)(iVar13 + 0x28) = 0;" (assignment_expression "*(undefined4 *)(iVar13 + 0x28) = 0" (pointer_expression "*(undefined4 *)(iVar13 + 0x28)" * (cast_expression "(undefined4 *)(iVar13 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x28)" ( (binary_expression "iVar13 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar25)();" (call_expression "(*pcVar25)()" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "iVar12 = *(int *)(iVar13 + 0x24);" (assignment_expression "iVar12 = *(int *)(iVar13 + 0x24)" identifier = (pointer_expression "*(int *)(iVar13 + 0x24)" * (cast_expression "(int *)(iVar13 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x24)" ( (binary_expression "iVar13 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(iVar13 + 0x24) = 0" (pointer_expression "*(undefined4 *)(iVar13 + 0x24)" * (cast_expression "(undefined4 *)(iVar13 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x24)" ( (binary_expression "iVar13 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = *(int *)*piVar15;" (assignment_expression "iVar13 = *(int *)*piVar15" identifier = (pointer_expression "*(int *)*piVar15" * (cast_expression "(int *)*piVar15" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar15" * identifier)))) ;) (expression_statement "iVar16 = *(int *)(iVar13 + 0xc);" (assignment_expression "iVar16 = *(int *)(iVar13 + 0xc)" identifier = (pointer_expression "*(int *)(iVar13 + 0xc)" * (cast_expression "(int *)(iVar13 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0xc)" ( (binary_expression "iVar13 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "iVar20 = *(int *)(puVar24 + 0x3826c);" (assignment_expression "iVar20 = *(int *)(puVar24 + 0x3826c)" identifier = (pointer_expression "*(int *)(puVar24 + 0x3826c)" * (cast_expression "(int *)(puVar24 + 0x3826c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x3826c)" ( (binary_expression "puVar24 + 0x3826c" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x001587e4:\n  if (iVar16 == 0) {\n    *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n    *(undefined4 *)(iVar13 + 0x28) = uVar18;\n    return iVar12;\n  }" statement_identifier : (if_statement "if (iVar16 == 0) {\n    *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n    *(undefined4 *)(iVar13 + 0x28) = uVar18;\n    return iVar12;\n  }" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (compound_statement "{\n    *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n    *(undefined4 *)(iVar13 + 0x28) = uVar18;\n    return iVar12;\n  }" { (expression_statement "*(undefined4 *)(iVar13 + 0x2c) = uVar19;" (assignment_expression "*(undefined4 *)(iVar13 + 0x2c) = uVar19" (pointer_expression "*(undefined4 *)(iVar13 + 0x2c)" * (cast_expression "(undefined4 *)(iVar13 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x2c)" ( (binary_expression "iVar13 + 0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x28) = uVar18;" (assignment_expression "*(undefined4 *)(iVar13 + 0x28) = uVar18" (pointer_expression "*(undefined4 *)(iVar13 + 0x28)" * (cast_expression "(undefined4 *)(iVar13 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x28)" ( (binary_expression "iVar13 + 0x28" identifier + number_literal) )))) = identifier) ;) (return_statement "return iVar12;" return identifier ;) }))) (expression_statement "(**(code **)(iVar20 + -0xb1c))();" (call_expression "(**(code **)(iVar20 + -0xb1c))()" (parenthesized_expression "(**(code **)(iVar20 + -0xb1c))" ( (pointer_expression "**(code **)(iVar20 + -0xb1c)" * (pointer_expression "*(code **)(iVar20 + -0xb1c)" * (cast_expression "(code **)(iVar20 + -0xb1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar20 + -0xb1c)" ( (binary_expression "iVar20 + -0xb1c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x2c) = uVar19;" (assignment_expression "*(undefined4 *)(iVar13 + 0x2c) = uVar19" (pointer_expression "*(undefined4 *)(iVar13 + 0x2c)" * (cast_expression "(undefined4 *)(iVar13 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x2c)" ( (binary_expression "iVar13 + 0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x28) = uVar18;" (assignment_expression "*(undefined4 *)(iVar13 + 0x28) = uVar18" (pointer_expression "*(undefined4 *)(iVar13 + 0x28)" * (cast_expression "(undefined4 *)(iVar13 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x28)" ( (binary_expression "iVar13 + 0x28" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(int *)(iVar13 + 0xc) != 0) {\n    (**(code **)(iVar20 + -0xb14))();\n  }" if (parenthesized_expression "(*(int *)(iVar13 + 0xc) != 0)" ( (binary_expression "*(int *)(iVar13 + 0xc) != 0" (pointer_expression "*(int *)(iVar13 + 0xc)" * (cast_expression "(int *)(iVar13 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0xc)" ( (binary_expression "iVar13 + 0xc" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    (**(code **)(iVar20 + -0xb14))();\n  }" { (expression_statement "(**(code **)(iVar20 + -0xb14))();" (call_expression "(**(code **)(iVar20 + -0xb14))()" (parenthesized_expression "(**(code **)(iVar20 + -0xb14))" ( (pointer_expression "**(code **)(iVar20 + -0xb14)" * (pointer_expression "*(code **)(iVar20 + -0xb14)" * (cast_expression "(code **)(iVar20 + -0xb14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar20 + -0xb14)" ( (binary_expression "iVar20 + -0xb14" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) (return_statement "return iVar12;" 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 (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 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 (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 = 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 ])) ;) }) (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 (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (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 = (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)) ;)) }))) }))) (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 (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (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 IDENT (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 IDENT (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 (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 (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (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 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 (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 *)) ) (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) + LIT) ))))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) )) (argument_list ( )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)))) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)))) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return IDENT ;) }))) (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 ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) })) (return_statement return IDENT ;) })))
(function_definition "int FUN_00157d5c(int *param_1)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  code *pcVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  uint uVar17;\n  undefined4 uVar18;\n  undefined4 uVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  undefined *puVar24;\n  code *pcVar25;\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  puVar24 = PTR___stack_chk_guard_00190e24;\n  piVar15 = param_1 + 0x14;\n  local_b4 = 0;\n  iVar12 = param_1[3];\n  local_2c = *(int *)PTR___stack_chk_guard_00190e24;\n  local_b8 = (int *)FUN_0013c448();\n  if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00157de0;\n    }\n    iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8);\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    if (iVar13 == 0) {\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }\n    else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    iVar12 = param_1[9];\n  }\n  piVar3 = local_b8;\n  iVar13 = *param_1;\n  if ((iVar12 == 0) && (piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15)) {\n    iVar20 = local_b8[3];\n    iVar16 = local_b8[2];\n    iVar13 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16;\n    local_b8[2] = iVar12;\n    uVar18 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13);\n    FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13);\n    piVar15 = param_1;\n    FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18);\n    iVar13 = *param_1;\n    iVar12 = param_1[9];\n  }\n  iVar20 = 0;\n  iVar13 = *(int *)(iVar13 + 0x4c);\n  local_90[0] = local_b8;\n  while (piVar3 = local_90[0], iVar12 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }\n  }\nLAB_00157ea0:\n  local_b8 = piVar3;\n  if ((local_b8 != (int *)0x0) && (iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1)) {\n    piVar15 = local_b8;\n    (*(code *)(PTR_LAB_00190ba4 + 0x380c))();\n  }\n  if (local_2c == *(int *)puVar24) {\n    return *(int *)puVar24;\n  }\n  puVar24 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  uVar19 = *(undefined4 *)(*(int *)*piVar15 + 0x2c);\n  uVar18 = *(undefined4 *)(*(int *)*piVar15 + 0x28);\n  if (piVar15[2] != 0) {\n    iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))();\n    piVar15[2] = 0;\n    if (iVar12 != 0) {\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }\n  }\n  iVar13 = piVar15[1];\n  if (*(int *)(iVar13 + 0x10) != 0) {\n    *(undefined4 *)(iVar13 + 0x10) = 0;\n    FUN_00157d5c(iVar13);\n  }\n  pcVar25 = *(code **)(puVar24 + 0x38578);\n  if (*(int *)(iVar13 + 0x28) != 0) {\n    *(undefined4 *)(iVar13 + 0x28) = 0;\n    (*pcVar25)();\n  }\n  iVar12 = *(int *)(iVar13 + 0x24);\n  *(undefined4 *)(iVar13 + 0x24) = 0;\n  iVar13 = *(int *)*piVar15;\n  iVar16 = *(int *)(iVar13 + 0xc);\n  iVar20 = *(int *)(puVar24 + 0x3826c);\njoined_r0x001587e4:\n  if (iVar16 == 0) {\n    *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n    *(undefined4 *)(iVar13 + 0x28) = uVar18;\n    return iVar12;\n  }\n  (**(code **)(iVar20 + -0xb1c))();\n  *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n  *(undefined4 *)(iVar13 + 0x28) = uVar18;\n  if (*(int *)(iVar13 + 0xc) != 0) {\n    (**(code **)(iVar20 + -0xb14))();\n  }\n  return iVar12;\n}" (primitive_type "int") (function_declarator "FUN_00157d5c(int *param_1)" (identifier "FUN_00157d5c") (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 *piVar3;\n  int iVar4;\n  code *pcVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  int extraout_v1;\n  int extraout_v1_00;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  uint uVar17;\n  undefined4 uVar18;\n  undefined4 uVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  undefined *puVar24;\n  code *pcVar25;\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  puVar24 = PTR___stack_chk_guard_00190e24;\n  piVar15 = param_1 + 0x14;\n  local_b4 = 0;\n  iVar12 = param_1[3];\n  local_2c = *(int *)PTR___stack_chk_guard_00190e24;\n  local_b8 = (int *)FUN_0013c448();\n  if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00157de0;\n    }\n    iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8);\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    if (iVar13 == 0) {\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }\n    else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    iVar12 = param_1[9];\n  }\n  piVar3 = local_b8;\n  iVar13 = *param_1;\n  if ((iVar12 == 0) && (piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15)) {\n    iVar20 = local_b8[3];\n    iVar16 = local_b8[2];\n    iVar13 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16;\n    local_b8[2] = iVar12;\n    uVar18 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13);\n    FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13);\n    piVar15 = param_1;\n    FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18);\n    iVar13 = *param_1;\n    iVar12 = param_1[9];\n  }\n  iVar20 = 0;\n  iVar13 = *(int *)(iVar13 + 0x4c);\n  local_90[0] = local_b8;\n  while (piVar3 = local_90[0], iVar12 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }\n  }\nLAB_00157ea0:\n  local_b8 = piVar3;\n  if ((local_b8 != (int *)0x0) && (iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1)) {\n    piVar15 = local_b8;\n    (*(code *)(PTR_LAB_00190ba4 + 0x380c))();\n  }\n  if (local_2c == *(int *)puVar24) {\n    return *(int *)puVar24;\n  }\n  puVar24 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  uVar19 = *(undefined4 *)(*(int *)*piVar15 + 0x2c);\n  uVar18 = *(undefined4 *)(*(int *)*piVar15 + 0x28);\n  if (piVar15[2] != 0) {\n    iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))();\n    piVar15[2] = 0;\n    if (iVar12 != 0) {\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }\n  }\n  iVar13 = piVar15[1];\n  if (*(int *)(iVar13 + 0x10) != 0) {\n    *(undefined4 *)(iVar13 + 0x10) = 0;\n    FUN_00157d5c(iVar13);\n  }\n  pcVar25 = *(code **)(puVar24 + 0x38578);\n  if (*(int *)(iVar13 + 0x28) != 0) {\n    *(undefined4 *)(iVar13 + 0x28) = 0;\n    (*pcVar25)();\n  }\n  iVar12 = *(int *)(iVar13 + 0x24);\n  *(undefined4 *)(iVar13 + 0x24) = 0;\n  iVar13 = *(int *)*piVar15;\n  iVar16 = *(int *)(iVar13 + 0xc);\n  iVar20 = *(int *)(puVar24 + 0x3826c);\njoined_r0x001587e4:\n  if (iVar16 == 0) {\n    *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n    *(undefined4 *)(iVar13 + 0x28) = uVar18;\n    return iVar12;\n  }\n  (**(code **)(iVar20 + -0xb1c))();\n  *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n  *(undefined4 *)(iVar13 + 0x28) = uVar18;\n  if (*(int *)(iVar13 + 0xc) != 0) {\n    (**(code **)(iVar20 + -0xb14))();\n  }\n  return iVar12;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "code *pcVar5;" (type_identifier "code") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "code *pcVar6;" (type_identifier "code") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "code *pcVar7;" (type_identifier "code") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (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 extraout_v1;" (primitive_type "int") (identifier "extraout_v1") (; ";")) (declaration "int extraout_v1_00;" (primitive_type "int") (identifier "extraout_v1_00") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "int *piVar15;" (primitive_type "int") (pointer_declarator "*piVar15" (* "*") (identifier "piVar15")) (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "undefined4 uVar18;" (type_identifier "undefined4") (identifier "uVar18") (; ";")) (declaration "undefined4 uVar19;" (type_identifier "undefined4") (identifier "uVar19") (; ";")) (declaration "int iVar20;" (primitive_type "int") (identifier "iVar20") (; ";")) (declaration "int iVar21;" (primitive_type "int") (identifier "iVar21") (; ";")) (declaration "int iVar22;" (primitive_type "int") (identifier "iVar22") (; ";")) (declaration "int iVar23;" (primitive_type "int") (identifier "iVar23") (; ";")) (declaration "undefined *puVar24;" (type_identifier "undefined") (pointer_declarator "*puVar24" (* "*") (identifier "puVar24")) (; ";")) (declaration "code *pcVar25;" (type_identifier "code") (pointer_declarator "*pcVar25" (* "*") (identifier "pcVar25")) (; ";")) (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 "puVar24 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar24 = PTR___stack_chk_guard_00190e24" (identifier "puVar24") (= "=") (identifier "PTR___stack_chk_guard_00190e24")) (; ";")) (expression_statement "piVar15 = param_1 + 0x14;" (assignment_expression "piVar15 = param_1 + 0x14" (identifier "piVar15") (= "=") (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 "iVar12 = param_1[3];" (assignment_expression "iVar12 = param_1[3]" (identifier "iVar12") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00190e24;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00190e24" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_00190e24" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00190e24" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00190e24")))) (; ";")) (expression_statement "local_b8 = (int *)FUN_0013c448();" (assignment_expression "local_b8 = (int *)FUN_0013c448()" (identifier "local_b8") (= "=") (cast_expression "(int *)FUN_0013c448()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0013c448()" (identifier "FUN_0013c448") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (param_1[9] == 0) {\n    if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00157de0;\n    }\n    iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8);\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    if (iVar13 == 0) {\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }\n    else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    iVar12 = 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_00157de0;\n    }\n    iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8);\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    if (iVar13 == 0) {\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }\n    else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }\n  }" ({ "{") (if_statement "if (1999 < local_b8[4]) {\n      param_1[9] = 0xd;\n      goto LAB_00157de0;\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_00157de0;\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_00157de0;" (goto "goto") (statement_identifier "LAB_00157de0") (; ";")) (} "}"))) (expression_statement "iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8);" (assignment_expression "iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8)" (identifier "iVar13") (= "=") (call_expression "(*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba4 + 0x3b44))" (( "(") (pointer_expression "*(code *)(PTR_LAB_00190ba4 + 0x3b44)" (* "*") (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x3b44)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190ba4 + 0x3b44)" (( "(") (binary_expression "PTR_LAB_00190ba4 + 0x3b44" (identifier "PTR_LAB_00190ba4") (+ "+") (number_literal "0x3b44")) () ")")))) () ")")) (argument_list "(local_b8)" (( "(") (identifier "local_b8") () ")")))) (; ";")) (expression_statement "(*(code *)(PTR_LAB_00190ba4 + 0x3894))();" (call_expression "(*(code *)(PTR_LAB_00190ba4 + 0x3894))()" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba4 + 0x3894))" (( "(") (pointer_expression "*(code *)(PTR_LAB_00190ba4 + 0x3894)" (* "*") (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x3894)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190ba4 + 0x3894)" (( "(") (binary_expression "PTR_LAB_00190ba4 + 0x3894" (identifier "PTR_LAB_00190ba4") (+ "+") (number_literal "0x3894")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (iVar13 == 0) {\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }\n    else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0015817c:\n      iVar12 = param_1[9];\n    }" ({ "{") (labeled_statement "LAB_0015817c:\n      iVar12 = param_1[9];" (statement_identifier "LAB_0015817c") (: ":") (expression_statement "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" (identifier "iVar12") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";"))) (} "}")) (else_clause "else {\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }" (else "else") (compound_statement "{\n      iVar16 = *(int *)(*param_1 + 0x44);\n      iVar20 = *(int *)(*param_1 + 0x30);\n      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);\n      if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }\nLAB_00158080:\n      piVar3 = param_1 + 9;\n      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);\n      piVar15 = param_1;\n      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);\n      if (local_b8[5] == 0) {\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }\n    }" ({ "{") (expression_statement "iVar16 = *(int *)(*param_1 + 0x44);" (assignment_expression "iVar16 = *(int *)(*param_1 + 0x44)" (identifier "iVar16") (= "=") (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_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);" (call_expression "(*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13)" (parenthesized_expression "(*(code *)(PTR_LAB_00190c64 + 0xf64))" (( "(") (pointer_expression "*(code *)(PTR_LAB_00190c64 + 0xf64)" (* "*") (cast_expression "(code *)(PTR_LAB_00190c64 + 0xf64)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190c64 + 0xf64)" (( "(") (binary_expression "PTR_LAB_00190c64 + 0xf64" (identifier "PTR_LAB_00190c64") (+ "+") (number_literal "0xf64")) () ")")))) () ")")) (argument_list "(param_1,local_90,iVar13)" (( "(") (identifier "param_1") (, ",") (identifier "local_90") (, ",") (identifier "iVar13") () ")"))) (; ";")) (if_statement "if (param_1[9] == 0) {\n        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 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        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);\n        param_1[9] = iVar4;\n        puVar2 = PTR_LAB_00190b40;\n        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }\n      }" ({ "{") (expression_statement "iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);" (assignment_expression "iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10)" (identifier "iVar4") (= "=") (call_expression "(*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10)" (parenthesized_expression "(*(code *)(PTR_LAB_00190bb8 + 0x71a8))" (( "(") (pointer_expression "*(code *)(PTR_LAB_00190bb8 + 0x71a8)" (* "*") (cast_expression "(code *)(PTR_LAB_00190bb8 + 0x71a8)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190bb8 + 0x71a8)" (( "(") (binary_expression "PTR_LAB_00190bb8 + 0x71a8" (identifier "PTR_LAB_00190bb8") (+ "+") (number_literal "0x71a8")) () ")")))) () ")")) (argument_list "(iVar12,0,0,iVar12 + 0x10)" (( "(") (identifier "iVar12") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (binary_expression "iVar12 + 0x10" (identifier "iVar12") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "param_1[9] = iVar4;" (assignment_expression "param_1[9] = iVar4" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "puVar2 = PTR_LAB_00190b40;" (assignment_expression "puVar2 = PTR_LAB_00190b40" (identifier "puVar2") (= "=") (identifier "PTR_LAB_00190b40")) (; ";")) (if_statement "if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }" (if "if") (parenthesized_expression "((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0))" (( "(") (binary_expression "(iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)" (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar12 + 0x10) != 0)" (( "(") (binary_expression "*(int *)(iVar12 + 0x10) != 0" (pointer_expression "*(int *)(iVar12 + 0x10)" (* "*") (cast_expression "(int *)(iVar12 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x10)" (( "(") (binary_expression "iVar12 + 0x10" (identifier "iVar12") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);\n          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);\n          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);\n          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);\n          while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }\n        }" ({ "{") (expression_statement "pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);" (assignment_expression "pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8)" (identifier "pcVar25") (= "=") (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x76a8)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190ba4 + 0x76a8)" (( "(") (binary_expression "PTR_LAB_00190ba4 + 0x76a8" (identifier "PTR_LAB_00190ba4") (+ "+") (number_literal "0x76a8")) () ")")))) (; ";")) (expression_statement "pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434)" (identifier "pcVar5") (= "=") (cast_expression "(code *)(PTR_LAB_00190bb0 + -0x5434)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190bb0 + -0x5434)" (( "(") (binary_expression "PTR_LAB_00190bb0 + -0x5434" (identifier "PTR_LAB_00190bb0") (+ "+") (number_literal "-0x5434")) () ")")))) (; ";")) (expression_statement "pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0)" (identifier "pcVar6") (= "=") (cast_expression "(code *)(PTR_LAB_00190bb0 + -0x5df0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190bb0 + -0x5df0)" (( "(") (binary_expression "PTR_LAB_00190bb0 + -0x5df0" (identifier "PTR_LAB_00190bb0") (+ "+") (number_literal "-0x5df0")) () ")")))) (; ";")) (expression_statement "pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);" (assignment_expression "pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c)" (identifier "pcVar7") (= "=") (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x610c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190ba4 + 0x610c)" (( "(") (binary_expression "PTR_LAB_00190ba4 + 0x610c" (identifier "PTR_LAB_00190ba4") (+ "+") (number_literal "0x610c")) () ")")))) (; ";")) (while_statement "while( true ) {\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);\n            uVar18 = local_b0;\n            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);\n            (*pcVar5)(param_1,local_90,uVar19,uVar18);\n            if (param_1[9] != 0) break;\n            if (local_80 + local_74 + local_a8 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }\n            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);\n            *(int *)(iVar12 + 0x10) = iVar4;\n            if ((param_1[9] != 0) || (iVar4 == 0)) break;\n          }" ({ "{") (expression_statement "(*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);" (call_expression "(*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8)" (parenthesized_expression "(*pcVar25)" (( "(") (pointer_expression "*pcVar25" (* "*") (identifier "pcVar25")) () ")")) (argument_list "(iVar12,&local_b0,&local_ac,&local_a8)" (( "(") (identifier "iVar12") (, ",") (pointer_expression "&local_b0" (& "&") (identifier "local_b0")) (, ",") (pointer_expression "&local_ac" (& "&") (identifier "local_ac")) (, ",") (pointer_expression "&local_a8" (& "&") (identifier "local_a8")) () ")"))) (; ";")) (expression_statement "uVar18 = local_b0;" (assignment_expression "uVar18 = local_b0" (identifier "uVar18") (= "=") (identifier "local_b0")) (; ";")) (expression_statement "uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);" (assignment_expression "uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0)" (identifier "uVar19") (= "=") (call_expression "(*(code *)PTR_strlen_00190d80)(local_b0)" (parenthesized_expression "(*(code *)PTR_strlen_00190d80)" (( "(") (pointer_expression "*(code *)PTR_strlen_00190d80" (* "*") (cast_expression "(code *)PTR_strlen_00190d80" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_00190d80"))) () ")")) (argument_list "(local_b0)" (( "(") (identifier "local_b0") () ")")))) (; ";")) (expression_statement "(*pcVar5)(param_1,local_90,uVar19,uVar18);" (call_expression "(*pcVar5)(param_1,local_90,uVar19,uVar18)" (parenthesized_expression "(*pcVar5)" (( "(") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) () ")")) (argument_list "(param_1,local_90,uVar19,uVar18)" (( "(") (identifier "param_1") (, ",") (identifier "local_90") (, ",") (identifier "uVar19") (, ",") (identifier "uVar18") () ")"))) (; ";")) (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 < iVar16) {\n              (*(code *)PTR_memcpy_00190e2c)(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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }\n            }" (if "if") (parenthesized_expression "(local_80 + local_74 + local_a8 < iVar16)" (( "(") (binary_expression "local_80 + local_74 + local_a8 < iVar16" (binary_expression "local_80 + local_74 + local_a8" (binary_expression "local_80 + local_74" (identifier "local_80") (+ "+") (identifier "local_74")) (+ "+") (identifier "local_a8")) (< "<") (identifier "iVar16")) () ")")) (compound_statement "{\n              (*(code *)PTR_memcpy_00190e2c)(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_00190e2c)(local_84 + local_80,local_ac);" (call_expression "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac)" (parenthesized_expression "(*(code *)PTR_memcpy_00190e2c)" (( "(") (pointer_expression "*(code *)PTR_memcpy_00190e2c" (* "*") (cast_expression "(code *)PTR_memcpy_00190e2c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_00190e2c"))) () ")")) (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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < 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              iVar4 = 0;\n              local_94 = 0;\n              bVar1 = 0 < local_a8;\n              while (bVar1) {\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < 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 "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (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                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }" (while "while") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);\n                iVar8 = iVar4 + iVar8;\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\n                }\n                if (iVar9 != 0) goto LAB_00158080;\n                bVar1 = iVar4 < local_a8;\n                local_f4 = uVar17;\n              }" ({ "{") (expression_statement "iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);" (assignment_expression "iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98)" (identifier "iVar8") (= "=") (call_expression "(*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98)" (parenthesized_expression "(*(code *)(puVar2 + -0x80))" (( "(") (pointer_expression "*(code *)(puVar2 + -0x80)" (* "*") (cast_expression "(code *)(puVar2 + -0x80)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + -0x80)" (( "(") (binary_expression "puVar2 + -0x80" (identifier "puVar2") (+ "+") (number_literal "-0x80")) () ")")))) () ")")) (argument_list "(local_ac + iVar4,&local_98)" (( "(") (binary_expression "local_ac + iVar4" (identifier "local_ac") (+ "+") (identifier "iVar4")) (, ",") (pointer_expression "&local_98" (& "&") (identifier "local_98")) () ")")))) (; ";")) (expression_statement "iVar8 = iVar4 + iVar8;" (assignment_expression "iVar8 = iVar4 + iVar8" (identifier "iVar8") (= "=") (binary_expression "iVar4 + iVar8" (identifier "iVar4") (+ "+") (identifier "iVar8"))) (; ";")) (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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }\n                  local_80 = local_80 + iVar4;\n                  if (iVar20 != 1) goto LAB_001584ac;\nLAB_001583dc:\n                  iVar4 = iVar8;\n                  iVar14 = local_80;\n                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }\n                  local_80 = iVar14;\n                  if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }\n                  iVar9 = param_1[9];\n                }" ({ "{") (if_statement "if ((local_98 == 0) && (local_94 < 0x80)) {\n                    local_84[local_80] = (char)local_94;\n                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\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                    iVar4 = 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 "iVar4 = 1;" (assignment_expression "iVar4 = 1" (identifier "iVar4") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }" (else "else") (compound_statement "{\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();\n                  }" ({ "{") (expression_statement "iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();" (assignment_expression "iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))()" (identifier "iVar4") (= "=") (call_expression "(*(code *)(PTR_LAB_00190ba8 + 0x3284))()" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + 0x3284))" (( "(") (pointer_expression "*(code *)(PTR_LAB_00190ba8 + 0x3284)" (* "*") (cast_expression "(code *)(PTR_LAB_00190ba8 + 0x3284)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190ba8 + 0x3284)" (( "(") (binary_expression "PTR_LAB_00190ba8 + 0x3284" (identifier "PTR_LAB_00190ba8") (+ "+") (number_literal "0x3284")) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (expression_statement "local_80 = local_80 + iVar4;" (assignment_expression "local_80 = local_80 + iVar4" (identifier "local_80") (= "=") (binary_expression "local_80 + iVar4" (identifier "local_80") (+ "+") (identifier "iVar4"))) (; ";")) (if_statement "if (iVar20 != 1) goto LAB_001584ac;" (if "if") (parenthesized_expression "(iVar20 != 1)" (( "(") (binary_expression "iVar20 != 1" (identifier "iVar20") (!= "!=") (number_literal "1")) () ")")) (goto_statement "goto LAB_001584ac;" (goto "goto") (statement_identifier "LAB_001584ac") (; ";"))) (labeled_statement "LAB_001583dc:\n                  iVar4 = iVar8;" (statement_identifier "LAB_001583dc") (: ":") (expression_statement "iVar4 = iVar8;" (assignment_expression "iVar4 = iVar8" (identifier "iVar4") (= "=") (identifier "iVar8")) (; ";"))) (expression_statement "iVar14 = local_80;" (assignment_expression "iVar14 = local_80" (identifier "iVar14") (= "=") (identifier "local_80")) (; ";")) (if_statement "if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }" (if "if") (parenthesized_expression "((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0'))" (( "(") (binary_expression "(iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')" (parenthesized_expression "(iVar8 < local_a8)" (( "(") (binary_expression "iVar8 < local_a8" (identifier "iVar8") (< "<") (identifier "local_a8")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(local_ac + iVar8) == '\0')" (( "(") (binary_expression "*(char *)(local_ac + iVar8) == '\0'" (pointer_expression "*(char *)(local_ac + iVar8)" (* "*") (cast_expression "(char *)(local_ac + iVar8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_ac + iVar8)" (( "(") (binary_expression "local_ac + iVar8" (identifier "local_ac") (+ "+") (identifier "iVar8")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n                    iVar14 = local_80 + 1;\n                    iVar4 = iVar8 + 1;\n                    local_84[local_80] = 0;\n                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }\n                  }" ({ "{") (expression_statement "iVar14 = local_80 + 1;" (assignment_expression "iVar14 = local_80 + 1" (identifier "iVar14") (= "=") (binary_expression "local_80 + 1" (identifier "local_80") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = iVar8 + 1;" (assignment_expression "iVar4 = iVar8 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (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 ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }" (if "if") (parenthesized_expression "((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0'))" (( "(") (binary_expression "(iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')" (parenthesized_expression "(iVar4 < local_a8)" (( "(") (binary_expression "iVar4 < local_a8" (identifier "iVar4") (< "<") (identifier "local_a8")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(local_ac + iVar4) == '\0')" (( "(") (binary_expression "*(char *)(local_ac + iVar4) == '\0'" (pointer_expression "*(char *)(local_ac + iVar4)" (* "*") (cast_expression "(char *)(local_ac + iVar4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_ac + iVar4)" (( "(") (binary_expression "local_ac + iVar4" (identifier "local_ac") (+ "+") (identifier "iVar4")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n                      iVar4 = iVar8 + 2;\n                      local_84[iVar14] = 0;\n                      iVar14 = local_80 + 2;\n                    }" ({ "{") (expression_statement "iVar4 = iVar8 + 2;" (assignment_expression "iVar4 = iVar8 + 2" (identifier "iVar4") (= "=") (binary_expression "iVar8 + 2" (identifier "iVar8") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "local_84[iVar14] = 0;" (assignment_expression "local_84[iVar14] = 0" (subscript_expression "local_84[iVar14]" (identifier "local_84") ([ "[") (identifier "iVar14") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar14 = local_80 + 2;" (assignment_expression "iVar14 = local_80 + 2" (identifier "iVar14") (= "=") (binary_expression "local_80 + 2" (identifier "local_80") (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "local_80 = iVar14;" (assignment_expression "local_80 = iVar14" (identifier "local_80") (= "=") (identifier "iVar14")) (; ";")) (if_statement "if (iVar16 <= local_80 + local_74) {\n                    (*pcVar6)(param_1,local_90);\n                  }" (if "if") (parenthesized_expression "(iVar16 <= local_80 + local_74)" (( "(") (binary_expression "iVar16 <= local_80 + local_74" (identifier "iVar16") (<= "<=") (binary_expression "local_80 + local_74" (identifier "local_80") (+ "+") (identifier "local_74"))) () ")")) (compound_statement "{\n                    (*pcVar6)(param_1,local_90);\n                  }" ({ "{") (expression_statement "(*pcVar6)(param_1,local_90);" (call_expression "(*pcVar6)(param_1,local_90)" (parenthesized_expression "(*pcVar6)" (( "(") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) () ")")) (argument_list "(param_1,local_90)" (( "(") (identifier "param_1") (, ",") (identifier "local_90") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar9 = param_1[9];" (assignment_expression "iVar9 = param_1[9]" (identifier "iVar9") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (} "}")) (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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }\n                  local_80 = local_80 + iVar4;\n                  local_57 = '\0';\n                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);\n                  if (param_1[9] != 0) goto LAB_00158080;\n                  if (iVar20 == 1) goto LAB_001583dc;\nLAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);\n                  iVar14 = local_ac;\n                  iVar4 = iVar4 + local_a0;\n                  if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }\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                    iVar4 = 1;\n                  }\n                  else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\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                    iVar4 = 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 "iVar4 = 1;" (assignment_expression "iVar4 = 1" (identifier "iVar4") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }" (else "else") (compound_statement "{\n                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);\n                  }" ({ "{") (expression_statement "iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17);" (assignment_expression "iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17)" (identifier "iVar4") (= "=") (call_expression "(*(code *)(PTR_LAB_00190ba8 + 0x3284))\n                                      (local_84 + local_80,local_fc,local_fc,uVar17)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + 0x3284))" (( "(") (pointer_expression "*(code *)(PTR_LAB_00190ba8 + 0x3284)" (* "*") (cast_expression "(code *)(PTR_LAB_00190ba8 + 0x3284)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190ba8 + 0x3284)" (( "(") (binary_expression "PTR_LAB_00190ba8 + 0x3284" (identifier "PTR_LAB_00190ba8") (+ "+") (number_literal "0x3284")) () ")")))) () ")")) (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 + iVar4;" (assignment_expression "local_80 = local_80 + iVar4" (identifier "local_80") (= "=") (binary_expression "local_80 + iVar4" (identifier "local_80") (+ "+") (identifier "iVar4"))) (; ";")) (expression_statement "local_57 = '\0';" (assignment_expression "local_57 = '\0'" (identifier "local_57") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "(*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);" (call_expression "(*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17)" (parenthesized_expression "(*(code *)(PTR_LAB_00190bb0 + -0x6158))" (( "(") (pointer_expression "*(code *)(PTR_LAB_00190bb0 + -0x6158)" (* "*") (cast_expression "(code *)(PTR_LAB_00190bb0 + -0x6158)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190bb0 + -0x6158)" (( "(") (binary_expression "PTR_LAB_00190bb0 + -0x6158" (identifier "PTR_LAB_00190bb0") (+ "+") (number_literal "-0x6158")) () ")")))) () ")")) (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_00158080;" (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_00158080;" (goto "goto") (statement_identifier "LAB_00158080") (; ";"))) (if_statement "if (iVar20 == 1) goto LAB_001583dc;" (if "if") (parenthesized_expression "(iVar20 == 1)" (( "(") (binary_expression "iVar20 == 1" (identifier "iVar20") (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_001583dc;" (goto "goto") (statement_identifier "LAB_001583dc") (; ";"))) (labeled_statement "LAB_001584ac:\n                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);" (statement_identifier "LAB_001584ac") (: ":") (expression_statement "iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4);" (assignment_expression "iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4)" (identifier "iVar4") (= "=") (call_expression "(*(code *)(PTR_LAB_00190ba4 + 0x61f0))\n                                    (local_ac + iVar8,&local_a0,auStack_a4)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba4 + 0x61f0))" (( "(") (pointer_expression "*(code *)(PTR_LAB_00190ba4 + 0x61f0)" (* "*") (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x61f0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190ba4 + 0x61f0)" (( "(") (binary_expression "PTR_LAB_00190ba4 + 0x61f0" (identifier "PTR_LAB_00190ba4") (+ "+") (number_literal "0x61f0")) () ")")))) () ")")) (argument_list "(local_ac + iVar8,&local_a0,auStack_a4)" (( "(") (binary_expression "local_ac + iVar8" (identifier "local_ac") (+ "+") (identifier "iVar8")) (, ",") (pointer_expression "&local_a0" (& "&") (identifier "local_a0")) (, ",") (identifier "auStack_a4") () ")")))) (; ";"))) (expression_statement "iVar14 = local_ac;" (assignment_expression "iVar14 = local_ac" (identifier "iVar14") (= "=") (identifier "local_ac")) (; ";")) (expression_statement "iVar4 = iVar4 + local_a0;" (assignment_expression "iVar4 = iVar4 + local_a0" (identifier "iVar4") (= "=") (binary_expression "iVar4 + local_a0" (identifier "iVar4") (+ "+") (identifier "local_a0"))) (; ";")) (if_statement "if (iVar16 < local_80 + local_74 + iVar4) {\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }\n                  else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }" (if "if") (parenthesized_expression "(iVar16 < local_80 + local_74 + iVar4)" (( "(") (binary_expression "iVar16 < local_80 + local_74 + iVar4" (identifier "iVar16") (< "<") (binary_expression "local_80 + local_74 + iVar4" (binary_expression "local_80 + local_74" (identifier "local_80") (+ "+") (identifier "local_74")) (+ "+") (identifier "iVar4"))) () ")")) (compound_statement "{\n                    iVar22 = 0;\n                    do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);\n                    iVar9 = param_1[9];\n                    iVar4 = iVar8 + iVar4;\n                  }" ({ "{") (expression_statement "iVar22 = 0;" (assignment_expression "iVar22 = 0" (identifier "iVar22") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    } while (iVar22 < iVar4);" (do "do") (compound_statement "{\n                      iVar9 = param_1[9];\n                      if (iVar9 != 0) goto LAB_00158518;\n                      iVar23 = iVar4 - iVar22;\n                      iVar9 = iVar14 + iVar22 + iVar8;\n                      iVar21 = (iVar16 - local_80) - local_74;\n                      if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }\n                    }" ({ "{") (expression_statement "iVar9 = param_1[9];" (assignment_expression "iVar9 = param_1[9]" (identifier "iVar9") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (if_statement "if (iVar9 != 0) goto LAB_00158518;" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00158518;" (goto "goto") (statement_identifier "LAB_00158518") (; ";"))) (expression_statement "iVar23 = iVar4 - iVar22;" (assignment_expression "iVar23 = iVar4 - iVar22" (identifier "iVar23") (= "=") (binary_expression "iVar4 - iVar22" (identifier "iVar4") (- "-") (identifier "iVar22"))) (; ";")) (expression_statement "iVar9 = iVar14 + iVar22 + iVar8;" (assignment_expression "iVar9 = iVar14 + iVar22 + iVar8" (identifier "iVar9") (= "=") (binary_expression "iVar14 + iVar22 + iVar8" (binary_expression "iVar14 + iVar22" (identifier "iVar14") (+ "+") (identifier "iVar22")) (+ "+") (identifier "iVar8"))) (; ";")) (expression_statement "iVar21 = (iVar16 - local_80) - local_74;" (assignment_expression "iVar21 = (iVar16 - local_80) - local_74" (identifier "iVar21") (= "=") (binary_expression "(iVar16 - local_80) - local_74" (parenthesized_expression "(iVar16 - local_80)" (( "(") (binary_expression "iVar16 - local_80" (identifier "iVar16") (- "-") (identifier "local_80")) () ")")) (- "-") (identifier "local_74"))) (; ";")) (if_statement "if (iVar21 < iVar23) {\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }\n                      else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }" (if "if") (parenthesized_expression "(iVar21 < iVar23)" (( "(") (binary_expression "iVar21 < iVar23" (identifier "iVar21") (< "<") (identifier "iVar23")) () ")")) (compound_statement "{\n                        iVar10 = (*pcVar7)(iVar9,auStack_9c);\n                        iVar23 = iVar10;\n                        if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }\n                        iVar22 = iVar22 + iVar10;\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);\n                        local_80 = iVar10 + local_80;\n                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;\n                      }" ({ "{") (expression_statement "iVar10 = (*pcVar7)(iVar9,auStack_9c);" (assignment_expression "iVar10 = (*pcVar7)(iVar9,auStack_9c)" (identifier "iVar10") (= "=") (call_expression "(*pcVar7)(iVar9,auStack_9c)" (parenthesized_expression "(*pcVar7)" (( "(") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) () ")")) (argument_list "(iVar9,auStack_9c)" (( "(") (identifier "iVar9") (, ",") (identifier "auStack_9c") () ")")))) (; ";")) (expression_statement "iVar23 = iVar10;" (assignment_expression "iVar23 = iVar10" (identifier "iVar23") (= "=") (identifier "iVar10")) (; ";")) (if_statement "if (iVar10 < iVar21) {\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }" (if "if") (parenthesized_expression "(iVar10 < iVar21)" (( "(") (binary_expression "iVar10 < iVar21" (identifier "iVar10") (< "<") (identifier "iVar21")) () ")")) (compound_statement "{\n                          do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);\n                        }" ({ "{") (do_statement "do {\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          } while (iVar10 + iVar11 <= iVar21);" (do "do") (compound_statement "{\n                            iVar10 = iVar23;\n                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);\n                            iVar23 = iVar10 + iVar11;\n                          }" ({ "{") (expression_statement "iVar10 = iVar23;" (assignment_expression "iVar10 = iVar23" (identifier "iVar10") (= "=") (identifier "iVar23")) (; ";")) (expression_statement "iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);" (assignment_expression "iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c)" (identifier "iVar11") (= "=") (call_expression "(*pcVar7)(iVar9 + iVar10,auStack_9c)" (parenthesized_expression "(*pcVar7)" (( "(") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) () ")")) (argument_list "(iVar9 + iVar10,auStack_9c)" (( "(") (binary_expression "iVar9 + iVar10" (identifier "iVar9") (+ "+") (identifier "iVar10")) (, ",") (identifier "auStack_9c") () ")")))) (; ";")) (expression_statement "iVar23 = iVar10 + iVar11;" (assignment_expression "iVar23 = iVar10 + iVar11" (identifier "iVar23") (= "=") (binary_expression "iVar10 + iVar11" (identifier "iVar10") (+ "+") (identifier "iVar11"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar10 + iVar11 <= iVar21)" (( "(") (binary_expression "iVar10 + iVar11 <= iVar21" (binary_expression "iVar10 + iVar11" (identifier "iVar10") (+ "+") (identifier "iVar11")) (<= "<=") (identifier "iVar21")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar22 = iVar22 + iVar10;" (assignment_expression "iVar22 = iVar22 + iVar10" (identifier "iVar22") (= "=") (binary_expression "iVar22 + iVar10" (identifier "iVar22") (+ "+") (identifier "iVar10"))) (; ";")) (expression_statement "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);" (call_expression "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10)" (parenthesized_expression "(*(code *)PTR_memcpy_00190e2c)" (( "(") (pointer_expression "*(code *)PTR_memcpy_00190e2c" (* "*") (cast_expression "(code *)PTR_memcpy_00190e2c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_00190e2c"))) () ")")) (argument_list "(local_84 + local_80,iVar9,iVar10)" (( "(") (binary_expression "local_84 + local_80" (identifier "local_84") (+ "+") (identifier "local_80")) (, ",") (identifier "iVar9") (, ",") (identifier "iVar10") () ")"))) (; ";")) (expression_statement "local_80 = iVar10 + local_80;" (assignment_expression "local_80 = iVar10 + local_80" (identifier "local_80") (= "=") (binary_expression "iVar10 + local_80" (identifier "iVar10") (+ "+") (identifier "local_80"))) (; ";")) (if_statement "if (iVar16 <= local_80 + local_74) goto LAB_00158574;" (if "if") (parenthesized_expression "(iVar16 <= local_80 + local_74)" (( "(") (binary_expression "iVar16 <= local_80 + local_74" (identifier "iVar16") (<= "<=") (binary_expression "local_80 + local_74" (identifier "local_80") (+ "+") (identifier "local_74"))) () ")")) (goto_statement "goto LAB_00158574;" (goto "goto") (statement_identifier "LAB_00158574") (; ";"))) (} "}")) (else_clause "else {\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }" (else "else") (compound_statement "{\n                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);\n                        local_80 = iVar23 + local_80;\n                        iVar22 = iVar4;\n                        if (local_80 + local_74 < iVar16) break;\nLAB_00158574:\n                        (*pcVar6)(param_1,local_90);\n                      }" ({ "{") (expression_statement "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);" (call_expression "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23)" (parenthesized_expression "(*(code *)PTR_memcpy_00190e2c)" (( "(") (pointer_expression "*(code *)PTR_memcpy_00190e2c" (* "*") (cast_expression "(code *)PTR_memcpy_00190e2c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_00190e2c"))) () ")")) (argument_list "(local_84 + local_80,iVar9,iVar23)" (( "(") (binary_expression "local_84 + local_80" (identifier "local_84") (+ "+") (identifier "local_80")) (, ",") (identifier "iVar9") (, ",") (identifier "iVar23") () ")"))) (; ";")) (expression_statement "local_80 = iVar23 + local_80;" (assignment_expression "local_80 = iVar23 + local_80" (identifier "local_80") (= "=") (binary_expression "iVar23 + local_80" (identifier "iVar23") (+ "+") (identifier "local_80"))) (; ";")) (expression_statement "iVar22 = iVar4;" (assignment_expression "iVar22 = iVar4" (identifier "iVar22") (= "=") (identifier "iVar4")) (; ";")) (if_statement "if (local_80 + local_74 < iVar16) break;" (if "if") (parenthesized_expression "(local_80 + local_74 < iVar16)" (( "(") (binary_expression "local_80 + local_74 < iVar16" (binary_expression "local_80 + local_74" (identifier "local_80") (+ "+") (identifier "local_74")) (< "<") (identifier "iVar16")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00158574:\n                        (*pcVar6)(param_1,local_90);" (statement_identifier "LAB_00158574") (: ":") (expression_statement "(*pcVar6)(param_1,local_90);" (call_expression "(*pcVar6)(param_1,local_90)" (parenthesized_expression "(*pcVar6)" (( "(") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) () ")")) (argument_list "(param_1,local_90)" (( "(") (identifier "param_1") (, ",") (identifier "local_90") () ")"))) (; ";"))) (} "}")))) (} "}")) (while "while") (parenthesized_expression "(iVar22 < iVar4)" (( "(") (binary_expression "iVar22 < iVar4" (identifier "iVar22") (< "<") (identifier "iVar4")) () ")")) (; ";")) (expression_statement "iVar9 = param_1[9];" (assignment_expression "iVar9 = param_1[9]" (identifier "iVar9") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "iVar4 = iVar8 + iVar4;" (assignment_expression "iVar4 = iVar8 + iVar4" (identifier "iVar4") (= "=") (binary_expression "iVar8 + iVar4" (identifier "iVar8") (+ "+") (identifier "iVar4"))) (; ";")) (} "}")) (else_clause "else {\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }" (else "else") (compound_statement "{\n                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);\n                    iVar9 = param_1[9];\n                    local_80 = local_80 + iVar4;\nLAB_00158518:\n                    iVar4 = iVar8 + iVar4;\n                  }" ({ "{") (expression_statement "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);" (call_expression "(*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4)" (parenthesized_expression "(*(code *)PTR_memcpy_00190e2c)" (( "(") (pointer_expression "*(code *)PTR_memcpy_00190e2c" (* "*") (cast_expression "(code *)PTR_memcpy_00190e2c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_00190e2c"))) () ")")) (argument_list "(local_84 + local_80,local_ac + iVar8,iVar4)" (( "(") (binary_expression "local_84 + local_80" (identifier "local_84") (+ "+") (identifier "local_80")) (, ",") (binary_expression "local_ac + iVar8" (identifier "local_ac") (+ "+") (identifier "iVar8")) (, ",") (identifier "iVar4") () ")"))) (; ";")) (expression_statement "iVar9 = param_1[9];" (assignment_expression "iVar9 = param_1[9]" (identifier "iVar9") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "local_80 = local_80 + iVar4;" (assignment_expression "local_80 = local_80 + iVar4" (identifier "local_80") (= "=") (binary_expression "local_80 + iVar4" (identifier "local_80") (+ "+") (identifier "iVar4"))) (; ";")) (labeled_statement "LAB_00158518:\n                    iVar4 = iVar8 + iVar4;" (statement_identifier "LAB_00158518") (: ":") (expression_statement "iVar4 = iVar8 + iVar4;" (assignment_expression "iVar4 = iVar8 + iVar4" (identifier "iVar4") (= "=") (binary_expression "iVar8 + iVar4" (identifier "iVar8") (+ "+") (identifier "iVar4"))) (; ";"))) (} "}")))) (} "}")))) (if_statement "if (iVar9 != 0) goto LAB_00158080;" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00158080;" (goto "goto") (statement_identifier "LAB_00158080") (; ";"))) (expression_statement "bVar1 = iVar4 < local_a8;" (assignment_expression "bVar1 = iVar4 < local_a8" (identifier "bVar1") (= "=") (binary_expression "iVar4 < local_a8" (identifier "iVar4") (< "<") (identifier "local_a8"))) (; ";")) (expression_statement "local_f4 = uVar17;" (assignment_expression "local_f4 = uVar17" (identifier "local_f4") (= "=") (identifier "uVar17")) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);" (assignment_expression "iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(*(int *)(iVar12 + 0x10) + 4)" (* "*") (cast_expression "(int *)(*(int *)(iVar12 + 0x10) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar12 + 0x10) + 4)" (( "(") (binary_expression "*(int *)(iVar12 + 0x10) + 4" (pointer_expression "*(int *)(iVar12 + 0x10)" (* "*") (cast_expression "(int *)(iVar12 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x10)" (( "(") (binary_expression "iVar12 + 0x10" (identifier "iVar12") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*(int *)(iVar12 + 0x10) = iVar4;" (assignment_expression "*(int *)(iVar12 + 0x10) = iVar4" (pointer_expression "*(int *)(iVar12 + 0x10)" (* "*") (cast_expression "(int *)(iVar12 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x10)" (( "(") (binary_expression "iVar12 + 0x10" (identifier "iVar12") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar4")) (; ";")) (if_statement "if ((param_1[9] != 0) || (iVar4 == 0)) break;" (if "if") (parenthesized_expression "((param_1[9] != 0) || (iVar4 == 0))" (( "(") (binary_expression "(param_1[9] != 0) || (iVar4 == 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 "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}"))) (} "}"))) (} "}"))) (labeled_statement "LAB_00158080:\n      piVar3 = param_1 + 9;" (statement_identifier "LAB_00158080") (: ":") (expression_statement "piVar3 = param_1 + 9;" (assignment_expression "piVar3 = param_1 + 9" (identifier "piVar3") (= "=") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9"))) (; ";"))) (expression_statement "(*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);" (call_expression "(*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + 0xe8))" (( "(") (pointer_expression "*(code *)(PTR_LAB_00190ba8 + 0xe8)" (* "*") (cast_expression "(code *)(PTR_LAB_00190ba8 + 0xe8)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190ba8 + 0xe8)" (( "(") (binary_expression "PTR_LAB_00190ba8 + 0xe8" (identifier "PTR_LAB_00190ba8") (+ "+") (number_literal "0xe8")) () ")")))) () ")")) (argument_list "(iVar12)" (( "(") (identifier "iVar12") () ")"))) (; ";")) (expression_statement "piVar15 = param_1;" (assignment_expression "piVar15 = param_1" (identifier "piVar15") (= "=") (identifier "param_1")) (; ";")) (expression_statement "(*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);" (call_expression "(*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4)" (parenthesized_expression "(*(code *)(PTR_LAB_00190bb0 + -0x5098))" (( "(") (pointer_expression "*(code *)(PTR_LAB_00190bb0 + -0x5098)" (* "*") (cast_expression "(code *)(PTR_LAB_00190bb0 + -0x5098)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190bb0 + -0x5098)" (( "(") (binary_expression "PTR_LAB_00190bb0 + -0x5098" (identifier "PTR_LAB_00190bb0") (+ "+") (number_literal "-0x5098")) () ")")))) () ")")) (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        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }\n      else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\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        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }\n      }" ({ "{") (expression_statement "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" (identifier "iVar12") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (if_statement "if (iVar12 == 0) {\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          piVar15 = piVar3;\n          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);\n          goto LAB_001580dc;\n        }" ({ "{") (expression_statement "piVar15 = piVar3;" (assignment_expression "piVar15 = piVar3" (identifier "piVar15") (= "=") (identifier "piVar3")) (; ";")) (expression_statement "(*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);" (call_expression "(*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8)" (parenthesized_expression "(*(code *)(PTR_LAB_00190c2c + -0x1080))" (( "(") (pointer_expression "*(code *)(PTR_LAB_00190c2c + -0x1080)" (* "*") (cast_expression "(code *)(PTR_LAB_00190c2c + -0x1080)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190c2c + -0x1080)" (( "(") (binary_expression "PTR_LAB_00190c2c + -0x1080" (identifier "PTR_LAB_00190c2c") (+ "+") (number_literal "-0x1080")) () ")")))) () ")")) (argument_list "(piVar3,&local_b8)" (( "(") (identifier "piVar3") (, ",") (pointer_expression "&local_b8" (& "&") (identifier "local_b8")) () ")"))) (; ";")) (goto_statement "goto LAB_001580dc;" (goto "goto") (statement_identifier "LAB_001580dc") (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }" (else "else") (compound_statement "{\nLAB_001580dc:\n        iVar12 = param_1[9];\n        if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }\n      }" ({ "{") (labeled_statement "LAB_001580dc:\n        iVar12 = param_1[9];" (statement_identifier "LAB_001580dc") (: ":") (expression_statement "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" (identifier "iVar12") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";"))) (if_statement "if (iVar12 == 0) {\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_00156b10(piVar3,local_b8,0,0);\n          iVar12 = param_1[9];\n          piVar15 = piVar3;\n          if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }\n        }" ({ "{") (expression_statement "FUN_00156b10(piVar3,local_b8,0,0);" (call_expression "FUN_00156b10(piVar3,local_b8,0,0)" (identifier "FUN_00156b10") (argument_list "(piVar3,local_b8,0,0)" (( "(") (identifier "piVar3") (, ",") (identifier "local_b8") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" (identifier "iVar12") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "piVar15 = piVar3;" (assignment_expression "piVar15 = piVar3" (identifier "piVar15") (= "=") (identifier "piVar3")) (; ";")) (if_statement "if (iVar12 == 0) {\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            piVar15 = (int *)local_b8[7];\n            local_b8[7] = (int)piVar15 + 1;\n            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);\n            *piVar3 = iVar13;\n            piVar3[1] = 1;\n            piVar3[2] = local_b4;\n            local_b8[4] = local_b8[4] + 1;\n            iVar12 = param_1[9];\n            if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }\n          }" ({ "{") (expression_statement "piVar15 = (int *)local_b8[7];" (assignment_expression "piVar15 = (int *)local_b8[7]" (identifier "piVar15") (= "=") (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)piVar15 + 1;" (assignment_expression "local_b8[7] = (int)piVar15 + 1" (subscript_expression "local_b8[7]" (identifier "local_b8") ([ "[") (number_literal "7") (] "]")) (= "=") (binary_expression "(int)piVar15 + 1" (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);" (assignment_expression "piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc)" (identifier "piVar3") (= "=") (cast_expression "(int *)(local_b8[8] + (int)piVar15 * 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b8[8] + (int)piVar15 * 0xc)" (( "(") (binary_expression "local_b8[8] + (int)piVar15 * 0xc" (subscript_expression "local_b8[8]" (identifier "local_b8") ([ "[") (number_literal "8") (] "]")) (+ "+") (binary_expression "(int)piVar15 * 0xc" (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")) (* "*") (number_literal "0xc"))) () ")")))) (; ";")) (expression_statement "*piVar3 = iVar13;" (assignment_expression "*piVar3 = iVar13" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "piVar3[1] = 1;" (assignment_expression "piVar3[1] = 1" (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar3[2] = local_b4;" (assignment_expression "piVar3[2] = local_b4" (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (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 "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" (identifier "iVar12") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (if_statement "if (iVar12 == 0) {\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              piVar15 = param_1;\n              FUN_00157888(param_1,0,local_b8);\n              goto LAB_0015817c;\n            }" ({ "{") (expression_statement "piVar15 = param_1;" (assignment_expression "piVar15 = param_1" (identifier "piVar15") (= "=") (identifier "param_1")) (; ";")) (expression_statement "FUN_00157888(param_1,0,local_b8);" (call_expression "FUN_00157888(param_1,0,local_b8)" (identifier "FUN_00157888") (argument_list "(param_1,0,local_b8)" (( "(") (identifier "param_1") (, ",") (number_literal "0") (, ",") (identifier "local_b8") () ")"))) (; ";")) (goto_statement "goto LAB_0015817c;" (goto "goto") (statement_identifier "LAB_0015817c") (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}")))) (} "}")))) (} "}")) (else_clause "else {\nLAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    iVar12 = param_1[9];\n  }" (else "else") (compound_statement "{\nLAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();\n    iVar12 = param_1[9];\n  }" ({ "{") (labeled_statement "LAB_00157de0:\n    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();" (statement_identifier "LAB_00157de0") (: ":") (expression_statement "(*(code *)(PTR_LAB_00190ba4 + 0x3894))();" (call_expression "(*(code *)(PTR_LAB_00190ba4 + 0x3894))()" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba4 + 0x3894))" (( "(") (pointer_expression "*(code *)(PTR_LAB_00190ba4 + 0x3894)" (* "*") (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x3894)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190ba4 + 0x3894)" (( "(") (binary_expression "PTR_LAB_00190ba4 + 0x3894" (identifier "PTR_LAB_00190ba4") (+ "+") (number_literal "0x3894")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" (identifier "iVar12") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (} "}")))) (expression_statement "piVar3 = local_b8;" (assignment_expression "piVar3 = local_b8" (identifier "piVar3") (= "=") (identifier "local_b8")) (; ";")) (expression_statement "iVar13 = *param_1;" (assignment_expression "iVar13 = *param_1" (identifier "iVar13") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if ((iVar12 == 0) && (piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15)) {\n    iVar20 = local_b8[3];\n    iVar16 = local_b8[2];\n    iVar13 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16;\n    local_b8[2] = iVar12;\n    uVar18 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13);\n    FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13);\n    piVar15 = param_1;\n    FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18);\n    iVar13 = *param_1;\n    iVar12 = param_1[9];\n  }" (if "if") (parenthesized_expression "((iVar12 == 0) && (piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15))" (( "(") (binary_expression "(iVar12 == 0) && (piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15)" (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15)" (( "(") (comma_expression "piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15" (assignment_expression "piVar15 = *(int **)(iVar13 + 0x48)" (identifier "piVar15") (= "=") (pointer_expression "*(int **)(iVar13 + 0x48)" (* "*") (cast_expression "(int **)(iVar13 + 0x48)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar13 + 0x48)" (( "(") (binary_expression "iVar13 + 0x48" (identifier "iVar13") (+ "+") (number_literal "0x48")) () ")"))))) (, ",") (binary_expression "0 < (int)piVar15" (number_literal "0") (< "<") (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")))) () ")"))) () ")")) (compound_statement "{\n    iVar20 = local_b8[3];\n    iVar16 = local_b8[2];\n    iVar13 = param_1[2];\n    uVar17 = local_b4 + iVar20;\n    local_b8[3] = uVar17;\n    iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16;\n    local_b8[2] = iVar12;\n    uVar18 = *(undefined4 *)(*param_1 + 0x48);\n    FUN_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13);\n    FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13);\n    piVar15 = param_1;\n    FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18);\n    iVar13 = *param_1;\n    iVar12 = 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 "iVar16 = local_b8[2];" (assignment_expression "iVar16 = local_b8[2]" (identifier "iVar16") (= "=") (subscript_expression "local_b8[2]" (identifier "local_b8") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar13 = param_1[2];" (assignment_expression "iVar13 = param_1[2]" (identifier "iVar13") (= "=") (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 "iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16;" (assignment_expression "iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16" (identifier "iVar12") (= "=") (binary_expression "(uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16" (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 "iVar16"))) (; ";")) (expression_statement "local_b8[2] = iVar12;" (assignment_expression "local_b8[2] = iVar12" (subscript_expression "local_b8[2]" (identifier "local_b8") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar12")) (; ";")) (expression_statement "uVar18 = *(undefined4 *)(*param_1 + 0x48);" (assignment_expression "uVar18 = *(undefined4 *)(*param_1 + 0x48)" (identifier "uVar18") (= "=") (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_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13);" (call_expression "FUN_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13)" (identifier "FUN_0015fd00") (argument_list "(iVar12,uVar17,iVar13 >> 0x1f,iVar13)" (( "(") (identifier "iVar12") (, ",") (identifier "uVar17") (, ",") (binary_expression "iVar13 >> 0x1f" (identifier "iVar13") (>> ">>") (number_literal "0x1f")) (, ",") (identifier "iVar13") () ")"))) (; ";")) (expression_statement "FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13);" (call_expression "FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13)" (identifier "FUN_0015fd00") (argument_list "(iVar16,iVar20,iVar13 >> 0x1f,iVar13)" (( "(") (identifier "iVar16") (, ",") (identifier "iVar20") (, ",") (binary_expression "iVar13 >> 0x1f" (identifier "iVar13") (>> ">>") (number_literal "0x1f")) (, ",") (identifier "iVar13") () ")"))) (; ";")) (expression_statement "piVar15 = param_1;" (assignment_expression "piVar15 = param_1" (identifier "piVar15") (= "=") (identifier "param_1")) (; ";")) (expression_statement "FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18);" (call_expression "FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18)" (identifier "FUN_00157b8c") (argument_list "(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_b8" (& "&") (identifier "local_b8")) (, ",") (binary_expression "(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[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 "piVar3[5]" (identifier "piVar3") ([ "[") (number_literal "5") (] "]"))) (, ",") (identifier "uVar18") () ")"))) (; ";")) (expression_statement "iVar13 = *param_1;" (assignment_expression "iVar13 = *param_1" (identifier "iVar13") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" (identifier "iVar12") (= "=") (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 "iVar13 = *(int *)(iVar13 + 0x4c);" (assignment_expression "iVar13 = *(int *)(iVar13 + 0x4c)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(iVar13 + 0x4c)" (* "*") (cast_expression "(int *)(iVar13 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x4c)" (( "(") (binary_expression "iVar13 + 0x4c" (identifier "iVar13") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (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 (piVar3 = local_90[0], iVar12 == 0) {\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }\n  }" (while "while") (parenthesized_expression "(piVar3 = local_90[0], iVar12 == 0)" (( "(") (comma_expression "piVar3 = local_90[0], iVar12 == 0" (assignment_expression "piVar3 = local_90[0]" (identifier "piVar3") (= "=") (subscript_expression "local_90[0]" (identifier "local_90") ([ "[") (number_literal "0") (] "]"))) (, ",") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n    while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }\n  }" ({ "{") (while_statement "while( true ) {\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }\n      piVar15 = param_1;\n      FUN_00156cac(param_1,local_90,iVar20);\n      iVar20 = iVar20 + 1;\n      iVar12 = param_1[9];\n      if (iVar12 != 0) break;\n      piVar15 = param_1;\n      FUN_00157888(param_1,iVar20);\n      piVar3 = local_90[0];\n      if (param_1[9] != 0) goto LAB_00157ea0;\n    }" ({ "{") (if_statement "if (local_90[0][iVar20 * 3 + 7] < iVar13) {\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\n      }" (if "if") (parenthesized_expression "(local_90[0][iVar20 * 3 + 7] < iVar13)" (( "(") (binary_expression "local_90[0][iVar20 * 3 + 7] < iVar13" (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 "iVar13")) () ")")) (compound_statement "{\n        local_b8 = local_90[0];\n        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);\n        piVar15 = param_1;\n        piVar3 = local_b8;\n        goto LAB_00157ea0;\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 "(*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);" (call_expression "(*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0)" (parenthesized_expression "(*(code *)(PTR_LAB_00190bb0 + -0x5abc))" (( "(") (pointer_expression "*(code *)(PTR_LAB_00190bb0 + -0x5abc)" (* "*") (cast_expression "(code *)(PTR_LAB_00190bb0 + -0x5abc)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190bb0 + -0x5abc)" (( "(") (binary_expression "PTR_LAB_00190bb0 + -0x5abc" (identifier "PTR_LAB_00190bb0") (+ "+") (number_literal "-0x5abc")) () ")")))) () ")")) (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 "piVar15 = param_1;" (assignment_expression "piVar15 = param_1" (identifier "piVar15") (= "=") (identifier "param_1")) (; ";")) (expression_statement "piVar3 = local_b8;" (assignment_expression "piVar3 = local_b8" (identifier "piVar3") (= "=") (identifier "local_b8")) (; ";")) (goto_statement "goto LAB_00157ea0;" (goto "goto") (statement_identifier "LAB_00157ea0") (; ";")) (} "}"))) (expression_statement "piVar15 = param_1;" (assignment_expression "piVar15 = param_1" (identifier "piVar15") (= "=") (identifier "param_1")) (; ";")) (expression_statement "FUN_00156cac(param_1,local_90,iVar20);" (call_expression "FUN_00156cac(param_1,local_90,iVar20)" (identifier "FUN_00156cac") (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 "iVar12 = param_1[9];" (assignment_expression "iVar12 = param_1[9]" (identifier "iVar12") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (if_statement "if (iVar12 != 0) break;" (if "if") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "piVar15 = param_1;" (assignment_expression "piVar15 = param_1" (identifier "piVar15") (= "=") (identifier "param_1")) (; ";")) (expression_statement "FUN_00157888(param_1,iVar20);" (call_expression "FUN_00157888(param_1,iVar20)" (identifier "FUN_00157888") (argument_list "(param_1,iVar20)" (( "(") (identifier "param_1") (, ",") (identifier "iVar20") () ")"))) (; ";")) (expression_statement "piVar3 = local_90[0];" (assignment_expression "piVar3 = local_90[0]" (identifier "piVar3") (= "=") (subscript_expression "local_90[0]" (identifier "local_90") ([ "[") (number_literal "0") (] "]"))) (; ";")) (if_statement "if (param_1[9] != 0) goto LAB_00157ea0;" (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_00157ea0;" (goto "goto") (statement_identifier "LAB_00157ea0") (; ";"))) (} "}"))) (} "}"))) (labeled_statement "LAB_00157ea0:\n  local_b8 = piVar3;" (statement_identifier "LAB_00157ea0") (: ":") (expression_statement "local_b8 = piVar3;" (assignment_expression "local_b8 = piVar3" (identifier "local_b8") (= "=") (identifier "piVar3")) (; ";"))) (if_statement "if ((local_b8 != (int *)0x0) && (iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1)) {\n    piVar15 = local_b8;\n    (*(code *)(PTR_LAB_00190ba4 + 0x380c))();\n  }" (if "if") (parenthesized_expression "((local_b8 != (int *)0x0) && (iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1))" (( "(") (binary_expression "(local_b8 != (int *)0x0) && (iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -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 "(iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1)" (( "(") (comma_expression "iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1" (assignment_expression "iVar12 = *local_b8" (identifier "iVar12") (= "=") (pointer_expression "*local_b8" (* "*") (identifier "local_b8"))) (, ",") (comma_expression "*local_b8 = iVar12 + -1, iVar12 + -1 < 1" (assignment_expression "*local_b8 = iVar12 + -1" (pointer_expression "*local_b8" (* "*") (identifier "local_b8")) (= "=") (binary_expression "iVar12 + -1" (identifier "iVar12") (+ "+") (number_literal "-1"))) (, ",") (binary_expression "iVar12 + -1 < 1" (binary_expression "iVar12 + -1" (identifier "iVar12") (+ "+") (number_literal "-1")) (< "<") (number_literal "1")))) () ")"))) () ")")) (compound_statement "{\n    piVar15 = local_b8;\n    (*(code *)(PTR_LAB_00190ba4 + 0x380c))();\n  }" ({ "{") (expression_statement "piVar15 = local_b8;" (assignment_expression "piVar15 = local_b8" (identifier "piVar15") (= "=") (identifier "local_b8")) (; ";")) (expression_statement "(*(code *)(PTR_LAB_00190ba4 + 0x380c))();" (call_expression "(*(code *)(PTR_LAB_00190ba4 + 0x380c))()" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba4 + 0x380c))" (( "(") (pointer_expression "*(code *)(PTR_LAB_00190ba4 + 0x380c)" (* "*") (cast_expression "(code *)(PTR_LAB_00190ba4 + 0x380c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190ba4 + 0x380c)" (( "(") (binary_expression "PTR_LAB_00190ba4 + 0x380c" (identifier "PTR_LAB_00190ba4") (+ "+") (number_literal "0x380c")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_2c == *(int *)puVar24) {\n    return *(int *)puVar24;\n  }" (if "if") (parenthesized_expression "(local_2c == *(int *)puVar24)" (( "(") (binary_expression "local_2c == *(int *)puVar24" (identifier "local_2c") (== "==") (pointer_expression "*(int *)puVar24" (* "*") (cast_expression "(int *)puVar24" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar24")))) () ")")) (compound_statement "{\n    return *(int *)puVar24;\n  }" ({ "{") (return_statement "return *(int *)puVar24;" (return "return") (pointer_expression "*(int *)puVar24" (* "*") (cast_expression "(int *)puVar24" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar24"))) (; ";")) (} "}"))) (expression_statement "puVar24 = PTR___stack_chk_fail_00190df8;" (assignment_expression "puVar24 = PTR___stack_chk_fail_00190df8" (identifier "puVar24") (= "=") (identifier "PTR___stack_chk_fail_00190df8")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_00190df8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00190df8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00190df8)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_00190df8" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_00190df8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_00190df8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar19 = *(undefined4 *)(*(int *)*piVar15 + 0x2c);" (assignment_expression "uVar19 = *(undefined4 *)(*(int *)*piVar15 + 0x2c)" (identifier "uVar19") (= "=") (pointer_expression "*(undefined4 *)(*(int *)*piVar15 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(*(int *)*piVar15 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)*piVar15 + 0x2c)" (( "(") (binary_expression "*(int *)*piVar15 + 0x2c" (pointer_expression "*(int *)*piVar15" (* "*") (cast_expression "(int *)*piVar15" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar15" (* "*") (identifier "piVar15")))) (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "uVar18 = *(undefined4 *)(*(int *)*piVar15 + 0x28);" (assignment_expression "uVar18 = *(undefined4 *)(*(int *)*piVar15 + 0x28)" (identifier "uVar18") (= "=") (pointer_expression "*(undefined4 *)(*(int *)*piVar15 + 0x28)" (* "*") (cast_expression "(undefined4 *)(*(int *)*piVar15 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)*piVar15 + 0x28)" (( "(") (binary_expression "*(int *)*piVar15 + 0x28" (pointer_expression "*(int *)*piVar15" (* "*") (cast_expression "(int *)*piVar15" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar15" (* "*") (identifier "piVar15")))) (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (piVar15[2] != 0) {\n    iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))();\n    piVar15[2] = 0;\n    if (iVar12 != 0) {\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }\n  }" (if "if") (parenthesized_expression "(piVar15[2] != 0)" (( "(") (binary_expression "piVar15[2] != 0" (subscript_expression "piVar15[2]" (identifier "piVar15") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))();\n    piVar15[2] = 0;\n    if (iVar12 != 0) {\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }\n  }" ({ "{") (expression_statement "iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))();" (assignment_expression "iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))()" (identifier "iVar12") (= "=") (call_expression "(*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))()" (parenthesized_expression "(*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))" (( "(") (pointer_expression "*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8)" (* "*") (cast_expression "(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar24 + 0x384d4) + -0x62b8)" (( "(") (binary_expression "*(int *)(puVar24 + 0x384d4) + -0x62b8" (pointer_expression "*(int *)(puVar24 + 0x384d4)" (* "*") (cast_expression "(int *)(puVar24 + 0x384d4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x384d4)" (( "(") (binary_expression "puVar24 + 0x384d4" (identifier "puVar24") (+ "+") (number_literal "0x384d4")) () ")")))) (+ "+") (number_literal "-0x62b8")) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar15[2] = 0;" (assignment_expression "piVar15[2] = 0" (subscript_expression "piVar15[2]" (identifier "piVar15") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar12 != 0) {\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }" (if "if") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar13 = *(int *)*piVar15;\n      iVar16 = *(int *)(iVar13 + 0xc);\n      iVar20 = *(int *)(puVar24 + 0x3826c);\n      goto joined_r0x001587e4;\n    }" ({ "{") (expression_statement "iVar13 = *(int *)*piVar15;" (assignment_expression "iVar13 = *(int *)*piVar15" (identifier "iVar13") (= "=") (pointer_expression "*(int *)*piVar15" (* "*") (cast_expression "(int *)*piVar15" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar15" (* "*") (identifier "piVar15"))))) (; ";")) (expression_statement "iVar16 = *(int *)(iVar13 + 0xc);" (assignment_expression "iVar16 = *(int *)(iVar13 + 0xc)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(iVar13 + 0xc)" (* "*") (cast_expression "(int *)(iVar13 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0xc)" (( "(") (binary_expression "iVar13 + 0xc" (identifier "iVar13") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "iVar20 = *(int *)(puVar24 + 0x3826c);" (assignment_expression "iVar20 = *(int *)(puVar24 + 0x3826c)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)(puVar24 + 0x3826c)" (* "*") (cast_expression "(int *)(puVar24 + 0x3826c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x3826c)" (( "(") (binary_expression "puVar24 + 0x3826c" (identifier "puVar24") (+ "+") (number_literal "0x3826c")) () ")"))))) (; ";")) (goto_statement "goto joined_r0x001587e4;" (goto "goto") (statement_identifier "joined_r0x001587e4") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar13 = piVar15[1];" (assignment_expression "iVar13 = piVar15[1]" (identifier "iVar13") (= "=") (subscript_expression "piVar15[1]" (identifier "piVar15") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (*(int *)(iVar13 + 0x10) != 0) {\n    *(undefined4 *)(iVar13 + 0x10) = 0;\n    FUN_00157d5c(iVar13);\n  }" (if "if") (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    *(undefined4 *)(iVar13 + 0x10) = 0;\n    FUN_00157d5c(iVar13);\n  }" ({ "{") (expression_statement "*(undefined4 *)(iVar13 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(iVar13 + 0x10) = 0" (pointer_expression "*(undefined4 *)(iVar13 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x10)" (( "(") (binary_expression "iVar13 + 0x10" (identifier "iVar13") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00157d5c(iVar13);" (call_expression "FUN_00157d5c(iVar13)" (identifier "FUN_00157d5c") (argument_list "(iVar13)" (( "(") (identifier "iVar13") () ")"))) (; ";")) (} "}"))) (expression_statement "pcVar25 = *(code **)(puVar24 + 0x38578);" (assignment_expression "pcVar25 = *(code **)(puVar24 + 0x38578)" (identifier "pcVar25") (= "=") (pointer_expression "*(code **)(puVar24 + 0x38578)" (* "*") (cast_expression "(code **)(puVar24 + 0x38578)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x38578)" (( "(") (binary_expression "puVar24 + 0x38578" (identifier "puVar24") (+ "+") (number_literal "0x38578")) () ")"))))) (; ";")) (if_statement "if (*(int *)(iVar13 + 0x28) != 0) {\n    *(undefined4 *)(iVar13 + 0x28) = 0;\n    (*pcVar25)();\n  }" (if "if") (parenthesized_expression "(*(int *)(iVar13 + 0x28) != 0)" (( "(") (binary_expression "*(int *)(iVar13 + 0x28) != 0" (pointer_expression "*(int *)(iVar13 + 0x28)" (* "*") (cast_expression "(int *)(iVar13 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x28)" (( "(") (binary_expression "iVar13 + 0x28" (identifier "iVar13") (+ "+") (number_literal "0x28")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *(undefined4 *)(iVar13 + 0x28) = 0;\n    (*pcVar25)();\n  }" ({ "{") (expression_statement "*(undefined4 *)(iVar13 + 0x28) = 0;" (assignment_expression "*(undefined4 *)(iVar13 + 0x28) = 0" (pointer_expression "*(undefined4 *)(iVar13 + 0x28)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x28)" (( "(") (binary_expression "iVar13 + 0x28" (identifier "iVar13") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "(*pcVar25)();" (call_expression "(*pcVar25)()" (parenthesized_expression "(*pcVar25)" (( "(") (pointer_expression "*pcVar25" (* "*") (identifier "pcVar25")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar12 = *(int *)(iVar13 + 0x24);" (assignment_expression "iVar12 = *(int *)(iVar13 + 0x24)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(iVar13 + 0x24)" (* "*") (cast_expression "(int *)(iVar13 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x24)" (( "(") (binary_expression "iVar13 + 0x24" (identifier "iVar13") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar13 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(iVar13 + 0x24) = 0" (pointer_expression "*(undefined4 *)(iVar13 + 0x24)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x24)" (( "(") (binary_expression "iVar13 + 0x24" (identifier "iVar13") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar13 = *(int *)*piVar15;" (assignment_expression "iVar13 = *(int *)*piVar15" (identifier "iVar13") (= "=") (pointer_expression "*(int *)*piVar15" (* "*") (cast_expression "(int *)*piVar15" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar15" (* "*") (identifier "piVar15"))))) (; ";")) (expression_statement "iVar16 = *(int *)(iVar13 + 0xc);" (assignment_expression "iVar16 = *(int *)(iVar13 + 0xc)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(iVar13 + 0xc)" (* "*") (cast_expression "(int *)(iVar13 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0xc)" (( "(") (binary_expression "iVar13 + 0xc" (identifier "iVar13") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "iVar20 = *(int *)(puVar24 + 0x3826c);" (assignment_expression "iVar20 = *(int *)(puVar24 + 0x3826c)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)(puVar24 + 0x3826c)" (* "*") (cast_expression "(int *)(puVar24 + 0x3826c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x3826c)" (( "(") (binary_expression "puVar24 + 0x3826c" (identifier "puVar24") (+ "+") (number_literal "0x3826c")) () ")"))))) (; ";")) (labeled_statement "joined_r0x001587e4:\n  if (iVar16 == 0) {\n    *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n    *(undefined4 *)(iVar13 + 0x28) = uVar18;\n    return iVar12;\n  }" (statement_identifier "joined_r0x001587e4") (: ":") (if_statement "if (iVar16 == 0) {\n    *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n    *(undefined4 *)(iVar13 + 0x28) = uVar18;\n    return iVar12;\n  }" (if "if") (parenthesized_expression "(iVar16 == 0)" (( "(") (binary_expression "iVar16 == 0" (identifier "iVar16") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(undefined4 *)(iVar13 + 0x2c) = uVar19;\n    *(undefined4 *)(iVar13 + 0x28) = uVar18;\n    return iVar12;\n  }" ({ "{") (expression_statement "*(undefined4 *)(iVar13 + 0x2c) = uVar19;" (assignment_expression "*(undefined4 *)(iVar13 + 0x2c) = uVar19" (pointer_expression "*(undefined4 *)(iVar13 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x2c)" (( "(") (binary_expression "iVar13 + 0x2c" (identifier "iVar13") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (identifier "uVar19")) (; ";")) (expression_statement "*(undefined4 *)(iVar13 + 0x28) = uVar18;" (assignment_expression "*(undefined4 *)(iVar13 + 0x28) = uVar18" (pointer_expression "*(undefined4 *)(iVar13 + 0x28)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x28)" (( "(") (binary_expression "iVar13 + 0x28" (identifier "iVar13") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "uVar18")) (; ";")) (return_statement "return iVar12;" (return "return") (identifier "iVar12") (; ";")) (} "}")))) (expression_statement "(**(code **)(iVar20 + -0xb1c))();" (call_expression "(**(code **)(iVar20 + -0xb1c))()" (parenthesized_expression "(**(code **)(iVar20 + -0xb1c))" (( "(") (pointer_expression "**(code **)(iVar20 + -0xb1c)" (* "*") (pointer_expression "*(code **)(iVar20 + -0xb1c)" (* "*") (cast_expression "(code **)(iVar20 + -0xb1c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar20 + -0xb1c)" (( "(") (binary_expression "iVar20 + -0xb1c" (identifier "iVar20") (+ "+") (number_literal "-0xb1c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(iVar13 + 0x2c) = uVar19;" (assignment_expression "*(undefined4 *)(iVar13 + 0x2c) = uVar19" (pointer_expression "*(undefined4 *)(iVar13 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x2c)" (( "(") (binary_expression "iVar13 + 0x2c" (identifier "iVar13") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (identifier "uVar19")) (; ";")) (expression_statement "*(undefined4 *)(iVar13 + 0x28) = uVar18;" (assignment_expression "*(undefined4 *)(iVar13 + 0x28) = uVar18" (pointer_expression "*(undefined4 *)(iVar13 + 0x28)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x28)" (( "(") (binary_expression "iVar13 + 0x28" (identifier "iVar13") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "uVar18")) (; ";")) (if_statement "if (*(int *)(iVar13 + 0xc) != 0) {\n    (**(code **)(iVar20 + -0xb14))();\n  }" (if "if") (parenthesized_expression "(*(int *)(iVar13 + 0xc) != 0)" (( "(") (binary_expression "*(int *)(iVar13 + 0xc) != 0" (pointer_expression "*(int *)(iVar13 + 0xc)" (* "*") (cast_expression "(int *)(iVar13 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0xc)" (( "(") (binary_expression "iVar13 + 0xc" (identifier "iVar13") (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    (**(code **)(iVar20 + -0xb14))();\n  }" ({ "{") (expression_statement "(**(code **)(iVar20 + -0xb14))();" (call_expression "(**(code **)(iVar20 + -0xb14))()" (parenthesized_expression "(**(code **)(iVar20 + -0xb14))" (( "(") (pointer_expression "**(code **)(iVar20 + -0xb14)" (* "*") (pointer_expression "*(code **)(iVar20 + -0xb14)" (* "*") (cast_expression "(code **)(iVar20 + -0xb14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar20 + -0xb14)" (( "(") (binary_expression "iVar20 + -0xb14" (identifier "iVar20") (+ "+") (number_literal "-0xb14")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return iVar12;" (return "return") (identifier "iVar12") (; ";")) (} "}")))

void function_1(type_1 *p)

{
  bool bVar1;
  type_2 *puVar2;
  char *pcVar3;
  type_3 *var_20;
  type_4 *pFVar5;
  int var_36;
  int var_15;
  type_5 *pFVar8;
  int var_8;
  int var_16;
  int var_22;
  type_6 *var_26;
  int var_11;
  int var_18;
  int var_23;
  int var_25;
  type_7 *pFVar17;
  type_8 *pFVar18;
  int var_32;
  int var_33;
  int var_19;
  type_9 *psVar20;
  type_1 *pFVar21;
  type_10 *var_38;
  type_11 var_13;
  type_1 *pFVar24;
  int var_3;
  type_12 uVar26;
  int var_4;
  type_3 *var_24;
  type_12 uVar29;
  int var_7;
  int var_5;
  int var_21;
  int var_10;
  type_13 *var_37;
  type_13 *pcVar35;
  type_14 *var_2;
  int var_14;
  type_11 var_12;
  type_4 *var_35;
  int var_29;
  char *zTerm;
  type_3 *var_9;
  int var_6;
  int bDummy;
  int var_17;
  type_15 dummy;
  type_16 iDelta;
  type_17 writer;
  
  puVar2 = PTR___stack_chk_guard_00190e24;
  var_2 = &_gp;
  pFVar21 = (type_1 *)&p->var_35;
  var_29 = 0;
  pFVar17 = p->pHash;
  var_36 = *(int *)PTR___stack_chk_guard_00190e24;
  var_35 = var_1(p);
  if (p->rc == 0) {
    if (1999 < var_35->nSegment) {
      p->rc = 0xd;
      goto LAB_00157de0;
    }
    var_3 = (*(type_13 *)(*(int *)(var_2 + -0x7d7c) + 0x3b44))(var_35);
    (*(type_13 *)(*(int *)(var_2 + -0x7d7c) + 0x3894))();
    if (var_3 == 0) {
LAB_0015817c:
      var_15 = p->rc;
    }
    else {
      var_7 = p->pConfig->pgsz;
      var_15 = p->pConfig->eDetail;
      (*(type_13 *)(*(int *)(var_2 + -0x7cbc) + 0xf64))(p,&writer,var_3);
      if (p->rc == 0) {
        var_4 = (*(type_13 *)(*(int *)(var_2 + -0x7d68) + 0x71a8))(pFVar17,0,0,&pFVar17->pScan);
        p->rc = var_4;
        if ((var_4 != 0) ||
           (var_4 = *(int *)(var_2 + -0x7d7c), pFVar17->pScan == (type_6 *)0x0))
        goto LAB_00158078;
        var_5 = *(int *)(var_2 + -0x7d70);
        var_8 = *(int *)(var_2 + -0x7de0);
        var_16 = *(int *)(var_2 + -0x7d70);
        var_22 = *(int *)(var_2 + -0x7d7c);
        do {
          (*(type_13 *)(var_4 + 0x76a8))(pFVar17,&zTerm,&var_9,&var_6);
          pcVar3 = zTerm;
          uVar26 = (**(type_13 **)(var_2 + -0x7ba0))(zTerm);
          (*(type_13 *)(var_5 + -0x5434))(p,&writer,uVar26,pcVar3);
          if (p->rc != 0) goto LAB_00158078;
          if (writer.writer.buf.n + writer.writer.pgidx.n + var_6 < var_7) {
            (**(type_13 **)(var_2 + -0x7af4))(writer.writer.buf.p + writer.writer.buf.n,var_9);
            writer.writer.buf.n = writer.writer.buf.n + var_6;
            if (p->rc != 0) goto LAB_00158078;
          }
          else {
            var_14 = 0;
            var_12 = 0;
            iDelta._0_4_ = 0;
            var_10 = 0;
            iDelta._4_4_ = 0;
            bVar1 = 0 < var_6;
            while (bVar1) {
              var_11 = (*(type_13 *)(var_8 + -0x80))(var_9 + var_10,&iDelta);
              var_11 = var_10 + var_11;
              var_13 = var_12 + iDelta._4_4_;
              var_14 = (type_11)(var_13 < var_12) + var_14 + iDelta._0_4_;
              if (writer.bFirstRowidInPage == '\0') {
                if (iDelta._0_4_ == 0) {
                  var_10 = *(int *)(var_2 + -0x7d78);
                  if (0x7f < iDelta._4_4_) goto LAB_0015847c;
                  writer.writer.buf.p[writer.writer.buf.n] = (type_3)iDelta._4_4_;
                  var_10 = 1;
                }
                else {
                  var_10 = *(int *)(var_2 + -0x7d78);
LAB_0015847c:
                  var_10 = (*(type_13 *)(var_10 + 0x3284))();
                }
                writer.writer.buf.n = writer.writer.buf.n + var_10;
                if (var_15 != 1) {
                  var_10 = *(int *)(var_2 + -0x7d7c);
                  goto LAB_001584ac;
                }
LAB_001583dc:
                var_10 = var_11;
                var_19 = writer.writer.buf.n;
                if ((var_11 < var_6) && (var_9[var_11] == '\0')) {
                  var_19 = writer.writer.buf.n + 1;
                  var_10 = var_11 + 1;
                  writer.writer.buf.p[writer.writer.buf.n] = '\0';
                  if ((var_10 < var_6) && (var_9[var_10] == '\0')) {
                    var_10 = var_11 + 2;
                    writer.writer.buf.p[var_19] = '\0';
                    var_19 = writer.writer.buf.n + 2;
                  }
                }
                writer.writer.buf.n = var_19;
                if (var_7 <= writer.writer.buf.n + writer.writer.pgidx.n) {
                  (*(type_13 *)(var_16 + -0x5df0))(p,&writer);
                }
                var_18 = p->rc;
              }
              else {
                writer.writer.buf.p[1] = (type_3)writer.writer.buf.n;
                *writer.writer.buf.p = (type_3)((type_11)writer.writer.buf.n >> 8);
                if (var_14 == 0) {
                  var_10 = *(int *)(var_2 + -0x7d78);
                  if (0x7f < var_13) goto LAB_0015837c;
                  writer.writer.buf.p[writer.writer.buf.n] = (type_3)var_13;
                  var_10 = 1;
                }
                else {
                  var_10 = *(int *)(var_2 + -0x7d78);
LAB_0015837c:
                  var_10 = (*(type_13 *)(var_10 + 0x3284))
                                     (writer.writer.buf.p + writer.writer.buf.n,var_14,var_14,
                                      var_13);
                }
                writer.writer.buf.n = writer.writer.buf.n + var_10;
                writer.bFirstRowidInPage = '\0';
                (*(type_13 *)(*(int *)(var_2 + -0x7d70) + -0x6158))(p,&writer,var_14,var_13);
                if (p->rc != 0) goto LAB_00158078;
                var_10 = *(int *)(var_2 + -0x7d7c);
                if (var_15 == 1) goto LAB_001583dc;
LAB_001584ac:
                var_10 = (*(type_13 *)(var_10 + 0x61f0))(var_9 + var_11,&var_17,&bDummy);
                var_20 = var_9;
                var_10 = var_10 + var_17;
                if (var_7 < writer.writer.buf.n + writer.writer.pgidx.n + var_10) {
                  var_19 = 0;
                  do {
                    var_18 = p->rc;
                    if (var_18 != 0) goto LAB_00158518;
                    var_21 = var_10 - var_19;
                    var_24 = var_20 + var_19 + var_11;
                    var_18 = (var_7 - writer.writer.buf.n) - writer.writer.pgidx.n;
                    if (var_18 < var_21) {
                      var_23 = (*(type_13 *)(var_22 + 0x610c))(var_24,&dummy);
                      var_21 = var_23;
                      if (var_23 < var_18) {
                        do {
                          var_23 = var_21;
                          var_25 = (*(type_13 *)(var_22 + 0x610c))(var_24 + var_23,&dummy);
                          var_21 = var_23 + var_25;
                        } while (var_23 + var_25 <= var_18);
                      }
                      var_19 = var_19 + var_23;
                      (**(type_13 **)(var_2 + -0x7af4))
                                (writer.writer.buf.p + writer.writer.buf.n,var_24,var_23);
                      writer.writer.buf.n = var_23 + writer.writer.buf.n;
                      if (var_7 <= writer.writer.buf.n + writer.writer.pgidx.n) goto LAB_00158574;
                    }
                    else {
                      (**(type_13 **)(var_2 + -0x7af4))
                                (writer.writer.buf.p + writer.writer.buf.n,var_24,var_21);
                      writer.writer.buf.n = var_21 + writer.writer.buf.n;
                      var_19 = var_10;
                      if (writer.writer.buf.n + writer.writer.pgidx.n < var_7) break;
LAB_00158574:
                      (*(type_13 *)(var_16 + -0x5df0))(p,&writer);
                    }
                  } while (var_19 < var_10);
                  var_18 = p->rc;
                  var_10 = var_11 + var_10;
                }
                else {
                  (**(type_13 **)(var_2 + -0x7af4))
                            (writer.writer.buf.p + writer.writer.buf.n,var_9 + var_11,var_10);
                  var_18 = p->rc;
                  writer.writer.buf.n = writer.writer.buf.n + var_10;
LAB_00158518:
                  var_10 = var_11 + var_10;
                }
              }
              if (var_18 != 0) goto LAB_00158078;
              bVar1 = var_10 < var_6;
              var_12 = var_13;
            }
          }
          var_26 = pFVar17->pScan->pScanNext;
          pFVar17->pScan = var_26;
          var_10 = *(int *)(var_2 + -0x7d78);
        } while ((p->rc == 0) && (var_26 != (type_6 *)0x0));
      }
      else {
LAB_00158078:
        var_10 = *(int *)(var_2 + -0x7d78);
      }
      pFVar24 = (type_1 *)&p->rc;
      (*(type_13 *)(var_10 + 0xe8))(pFVar17);
      pFVar21 = p;
      (*(type_13 *)(*(int *)(var_2 + -0x7d70) + -0x5098))(p,&writer,&var_29);
      if (var_35->nLevel == 0) {
        var_15 = p->rc;
        if (var_15 == 0) {
          pFVar21 = pFVar24;
          (*(type_13 *)(*(int *)(var_2 + -0x7cf4) + -0x1080))(pFVar24,&var_35);
          goto LAB_001580dc;
        }
      }
      else {
LAB_001580dc:
        var_15 = p->rc;
        if (var_15 == 0) {
          var_27((int *)pFVar24,var_35,0,0,(int)var_2);
          var_15 = p->rc;
          pFVar21 = pFVar24;
          if (var_15 == 0) {
            pFVar21 = (type_1 *)var_35->aLevel[0].nSeg;
            var_35->aLevel[0].nSeg = (int)((int)&pFVar21->pConfig + 1);
            pFVar8 = var_35->aLevel[0].aSeg + (int)pFVar21;
            pFVar8->iSegid = var_3;
            pFVar8->pgnoFirst = 1;
            pFVar8->var_29 = var_29;
            var_35->nSegment = var_35->nSegment + 1;
            var_15 = p->rc;
            if (var_15 == 0) {
              pFVar21 = p;
              var_28(p,0,var_35);
              goto LAB_0015817c;
            }
          }
        }
      }
    }
  }
  else {
LAB_00157de0:
    (*(type_13 *)(*(int *)(var_2 + -0x7d7c) + 0x3894))();
    var_15 = p->rc;
  }
  pFVar5 = var_35;
  pFVar18 = p->pConfig;
  if ((var_15 == 0) && (pFVar21 = (type_1 *)pFVar18->nAutomerge, 0 < (int)pFVar21)) {
    var_7 = (int)var_35->nWriteCounter;
    var_4 = *(int *)&var_35->nWriteCounter;
    var_15 = p->nWorkUnit;
    var_13 = var_29 + var_7;
    *(type_11 *)((int)&var_35->nWriteCounter + 4) = var_13;
    var_3 = (type_11)(var_13 < (type_11)var_29) + (var_29 >> 0x1f) + var_4;
    *(int *)&var_35->nWriteCounter = var_3;
    var_5 = p->pConfig->nAutomerge;
    var_30(var_3,var_13,var_15 >> 0x1f,var_15);
    var_30(var_4,var_7,var_15 >> 0x1f,var_15);
    pFVar21 = p;
    var_31(p,&var_35,(var_32 - var_33) * p->nWorkUnit * pFVar5->nLevel,var_5)
    ;
    pFVar18 = p->pConfig;
    var_15 = p->rc;
  }
  var_7 = 0;
  var_3 = pFVar18->nCrisisMerge;
  writer.iSegid = (int)var_35;
  while (pFVar5 = (type_4 *)writer.iSegid, var_15 == 0) {
    while( true ) {
      if (*(int *)(writer.iSegid + var_7 * 0xc + 0x1c) < var_3) {
        var_35 = (type_4 *)writer.iSegid;
        (*(type_13 *)(*(int *)(var_2 + -0x7d70) + -0x5abc))(p,writer.iSegid);
        pFVar21 = p;
        pFVar5 = var_35;
        goto LAB_00157ea0;
      }
      pFVar21 = p;
      var_34(p,(type_4 **)&writer,var_7,(int *)0x0);
      var_7 = var_7 + 1;
      var_15 = p->rc;
      if (var_15 != 0) break;
      pFVar21 = p;
      var_28(p,var_7,(type_4 *)writer.iSegid);
      pFVar5 = (type_4 *)writer.iSegid;
      if (p->rc != 0) goto LAB_00157ea0;
    }
  }
LAB_00157ea0:
  var_35 = pFVar5;
  if ((var_35 != (type_4 *)0x0) &&
     (var_3 = var_35->nRef + -1, var_35->nRef = var_3, var_3 < 1)) {
    pFVar21 = (type_1 *)var_35;
    (*(type_13 *)(*(int *)(var_2 + -0x7d7c) + 0x380c))();
  }
  if (var_36 == *(int *)puVar2) {
    return;
  }
  var_37 = *(type_13 **)(var_2 + -0x7b28);
  (*var_37)();
  psVar20 = pFVar21->pConfig->db;
  uVar29 = (type_12)psVar20->lastRowid;
  uVar26 = *(type_12 *)&psVar20->lastRowid;
  if (pFVar21->nWorkUnit != 0) {
    var_36 = (*(type_13 *)(*(int *)(var_37 + 0x384d4) + -0x62b8))();
    pFVar21->nWorkUnit = 0;
    if (var_36 != 0) {
      psVar20 = pFVar21->pConfig->db;
      var_38 = psVar20->mutex;
      var_36 = *(int *)(var_37 + 0x3826c);
      goto joined_r0x001587e4;
    }
  }
  pFVar24 = (type_1 *)pFVar21->zDataTbl;
  if (pFVar24->nPendingData != 0) {
    pFVar24->nPendingData = 0;
    function_1(pFVar24);
  }
  pcVar35 = *(type_13 **)(var_37 + 0x38578);
  if (pFVar24->pReader != (type_18 *)0x0) {
    pFVar24->pReader = (type_18 *)0x0;
    (*pcVar35)();
  }
  pFVar24->rc = 0;
  psVar20 = pFVar21->pConfig->db;
  var_38 = psVar20->mutex;
  var_36 = *(int *)(var_37 + 0x3826c);
joined_r0x001587e4:
  if (var_38 == (type_10 *)0x0) {
    *(type_12 *)((int)&psVar20->lastRowid + 4) = uVar29;
    *(type_12 *)&psVar20->lastRowid = uVar26;
    return;
  }
  (**(type_13 **)(var_36 + -0xb1c))();
  var_38 = psVar20->mutex;
  *(type_12 *)((int)&psVar20->lastRowid + 4) = uVar29;
  *(type_12 *)&psVar20->lastRowid = uVar26;
  if (var_38 != (type_10 *)0x0) {
    (**(type_13 **)(var_36 + -0xb14))();
  }
  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: (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: (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: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) 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: (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: (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))))) 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: (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) (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: (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))))))))))) (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: (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) (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: (identifier) 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: (identifier) 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: (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: (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) (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: (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 (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))) right: (number_literal))))))) (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))) right: (number_literal))))))) (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: (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)))))) arguments: (argument_list)))) (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: (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: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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))))))) (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))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) 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: (identifier))) (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: (identifier))) (return_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))) (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: (identifier))) (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))) (return_statement (identifier)))))

int MASKED(int *param_1)

{
  bool bVar1;
  undefined *puVar2;
  int *piVar3;
  int iVar4;
  code *pcVar5;
  code *pcVar6;
  code *pcVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int extraout_v1;
  int extraout_v1_00;
  int iVar14;
  int *piVar15;
  int iVar16;
  uint uVar17;
  undefined4 uVar18;
  undefined4 uVar19;
  int iVar20;
  int iVar21;
  int iVar22;
  int iVar23;
  undefined *puVar24;
  code *pcVar25;
  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;
  
  puVar24 = PTR___stack_chk_guard_00190e24;
  piVar15 = param_1 + 0x14;
  local_b4 = 0;
  iVar12 = param_1[3];
  local_2c = *(int *)PTR___stack_chk_guard_00190e24;
  local_b8 = (int *)FUN_0013c448();
  if (param_1[9] == 0) {
    if (1999 < local_b8[4]) {
      param_1[9] = 0xd;
      goto LAB_00157de0;
    }
    iVar13 = (*(code *)(PTR_LAB_00190ba4 + 0x3b44))(local_b8);
    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();
    if (iVar13 == 0) {
LAB_0015817c:
      iVar12 = param_1[9];
    }
    else {
      iVar16 = *(int *)(*param_1 + 0x44);
      iVar20 = *(int *)(*param_1 + 0x30);
      (*(code *)(PTR_LAB_00190c64 + 0xf64))(param_1,local_90,iVar13);
      if (param_1[9] == 0) {
        iVar4 = (*(code *)(PTR_LAB_00190bb8 + 0x71a8))(iVar12,0,0,iVar12 + 0x10);
        param_1[9] = iVar4;
        puVar2 = PTR_LAB_00190b40;
        if ((iVar4 == 0) && (*(int *)(iVar12 + 0x10) != 0)) {
          pcVar25 = (code *)(PTR_LAB_00190ba4 + 0x76a8);
          pcVar5 = (code *)(PTR_LAB_00190bb0 + -0x5434);
          pcVar6 = (code *)(PTR_LAB_00190bb0 + -0x5df0);
          pcVar7 = (code *)(PTR_LAB_00190ba4 + 0x610c);
          while( true ) {
            (*pcVar25)(iVar12,&local_b0,&local_ac,&local_a8);
            uVar18 = local_b0;
            uVar19 = (*(code *)PTR_strlen_00190d80)(local_b0);
            (*pcVar5)(param_1,local_90,uVar19,uVar18);
            if (param_1[9] != 0) break;
            if (local_80 + local_74 + local_a8 < iVar16) {
              (*(code *)PTR_memcpy_00190e2c)(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;
              iVar4 = 0;
              local_94 = 0;
              bVar1 = 0 < local_a8;
              while (bVar1) {
                iVar8 = (*(code *)(puVar2 + -0x80))(local_ac + iVar4,&local_98);
                iVar8 = iVar4 + iVar8;
                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;
                    iVar4 = 1;
                  }
                  else {
                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))();
                  }
                  local_80 = local_80 + iVar4;
                  if (iVar20 != 1) goto LAB_001584ac;
LAB_001583dc:
                  iVar4 = iVar8;
                  iVar14 = local_80;
                  if ((iVar8 < local_a8) && (*(char *)(local_ac + iVar8) == '\0')) {
                    iVar14 = local_80 + 1;
                    iVar4 = iVar8 + 1;
                    local_84[local_80] = 0;
                    if ((iVar4 < local_a8) && (*(char *)(local_ac + iVar4) == '\0')) {
                      iVar4 = iVar8 + 2;
                      local_84[iVar14] = 0;
                      iVar14 = local_80 + 2;
                    }
                  }
                  local_80 = iVar14;
                  if (iVar16 <= local_80 + local_74) {
                    (*pcVar6)(param_1,local_90);
                  }
                  iVar9 = param_1[9];
                }
                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;
                    iVar4 = 1;
                  }
                  else {
                    iVar4 = (*(code *)(PTR_LAB_00190ba8 + 0x3284))
                                      (local_84 + local_80,local_fc,local_fc,uVar17);
                  }
                  local_80 = local_80 + iVar4;
                  local_57 = '\0';
                  (*(code *)(PTR_LAB_00190bb0 + -0x6158))(param_1,local_90,local_fc,uVar17);
                  if (param_1[9] != 0) goto LAB_00158080;
                  if (iVar20 == 1) goto LAB_001583dc;
LAB_001584ac:
                  iVar4 = (*(code *)(PTR_LAB_00190ba4 + 0x61f0))
                                    (local_ac + iVar8,&local_a0,auStack_a4);
                  iVar14 = local_ac;
                  iVar4 = iVar4 + local_a0;
                  if (iVar16 < local_80 + local_74 + iVar4) {
                    iVar22 = 0;
                    do {
                      iVar9 = param_1[9];
                      if (iVar9 != 0) goto LAB_00158518;
                      iVar23 = iVar4 - iVar22;
                      iVar9 = iVar14 + iVar22 + iVar8;
                      iVar21 = (iVar16 - local_80) - local_74;
                      if (iVar21 < iVar23) {
                        iVar10 = (*pcVar7)(iVar9,auStack_9c);
                        iVar23 = iVar10;
                        if (iVar10 < iVar21) {
                          do {
                            iVar10 = iVar23;
                            iVar11 = (*pcVar7)(iVar9 + iVar10,auStack_9c);
                            iVar23 = iVar10 + iVar11;
                          } while (iVar10 + iVar11 <= iVar21);
                        }
                        iVar22 = iVar22 + iVar10;
                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar10);
                        local_80 = iVar10 + local_80;
                        if (iVar16 <= local_80 + local_74) goto LAB_00158574;
                      }
                      else {
                        (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,iVar9,iVar23);
                        local_80 = iVar23 + local_80;
                        iVar22 = iVar4;
                        if (local_80 + local_74 < iVar16) break;
LAB_00158574:
                        (*pcVar6)(param_1,local_90);
                      }
                    } while (iVar22 < iVar4);
                    iVar9 = param_1[9];
                    iVar4 = iVar8 + iVar4;
                  }
                  else {
                    (*(code *)PTR_memcpy_00190e2c)(local_84 + local_80,local_ac + iVar8,iVar4);
                    iVar9 = param_1[9];
                    local_80 = local_80 + iVar4;
LAB_00158518:
                    iVar4 = iVar8 + iVar4;
                  }
                }
                if (iVar9 != 0) goto LAB_00158080;
                bVar1 = iVar4 < local_a8;
                local_f4 = uVar17;
              }
            }
            iVar4 = *(int *)(*(int *)(iVar12 + 0x10) + 4);
            *(int *)(iVar12 + 0x10) = iVar4;
            if ((param_1[9] != 0) || (iVar4 == 0)) break;
          }
        }
      }
LAB_00158080:
      piVar3 = param_1 + 9;
      (*(code *)(PTR_LAB_00190ba8 + 0xe8))(iVar12);
      piVar15 = param_1;
      (*(code *)(PTR_LAB_00190bb0 + -0x5098))(param_1,local_90,&local_b4);
      if (local_b8[5] == 0) {
        iVar12 = param_1[9];
        if (iVar12 == 0) {
          piVar15 = piVar3;
          (*(code *)(PTR_LAB_00190c2c + -0x1080))(piVar3,&local_b8);
          goto LAB_001580dc;
        }
      }
      else {
LAB_001580dc:
        iVar12 = param_1[9];
        if (iVar12 == 0) {
          FUN_00156b10(piVar3,local_b8,0,0);
          iVar12 = param_1[9];
          piVar15 = piVar3;
          if (iVar12 == 0) {
            piVar15 = (int *)local_b8[7];
            local_b8[7] = (int)piVar15 + 1;
            piVar3 = (int *)(local_b8[8] + (int)piVar15 * 0xc);
            *piVar3 = iVar13;
            piVar3[1] = 1;
            piVar3[2] = local_b4;
            local_b8[4] = local_b8[4] + 1;
            iVar12 = param_1[9];
            if (iVar12 == 0) {
              piVar15 = param_1;
              FUN_00157888(param_1,0,local_b8);
              goto LAB_0015817c;
            }
          }
        }
      }
    }
  }
  else {
LAB_00157de0:
    (*(code *)(PTR_LAB_00190ba4 + 0x3894))();
    iVar12 = param_1[9];
  }
  piVar3 = local_b8;
  iVar13 = *param_1;
  if ((iVar12 == 0) && (piVar15 = *(int **)(iVar13 + 0x48), 0 < (int)piVar15)) {
    iVar20 = local_b8[3];
    iVar16 = local_b8[2];
    iVar13 = param_1[2];
    uVar17 = local_b4 + iVar20;
    local_b8[3] = uVar17;
    iVar12 = (uint)(uVar17 < local_b4) + ((int)local_b4 >> 0x1f) + iVar16;
    local_b8[2] = iVar12;
    uVar18 = *(undefined4 *)(*param_1 + 0x48);
    FUN_0015fd00(iVar12,uVar17,iVar13 >> 0x1f,iVar13);
    FUN_0015fd00(iVar16,iVar20,iVar13 >> 0x1f,iVar13);
    piVar15 = param_1;
    FUN_00157b8c(param_1,&local_b8,(extraout_v1 - extraout_v1_00) * param_1[2] * piVar3[5],uVar18);
    iVar13 = *param_1;
    iVar12 = param_1[9];
  }
  iVar20 = 0;
  iVar13 = *(int *)(iVar13 + 0x4c);
  local_90[0] = local_b8;
  while (piVar3 = local_90[0], iVar12 == 0) {
    while( true ) {
      if (local_90[0][iVar20 * 3 + 7] < iVar13) {
        local_b8 = local_90[0];
        (*(code *)(PTR_LAB_00190bb0 + -0x5abc))(param_1,local_90[0],local_90[0],0);
        piVar15 = param_1;
        piVar3 = local_b8;
        goto LAB_00157ea0;
      }
      piVar15 = param_1;
      FUN_00156cac(param_1,local_90,iVar20);
      iVar20 = iVar20 + 1;
      iVar12 = param_1[9];
      if (iVar12 != 0) break;
      piVar15 = param_1;
      FUN_00157888(param_1,iVar20);
      piVar3 = local_90[0];
      if (param_1[9] != 0) goto LAB_00157ea0;
    }
  }
LAB_00157ea0:
  local_b8 = piVar3;
  if ((local_b8 != (int *)0x0) && (iVar12 = *local_b8, *local_b8 = iVar12 + -1, iVar12 + -1 < 1)) {
    piVar15 = local_b8;
    (*(code *)(PTR_LAB_00190ba4 + 0x380c))();
  }
  if (local_2c == *(int *)puVar24) {
    return *(int *)puVar24;
  }
  puVar24 = PTR___stack_chk_fail_00190df8;
  (*(code *)PTR___stack_chk_fail_00190df8)();
  uVar19 = *(undefined4 *)(*(int *)*piVar15 + 0x2c);
  uVar18 = *(undefined4 *)(*(int *)*piVar15 + 0x28);
  if (piVar15[2] != 0) {
    iVar12 = (*(code *)(*(int *)(puVar24 + 0x384d4) + -0x62b8))();
    piVar15[2] = 0;
    if (iVar12 != 0) {
      iVar13 = *(int *)*piVar15;
      iVar16 = *(int *)(iVar13 + 0xc);
      iVar20 = *(int *)(puVar24 + 0x3826c);
      goto joined_r0x001587e4;
    }
  }
  iVar13 = piVar15[1];
  if (*(int *)(iVar13 + 0x10) != 0) {
    *(undefined4 *)(iVar13 + 0x10) = 0;
    MASKED(iVar13);
  }
  pcVar25 = *(code **)(puVar24 + 0x38578);
  if (*(int *)(iVar13 + 0x28) != 0) {
    *(undefined4 *)(iVar13 + 0x28) = 0;
    (*pcVar25)();
  }
  iVar12 = *(int *)(iVar13 + 0x24);
  *(undefined4 *)(iVar13 + 0x24) = 0;
  iVar13 = *(int *)*piVar15;
  iVar16 = *(int *)(iVar13 + 0xc);
  iVar20 = *(int *)(puVar24 + 0x3826c);
joined_r0x001587e4:
  if (iVar16 == 0) {
    *(undefined4 *)(iVar13 + 0x2c) = uVar19;
    *(undefined4 *)(iVar13 + 0x28) = uVar18;
    return iVar12;
  }
  (**(code **)(iVar20 + -0xb1c))();
  *(undefined4 *)(iVar13 + 0x2c) = uVar19;
  *(undefined4 *)(iVar13 + 0x28) = uVar18;
  if (*(int *)(iVar13 + 0xc) != 0) {
    (**(code **)(iVar20 + -0xb14))();
  }
  return iVar12;
}

