
int __regparm3 sqlite3PagerSavepoint(Pager *pPager,int op,int iSavepoint)

{
  uint uVar1;
  sqlite3_io_methods *psVar2;
  PCache *pPVar3;
  PgHdr *pPVar4;
  u32 *puVar5;
  longlong lVar6;
  int iVar7;
  int iVar8;
  uint uVar9;
  Wal *pWVar10;
  PgHdr *pPVar11;
  u32 **ppuVar12;
  int extraout_ECX;
  int extraout_EDX;
  u32 uVar13;
  Pgno PVar14;
  uint uVar15;
  int iVar16;
  int unaff_EDI;
  int iVar17;
  int in_GS_OFFSET;
  bool bVar18;
  u32 *in_stack_ffffff8c;
  u64 in_stack_ffffff94;
  uint local_64;
  int local_60;
  Bitvec *local_5c;
  int local_58;
  PagerSavepoint *local_44;
  u32 nJRec;
  u32 dummy;
  int local_28;
  int local_20;
  
  __x86_get_pc_thunk_di();
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar8 = (uint)(extraout_EDX != 1) + extraout_ECX;
  if (iVar8 < pPager->nSavepoint) {
    iVar17 = iVar8 * 0x2c;
    iVar16 = iVar8;
    do {
      iVar16 = iVar16 + 1;
      iVar7 = iVar17 + -0xc;
      iVar17 = iVar17 + 0x2c;
      sqlite3BitvecDestroy(*(Bitvec **)((int)pPager->aSavepoint->aWalData + iVar7));
    } while (iVar16 < pPager->nSavepoint);
  }
  pPager->nSavepoint = iVar8;
  if (extraout_EDX != 1) {
    pWVar10 = pPager->pWal;
    if (pWVar10 != (Wal *)0x0) {
      if ((iVar8 == 0) ||
         (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 == (PagerSavepoint *)0x0)) {
        bVar18 = true;
        local_58 = 0;
        pPager->dbSize = pPager->dbOrigSize;
        pPager->changeCountDone = pPager->tempFile;
        if (pWVar10->writeLock != '\0') {
          ppuVar12 = pWVar10->apWiData;
          uVar9 = (pWVar10->hdr).mxFrame;
          puVar5 = *ppuVar12;
          (pWVar10->hdr).iVersion = *puVar5;
          (pWVar10->hdr).unused = puVar5[1];
          (pWVar10->hdr).iChange = puVar5[2];
          uVar13 = puVar5[3];
          (pWVar10->hdr).isInit = (char)uVar13;
          (pWVar10->hdr).bigEndCksum = (char)(uVar13 >> 8);
          (pWVar10->hdr).szPage = (short)(uVar13 >> 0x10);
          (pWVar10->hdr).mxFrame = puVar5[4];
          (pWVar10->hdr).nPage = puVar5[5];
          (pWVar10->hdr).aFrameCksum[0] = puVar5[6];
          (pWVar10->hdr).aFrameCksum[1] = puVar5[7];
          (pWVar10->hdr).aSalt[0] = puVar5[8];
          (pWVar10->hdr).aSalt[1] = puVar5[9];
          (pWVar10->hdr).aCksum[0] = puVar5[10];
          uVar13 = (pWVar10->hdr).mxFrame;
          (pWVar10->hdr).aCksum[1] = puVar5[0xb];
          if (uVar13 + 1 <= uVar9) {
            uVar15 = uVar13 + 0x22;
            while( true ) {
              if (uVar15 < 0x1000) {
                uVar13 = (*ppuVar12)[uVar15];
              }
              else {
                uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];
              }
              local_58 = pagerUndoCallback(pPager,uVar13);
              uVar1 = uVar15 - 0x20;
              bVar18 = local_58 == 0;
              uVar15 = uVar15 + 1;
              if (uVar9 < uVar1 || !bVar18) break;
              ppuVar12 = pWVar10->apWiData;
            }
            uVar13 = (pWVar10->hdr).mxFrame;
          }
          if (uVar9 != uVar13) {
            walCleanupHash(pWVar10);
          }
        }
        pPVar3 = pPager->pPCache;
        pPVar11 = pPVar3->pDirty;
        if (pPVar11 != (PgHdr *)0x0) {
          do {
            pPVar4 = pPVar11->pDirtyNext;
            pPVar11->pDirty = pPVar4;
            pPVar11 = pPVar4;
          } while (pPVar4 != (PgHdr *)0x0);
          pPVar11 = pPVar3->pDirty;
        }
        pPVar11 = pcacheSortDirtyList(pPVar11);
        if ((pPVar11 != (PgHdr *)0x0) && (bVar18)) {
          do {
            pPVar4 = pPVar11->pDirty;
            local_58 = pagerUndoCallback(pPager,pPVar11->pgno);
            if (pPVar4 == (PgHdr *)0x0) break;
            pPVar11 = pPVar4;
          } while (local_58 == 0);
        }
        goto LAB_0007c632;
      }
LAB_0007c3bd:
      PVar14 = local_44->nOrig;
      local_5c = (Bitvec *)sqlite3MallocZero(in_stack_ffffff94);
      local_58 = 7;
      if (local_5c == (Bitvec *)0x0) goto LAB_0007c632;
      local_5c->iSize = PVar14;
      local_60 = *(int *)((int)&pPager->journalOff + 4);
      pPager->dbSize = local_44->nOrig;
      pPager->changeCountDone = pPager->tempFile;
      local_64 = (uint)pPager->journalOff;
      if (pPager->pWal == (Wal *)0x0) {
        iVar8 = *(int *)((int)&local_44->iHdrOffset + 4);
        uVar9 = (uint)local_44->iHdrOffset;
        uVar15 = (uint)local_44->iOffset;
        iVar16 = *(int *)((int)&local_44->iOffset + 4);
        if (iVar8 == 0 && uVar9 == 0) {
          uVar9 = local_64;
          iVar8 = local_60;
        }
        *(uint *)&pPager->journalOff = uVar15;
        *(int *)((int)&pPager->journalOff + 4) = iVar16;
        while ((SBORROW4(iVar16,iVar8) != SBORROW4(iVar16 - iVar8,(uint)(uVar15 < uVar9))) !=
               (int)((iVar16 - iVar8) - (uint)(uVar15 < uVar9)) < 0) {
          local_58 = pager_playback_one_page
                               (pPager,&pPager->journalOff,(Bitvec *)0x1,1,(int)in_stack_ffffff8c);
          if (local_58 != 0) goto LAB_0007c4c8;
          uVar15 = (uint)pPager->journalOff;
          iVar16 = *(int *)((int)&pPager->journalOff + 4);
        }
        if ((SBORROW4(iVar16,local_60) != SBORROW4(iVar16 - local_60,(uint)(uVar15 < local_64))) !=
            (int)((iVar16 - local_60) - (uint)(uVar15 < local_64)) < 0) goto LAB_0007c431;
      }
      else {
        *(undefined4 *)&pPager->journalOff = 0;
        *(undefined4 *)((int)&pPager->journalOff + 4) = 0;
        if (-local_60 < (int)(uint)(local_64 != 0)) {
LAB_0007c431:
          do {
            nJRec = 0;
            in_stack_ffffff8c = &nJRec;
            local_58 = readJournalHdr(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy);
            if (nJRec != 0) {
              if (local_58 != 0) {
LAB_0007c4bc:
                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;
                goto LAB_0007c629;
              }
              uVar9 = (uint)pPager->journalOff;
              iVar8 = *(int *)((int)&pPager->journalOff + 4);
LAB_0007c6f6:
              if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))
                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {
                uVar15 = 0;
                do {
                  uVar15 = uVar15 + 1;
                  local_58 = pager_playback_one_page
                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,
                                        (int)in_stack_ffffff8c);
                  if (local_58 != 0) goto LAB_0007c4bc;
                  uVar9 = (uint)pPager->journalOff;
                  iVar8 = *(int *)((int)&pPager->journalOff + 4);
                } while ((uVar15 < nJRec) &&
                        ((SBORROW4(iVar8,local_60) !=
                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=
                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));
                goto LAB_0007c598;
              }
              break;
            }
            uVar9 = (uint)pPager->journalOff;
            iVar8 = *(int *)((int)&pPager->journalOff + 4);
            if (*(int *)((int)&pPager->journalHdr + 4) +
                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8 &&
                pPager->sectorSize + (int)pPager->journalHdr == uVar9) {
              in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8);
              nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),
                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);
              if (local_58 == 0) {
                if (nJRec != 0) goto LAB_0007c6f6;
                goto LAB_0007c598;
              }
              goto LAB_0007c4bc;
            }
            if (local_58 != 0) goto LAB_0007c4bc;
LAB_0007c598:
          } while ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))
                   != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0);
          if (local_44 == (PagerSavepoint *)0x0) goto LAB_0007c6c0;
        }
      }
      PVar14 = local_44->iSubRec;
      uVar9 = pPager->pageSize + 4;
      lVar6 = (ulonglong)uVar9 * (ulonglong)PVar14;
      dummy = (u32)lVar6;
      pWVar10 = pPager->pWal;
      local_28 = (int)((ulonglong)lVar6 >> 0x20) + ((int)uVar9 >> 0x1f) * PVar14;
      if (pWVar10 != (Wal *)0x0) goto LAB_0007c4fc;
      goto LAB_0007c5ea;
    }
    if (pPager->jfd->pMethods == (sqlite3_io_methods *)0x0) goto LAB_0007c6d7;
    if ((iVar8 != 0) &&
       (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 != (PagerSavepoint *)0x0))
    goto LAB_0007c3bd;
    local_64 = (uint)pPager->journalOff;
    local_44 = (PagerSavepoint *)0x0;
    local_60 = *(int *)((int)&pPager->journalOff + 4);
    *(undefined4 *)&pPager->journalOff = 0;
    pPager->dbSize = pPager->dbOrigSize;
    pPager->changeCountDone = pPager->tempFile;
    *(undefined4 *)((int)&pPager->journalOff + 4) = 0;
    local_5c = (Bitvec *)0x0;
    if (-local_60 < (int)(uint)(local_64 != 0)) goto LAB_0007c431;
    goto LAB_0007c6c0;
  }
  if (iVar8 == 0) {
    psVar2 = pPager->sjfd->pMethods;
    local_58 = 0;
    if (psVar2 != (sqlite3_io_methods *)0x0) {
      if (psVar2 == (sqlite3_io_methods *)(unaff_EDI + 0xce457)) {
        local_58 = memjrnlTruncate(pPager->sjfd,0);
      }
      pPager->nSubRec = 0;
    }
    goto LAB_0007c632;
  }
LAB_0007c6d7:
  local_58 = 0;
LAB_0007c632:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return local_58;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
LAB_0007c4c8:
  PVar14 = local_44->iSubRec;
  uVar9 = pPager->pageSize + 4;
  lVar6 = (ulonglong)uVar9 * (ulonglong)PVar14;
  dummy = (u32)lVar6;
  pWVar10 = pPager->pWal;
  local_28 = (int)((ulonglong)lVar6 >> 0x20) + ((int)uVar9 >> 0x1f) * PVar14;
  if (pWVar10 == (Wal *)0x0) {
LAB_0007c629:
    sqlite3BitvecDestroy(local_5c);
    goto LAB_0007c632;
  }
LAB_0007c4fc:
  if (local_44->aWalData[3] == pWVar10->nCkpt) {
    uVar13 = local_44->aWalData[0];
  }
  else {
    local_44->aWalData[0] = 0;
    local_44->aWalData[3] = pWVar10->nCkpt;
    uVar13 = 0;
  }
  if (uVar13 < (pWVar10->hdr).mxFrame) {
    (pWVar10->hdr).mxFrame = uVar13;
    (pWVar10->hdr).aFrameCksum[0] = local_44->aWalData[1];
    (pWVar10->hdr).aFrameCksum[1] = local_44->aWalData[2];
    walCleanupHash(pWVar10);
    PVar14 = local_44->iSubRec;
  }
LAB_0007c5ea:
  if (PVar14 < pPager->nSubRec) {
    do {
      PVar14 = PVar14 + 1;
      local_58 = pager_playback_one_page
                           (pPager,(i64 *)&dummy,(Bitvec *)0x0,1,(int)in_stack_ffffff8c);
      if (local_58 != 0) goto LAB_0007c629;
    } while (PVar14 < pPager->nSubRec);
  }
LAB_0007c6c0:
  sqlite3BitvecDestroy(local_5c);
  *(uint *)&pPager->journalOff = local_64;
  *(int *)((int)&pPager->journalOff + 4) = local_60;
  goto LAB_0007c6d7;
}



int __regparm3 FUN_0007c320(int param_1)

{
  undefined4 *puVar1;
  longlong lVar2;
  uint uVar3;
  int iVar4;
  uint *puVar5;
  uint uVar6;
  int extraout_ECX;
  int extraout_EDX;
  uint uVar7;
  int iVar8;
  int unaff_EDI;
  uint uVar9;
  int in_GS_OFFSET;
  bool bVar10;
  uint local_64;
  uint local_60;
  int local_58;
  uint *local_44;
  uint local_30;
  undefined4 local_2c;
  int local_28;
  int local_20;
  
  FUN_0001af1a();
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar4 = (uint)(extraout_EDX != 1) + extraout_ECX;
  iVar8 = iVar4;
  if (iVar4 < *(int *)(param_1 + 0x60)) {
    do {
      iVar8 = iVar8 + 1;
      FUN_00027250();
    } while (iVar8 < *(int *)(param_1 + 0x60));
  }
  *(int *)(param_1 + 0x60) = iVar4;
  if (extraout_EDX == 1) {
    if (iVar4 == 0) {
      iVar8 = **(int **)(param_1 + 0x44);
      local_58 = 0;
      if (iVar8 != 0) {
        if (iVar8 == unaff_EDI + 0xce457) {
          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);
        }
        *(undefined4 *)(param_1 + 0x34) = 0;
      }
      goto LAB_0007c632;
    }
  }
  else {
    iVar8 = *(int *)(param_1 + 0xd4);
    if (iVar8 != 0) {
      if ((iVar4 == 0) ||
         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),
         local_44 == (uint *)0x0)) {
        bVar10 = true;
        local_58 = 0;
        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);
        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);
        if (*(char *)(iVar8 + 0x2c) != '\0') {
          uVar7 = *(uint *)(iVar8 + 0x44);
          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);
          *(undefined4 *)(iVar8 + 0x34) = *puVar1;
          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];
          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];
          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];
          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];
          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];
          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];
          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];
          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];
          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];
          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];
          uVar6 = *(uint *)(iVar8 + 0x44);
          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];
          if (uVar6 + 1 <= uVar7) {
            iVar4 = uVar6 + 0x22;
            do {
              local_58 = FUN_00067ce0();
              uVar6 = iVar4 - 0x20;
              bVar10 = local_58 == 0;
              iVar4 = iVar4 + 1;
            } while (uVar6 <= uVar7 && bVar10);
            uVar6 = *(uint *)(iVar8 + 0x44);
          }
          if (uVar7 != uVar6) {
            FUN_00067d50();
          }
        }
        iVar8 = **(int **)(param_1 + 0xd0);
        while (iVar8 != 0) {
          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);
          iVar8 = *(int *)(iVar8 + 0x20);
        }
        iVar8 = FUN_00025c80();
        if ((iVar8 != 0) && (bVar10)) {
          do {
            iVar8 = *(int *)(iVar8 + 0x10);
            local_58 = FUN_00067ce0();
            if (iVar8 == 0) break;
          } while (local_58 == 0);
        }
        goto LAB_0007c632;
      }
LAB_0007c3bd:
      uVar7 = local_44[5];
      puVar5 = (uint *)FUN_000261b0();
      local_58 = 7;
      if (puVar5 == (uint *)0x0) goto LAB_0007c632;
      *puVar5 = uVar7;
      local_60 = *(uint *)(param_1 + 0x4c);
      *(uint *)(param_1 + 0x18) = local_44[5];
      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);
      local_64 = *(uint *)(param_1 + 0x48);
      if (*(int *)(param_1 + 0xd4) == 0) {
        uVar7 = *local_44;
        uVar6 = local_44[1];
        uVar9 = local_44[2];
        uVar3 = local_44[3];
        if (local_44[3] == 0 && local_44[2] == 0) {
          uVar9 = local_64;
          uVar3 = local_60;
        }
        *(uint *)(param_1 + 0x48) = uVar7;
        *(uint *)(param_1 + 0x4c) = uVar6;
        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=
               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {
          local_58 = FUN_0007bf20(1,1);
          if (local_58 != 0) goto LAB_0007c4c8;
          uVar7 = *(uint *)(param_1 + 0x48);
          uVar6 = *(uint *)(param_1 + 0x4c);
        }
        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=
            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;
LAB_0007c5b6:
        uVar7 = local_44[6];
        uVar6 = *(int *)(param_1 + 0x94) + 4;
        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;
        local_2c = (undefined4)lVar2;
        iVar8 = *(int *)(param_1 + 0xd4);
        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;
        if (iVar8 != 0) goto LAB_0007c4fc;
      }
      else {
        *(undefined4 *)(param_1 + 0x48) = 0;
        *(undefined4 *)(param_1 + 0x4c) = 0;
        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;
LAB_0007c431:
LAB_0007c450:
        local_30 = 0;
        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);
        if (local_30 != 0) {
          if (local_58 != 0) goto LAB_0007c4bc;
          uVar7 = *(uint *)(param_1 + 0x48);
          iVar8 = *(int *)(param_1 + 0x4c);
LAB_0007c6f6:
          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==
              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;
          uVar6 = 0;
          do {
            uVar6 = uVar6 + 1;
            local_58 = FUN_0007bf20(1,1);
            if (local_58 != 0) goto LAB_0007c4bc;
            uVar7 = *(uint *)(param_1 + 0x48);
            iVar8 = *(int *)(param_1 + 0x4c);
          } while ((uVar6 < local_30) &&
                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))
                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));
LAB_0007c598:
          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==
              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;
          goto LAB_0007c450;
        }
        uVar7 = *(uint *)(param_1 + 0x48);
        iVar8 = *(int *)(param_1 + 0x4c);
        if (*(int *)(param_1 + 0x54) +
            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&
            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {
          iVar4 = *(int *)(param_1 + 0x94) + 8;
          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),
                                  iVar4,iVar4 >> 0x1f);
          if (local_58 != 0) goto LAB_0007c4bc;
          if (local_30 != 0) goto LAB_0007c6f6;
          goto LAB_0007c598;
        }
        if (local_58 == 0) goto LAB_0007c598;
LAB_0007c4bc:
        if (local_44 == (uint *)0x0) goto LAB_0007c629;
LAB_0007c4c8:
        uVar7 = local_44[6];
        uVar6 = *(int *)(param_1 + 0x94) + 4;
        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;
        local_2c = (undefined4)lVar2;
        iVar8 = *(int *)(param_1 + 0xd4);
        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;
        if (iVar8 == 0) {
LAB_0007c629:
          FUN_00027250();
          goto LAB_0007c632;
        }
LAB_0007c4fc:
        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {
          uVar6 = local_44[7];
        }
        else {
          local_44[7] = 0;
          local_44[10] = *(uint *)(iVar8 + 0x70);
          uVar6 = 0;
        }
        if (uVar6 < *(uint *)(iVar8 + 0x44)) {
          *(uint *)(iVar8 + 0x44) = uVar6;
          *(uint *)(iVar8 + 0x4c) = local_44[8];
          *(uint *)(iVar8 + 0x50) = local_44[9];
          FUN_00067d50();
          uVar7 = local_44[6];
        }
      }
      if (uVar7 < *(uint *)(param_1 + 0x34)) {
        do {
          uVar7 = uVar7 + 1;
          local_58 = FUN_0007bf20(0,1);
          if (local_58 != 0) goto LAB_0007c629;
        } while (uVar7 < *(uint *)(param_1 + 0x34));
      }
      goto LAB_0007c6c0;
    }
    if (**(int **)(param_1 + 0x40) != 0) {
      if ((iVar4 != 0) &&
         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),
         local_44 != (uint *)0x0)) goto LAB_0007c3bd;
      local_64 = *(uint *)(param_1 + 0x48);
      local_44 = (uint *)0x0;
      local_60 = *(uint *)(param_1 + 0x4c);
      *(undefined4 *)(param_1 + 0x48) = 0;
      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);
      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);
      *(undefined4 *)(param_1 + 0x4c) = 0;
      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;
      goto LAB_0007c431;
    }
  }
LAB_0007c6d7:
  local_58 = 0;
LAB_0007c632:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000f6410();
  }
  return local_58;
LAB_0007c5aa:
  if (local_44 != (uint *)0x0) goto LAB_0007c5b6;
LAB_0007c6c0:
  FUN_00027250();
  *(uint *)(param_1 + 0x48) = local_64;
  *(uint *)(param_1 + 0x4c) = local_60;
  goto LAB_0007c6d7;
}


PUSH EBP
MOV EBP,EAX
PUSH EDI
CALL 0x0001af1a
ADD EDI,0xcebab
PUSH ESI
PUSH EBX
MOV EBX,EDX
SUB ESP,0x5c
MOV dword ptr [ESP + 0x2c],EDI
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x4c],EAX
XOR EAX,EAX
XOR EAX,EAX
CMP EDX,0x1
SETNZ AL
ADD EAX,ECX
MOV dword ptr [ESP + 0x14],EAX
CMP EAX,dword ptr [EBP + 0x60]
JGE 0x0007c377
MOV ESI,dword ptr [ESP + 0x14]
IMUL EDI,ESI,0x2c
MOV EAX,dword ptr [EBP + 0x5c]
ADD ESI,0x1
MOV EAX,dword ptr [EAX + EDI*0x1 + 0x10]
ADD EDI,0x2c
CALL 0x00027250
CMP ESI,dword ptr [EBP + 0x60]
JL 0x0007c360
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [EBP + 0x60],EAX
CMP EBX,0x1
JZ 0x0007c760
MOV EAX,dword ptr [EBP + 0xd4]
MOV dword ptr [ESP + 0x10],EAX
TEST EAX,EAX
JZ 0x0007c650
MOV EDX,dword ptr [ESP + 0x14]
TEST EDX,EDX
JZ 0x0007c806
IMUL EAX,dword ptr [ESP + 0x14],0x2c
MOV EDX,dword ptr [EBP + 0x5c]
LEA EAX,[EDX + EAX*0x1 + -0x2c]
MOV dword ptr [ESP + 0x28],EAX
TEST EAX,EAX
JZ 0x0007c806
MOV EDI,dword ptr [ESP + 0x28]
MOV EAX,0x200
XOR EDX,EDX
MOV EBX,dword ptr [EDI + 0x14]
CALL 0x000261b0
MOV dword ptr [ESP + 0x14],0x7
MOV dword ptr [ESP + 0x10],EAX
TEST EAX,EAX
JZ 0x0007c632
MOV dword ptr [EAX],EBX
MOV EAX,dword ptr [EDI + 0x14]
MOV EDX,dword ptr [EBP + 0x4c]
MOV EDI,dword ptr [EBP + 0xd4]
MOV dword ptr [EBP + 0x18],EAX
MOVZX EAX,byte ptr [EBP + 0xc]
MOV dword ptr [ESP + 0xc],EDX
MOV byte ptr [EBP + 0x12],AL
MOV EAX,dword ptr [EBP + 0x48]
MOV dword ptr [ESP + 0x8],EAX
TEST EDI,EDI
JZ 0x0007c7a0
MOV ECX,dword ptr [ESP + 0x8]
XOR EAX,EAX
MOV EBX,dword ptr [ESP + 0xc]
MOV dword ptr [EBP + 0x48],0x0
MOV dword ptr [EBP + 0x4c],0x0
CMP EAX,ECX
SBB EAX,EBX
JGE 0x0007c5b6
LEA EAX,[ESP + 0x40]
MOV dword ptr [ESP + 0x1c],EAX
LEA EAX,[ESP + 0x3c]
MOV dword ptr [ESP + 0x18],EAX
LEA EAX,[EBP + 0x48]
MOV dword ptr [ESP + 0x14],EAX
LEA ESI,[ESI]
NOP
MOV dword ptr [ESP + 0x3c],0x0
XOR EDX,EDX
MOV EAX,EBP
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x14]
PUSH dword ptr [ESP + 0x14]
CALL 0x0003bf80
ADD ESP,0x10
MOV ESI,dword ptr [ESP + 0x3c]
MOV ECX,EAX
TEST ESI,ESI
JNZ 0x0007c6e8
XOR EDX,EDX
MOV EAX,dword ptr [EBP + 0x90]
ADD EAX,dword ptr [EBP + 0x50]
ADC EDX,dword ptr [EBP + 0x54]
MOV ESI,dword ptr [EBP + 0x48]
MOV EBX,EAX
MOV dword ptr [ESP + 0x20],EAX
MOV EDI,dword ptr [EBP + 0x4c]
MOV dword ptr [ESP + 0x24],EDX
MOV EDX,dword ptr [ESP + 0x24]
XOR EBX,ESI
XOR EDX,EDI
OR EDX,EBX
JZ 0x0007c550
TEST ECX,ECX
JZ 0x0007c598
MOV dword ptr [ESP + 0x14],ECX
MOV ECX,dword ptr [ESP + 0x28]
TEST ECX,ECX
JZ 0x0007c629
MOV EAX,dword ptr [ESP + 0x28]
MOV EBX,dword ptr [EAX + 0x18]
MOV EAX,dword ptr [EBP + 0x94]
ADD EAX,0x4
MOV EDI,EAX
MUL EBX
SAR EDI,0x1f
MOV ECX,EDI
IMUL ECX,EBX
MOV dword ptr [ESP + 0x40],EAX
MOV EAX,dword ptr [EBP + 0xd4]
ADD EDX,ECX
MOV dword ptr [ESP + 0x44],EDX
TEST EAX,EAX
JZ 0x0007c629
MOV EDI,dword ptr [ESP + 0x28]
MOV ECX,dword ptr [EAX + 0x70]
CMP dword ptr [EDI + 0x28],ECX
JZ 0x0007c890
MOV EDI,dword ptr [ESP + 0x28]
MOV dword ptr [EDI + 0x1c],0x0
MOV EDX,dword ptr [EAX + 0x70]
MOV dword ptr [EDI + 0x28],EDX
XOR EDX,EDX
CMP dword ptr [EAX + 0x44],EDX
JBE 0x0007c5ea
MOV EDI,dword ptr [ESP + 0x28]
MOV dword ptr [EAX + 0x44],EDX
MOV EDX,dword ptr [EDI + 0x20]
MOV dword ptr [EAX + 0x4c],EDX
MOV EDX,dword ptr [EDI + 0x24]
MOV dword ptr [EAX + 0x50],EDX
CALL 0x00067d50
MOV EBX,dword ptr [EDI + 0x18]
JMP 0x0007c5ea
MOV EBX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EBP + 0x94]
MOV dword ptr [ESP + 0x20],ECX
MOV ECX,dword ptr [ESP + 0x8]
SUB ECX,ESI
SBB EBX,EDI
ADD EAX,0x8
CDQ
PUSH EDX
PUSH EAX
PUSH EBX
PUSH ECX
MOV EBX,dword ptr [ESP + 0x3c]
CALL 0x000f5a10
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x3c],EAX
TEST ECX,ECX
JNZ 0x0007c4b8
TEST EAX,EAX
JNZ 0x0007c6f6
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0xc]
CMP ESI,EAX
SBB EDI,EDX
JL 0x0007c450
MOV EBX,dword ptr [ESP + 0x28]
TEST EBX,EBX
JZ 0x0007c6c0
MOV EAX,dword ptr [ESP + 0x28]
MOV EBX,dword ptr [EAX + 0x18]
MOV EAX,dword ptr [EBP + 0x94]
ADD EAX,0x4
MOV EDI,EAX
MUL EBX
SAR EDI,0x1f
MOV ECX,EDI
IMUL ECX,EBX
MOV dword ptr [ESP + 0x40],EAX
MOV EAX,dword ptr [EBP + 0xd4]
ADD EDX,ECX
MOV dword ptr [ESP + 0x44],EDX
TEST EAX,EAX
JNZ 0x0007c4fc
CMP EBX,dword ptr [EBP + 0x34]
JNC 0x0007c6c0
LEA EDI,[ESP + 0x40]
MOV ESI,dword ptr [ESP + 0x10]
JMP 0x0007c609
CMP EBX,dword ptr [EBP + 0x34]
JNC 0x0007c6c0
SUB ESP,0x8
MOV ECX,ESI
MOV EDX,EDI
MOV EAX,EBP
PUSH 0x1
ADD EBX,0x1
PUSH 0x0
CALL 0x0007bf20
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0007c600
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,dword ptr [ESP + 0x10]
CALL 0x00027250
MOV EDI,dword ptr [ESP + 0x4c]
XOR EDI,dword ptr GS:[0x14]
MOV EAX,dword ptr [ESP + 0x14]
JNZ 0x0007c9a0
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EBP + 0x40]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x0007c6d7
MOV EAX,dword ptr [ESP + 0x14]
TEST EAX,EAX
JZ 0x0007c679
IMUL EAX,dword ptr [ESP + 0x14],0x2c
MOV EDX,dword ptr [EBP + 0x5c]
LEA EAX,[EDX + EAX*0x1 + -0x2c]
MOV dword ptr [ESP + 0x28],EAX
TEST EAX,EAX
JNZ 0x0007c3bd
MOV EAX,dword ptr [EBP + 0x1c]
MOV ECX,dword ptr [EBP + 0x48]
MOV dword ptr [ESP + 0x28],0x0
MOV EBX,dword ptr [EBP + 0x4c]
MOV dword ptr [EBP + 0x48],0x0
MOV dword ptr [EBP + 0x18],EAX
MOVZX EAX,byte ptr [EBP + 0xc]
MOV dword ptr [ESP + 0x8],ECX
MOV byte ptr [EBP + 0x12],AL
XOR EAX,EAX
CMP EAX,ECX
MOV dword ptr [ESP + 0xc],EBX
SBB EAX,EBX
MOV dword ptr [EBP + 0x4c],0x0
JL 0x0007c431
LEA ESI,[ESI]
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x10]
CALL 0x00027250
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0xc]
MOV dword ptr [EBP + 0x48],EAX
MOV dword ptr [EBP + 0x4c],EDX
MOV dword ptr [ESP + 0x14],0x0
JMP 0x0007c632
TEST EAX,EAX
JNZ 0x0007c4b8
MOV ESI,dword ptr [EBP + 0x48]
MOV EDI,dword ptr [EBP + 0x4c]
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0xc]
CMP ESI,EAX
SBB EDI,EDX
JGE 0x0007c5aa
XOR EBX,EBX
JMP 0x0007c734
MOV ESI,dword ptr [EBP + 0x48]
MOV EDI,dword ptr [EBP + 0x4c]
CMP EBX,dword ptr [ESP + 0x3c]
JNC 0x0007c598
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0xc]
MOV ECX,EDI
CMP ESI,EAX
SBB ECX,EDX
JGE 0x0007c598
SUB ESP,0x8
MOV EAX,EBP
ADD EBX,0x1
PUSH 0x1
PUSH 0x1
MOV ECX,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [ESP + 0x24]
CALL 0x0007bf20
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0007c710
MOV dword ptr [ESP + 0x14],EAX
JMP 0x0007c4bc
MOV EAX,dword ptr [ESP + 0x14]
TEST EAX,EAX
JNZ 0x0007c6d7
MOV EDX,dword ptr [EBP + 0x44]
MOV EAX,dword ptr [EDX]
TEST EAX,EAX
JZ 0x0007c632
MOV EDI,dword ptr [ESP + 0x2c]
LEA ECX,[EDI + 0xfffff8ac]
CMP EAX,ECX
JZ 0x0007c964
MOV dword ptr [EBP + 0x34],0x0
JMP 0x0007c632
MOV EDX,dword ptr [ESP + 0x28]
MOV EBX,dword ptr [ESP + 0xc]
MOV ECX,dword ptr [ESP + 0x8]
MOV ESI,dword ptr [EDX + 0xc]
MOV EDI,dword ptr [EDX + 0x8]
MOV EAX,ESI
OR EAX,EDI
MOV EAX,EDX
MOV EDX,dword ptr [EDX]
MOV EAX,dword ptr [EAX + 0x4]
CMOVZ ESI,EBX
CMOVZ EDI,ECX
LEA EBX,[EBP + 0x48]
MOV dword ptr [EBP + 0x48],EDX
MOV dword ptr [EBP + 0x4c],EAX
JMP 0x0007c7d6
MOV EDX,dword ptr [EBP + 0x48]
MOV EAX,dword ptr [EBP + 0x4c]
CMP EDX,EDI
MOV ECX,EAX
SBB ECX,ESI
JGE 0x0007c898
SUB ESP,0x8
MOV EDX,EBX
MOV EAX,EBP
PUSH 0x1
PUSH 0x1
MOV ECX,dword ptr [ESP + 0x20]
CALL 0x0007bf20
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0007c7d0
MOV dword ptr [ESP + 0x14],EAX
JMP 0x0007c4c8
MOV EAX,dword ptr [EBP + 0x1c]
MOV ESI,0x1
MOV dword ptr [ESP + 0x14],0x0
MOV dword ptr [EBP + 0x18],EAX
MOVZX EAX,byte ptr [EBP + 0xc]
MOV byte ptr [EBP + 0x12],AL
MOV EAX,dword ptr [ESP + 0x10]
CMP byte ptr [EAX + 0x2c],0x0
JNZ 0x0007c8af
MOV ECX,dword ptr [EBP + 0xd0]
MOV EAX,dword ptr [ECX]
TEST EAX,EAX
JZ 0x0007c84e
LEA ESI,[ESI]
MOV EDX,dword ptr [EAX + 0x20]
MOV dword ptr [EAX + 0x10],EDX
MOV EAX,EDX
TEST EDX,EDX
JNZ 0x0007c840
MOV EAX,dword ptr [ECX]
CALL 0x00025c80
TEST EAX,EAX
JZ 0x0007c632
MOV EDX,ESI
TEST DL,DL
JZ 0x0007c632
MOV EDX,EAX
JMP 0x0007c874
TEST EAX,EAX
JNZ 0x0007c887
MOV EBX,dword ptr [EDX + 0x10]
MOV EDX,dword ptr [EDX + 0x18]
MOV EAX,EBP
CALL 0x00067ce0
MOV EDX,EBX
TEST EBX,EBX
JNZ 0x0007c870
MOV dword ptr [ESP + 0x14],EAX
JMP 0x0007c632
MOV EDX,dword ptr [EDI + 0x1c]
JMP 0x0007c51f
MOV ECX,dword ptr [ESP + 0x8]
MOV EBX,dword ptr [ESP + 0xc]
CMP EDX,ECX
SBB EAX,EBX
JL 0x0007c431
JMP 0x0007c5b6
MOV EBX,dword ptr [EAX + 0x20]
MOV EDI,dword ptr [EAX + 0x44]
MOV EDX,dword ptr [EBX]
MOV dword ptr [ESP + 0x8],EBX
MOV EBX,dword ptr [EDX]
MOV dword ptr [EAX + 0x34],EBX
MOV EBX,dword ptr [EDX + 0x4]
MOV dword ptr [EAX + 0x38],EBX
MOV EBX,dword ptr [EDX + 0x8]
MOV dword ptr [EAX + 0x3c],EBX
MOV EBX,dword ptr [EDX + 0xc]
MOV dword ptr [EAX + 0x40],EBX
MOV EBX,dword ptr [EDX + 0x10]
MOV dword ptr [EAX + 0x44],EBX
MOV EBX,dword ptr [EDX + 0x14]
MOV dword ptr [EAX + 0x48],EBX
MOV EBX,dword ptr [EDX + 0x18]
MOV dword ptr [EAX + 0x4c],EBX
MOV EBX,dword ptr [EDX + 0x1c]
MOV dword ptr [EAX + 0x50],EBX
MOV EBX,dword ptr [EDX + 0x20]
MOV dword ptr [EAX + 0x54],EBX
MOV EBX,dword ptr [EDX + 0x24]
MOV dword ptr [EAX + 0x58],EBX
MOV EBX,dword ptr [EDX + 0x28]
MOV dword ptr [EAX + 0x5c],EBX
MOV EBX,dword ptr [EAX + 0x44]
MOV EDX,dword ptr [EDX + 0x2c]
MOV dword ptr [EAX + 0x60],EDX
LEA EDX,[EBX + 0x1]
CMP EDI,EDX
JC 0x0007c98a
MOV ESI,EAX
ADD EBX,0x22
MOV EAX,dword ptr [ESP + 0x8]
JMP 0x0007c953
MOV ECX,EBX
MOV EDX,EBX
SHR ECX,0xc
AND EDX,0xfff
MOV EAX,dword ptr [EAX + ECX*0x4]
LEA EAX,[EAX + EDX*0x4]
MOV EDX,dword ptr [EAX]
MOV EAX,EBP
CALL 0x00067ce0
LEA ECX,[EBX + -0x20]
TEST EAX,EAX
SETZ DL
CMP EDI,ECX
SETNC CL
ADD EBX,0x1
TEST CL,DL
JZ 0x0007c97d
MOV EAX,dword ptr [ESI + 0x20]
CMP EBX,0xfff
JA 0x0007c920
MOV EAX,dword ptr [EAX]
LEA EAX,[EAX + EBX*0x4]
MOV EDX,dword ptr [EAX]
JMP 0x0007c935
SUB ESP,0x4
PUSH 0x0
PUSH 0x0
PUSH EDX
CALL 0x0002e3a0
MOV dword ptr [ESP + 0x24],EAX
ADD ESP,0x10
JMP 0x0007c78b
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,dword ptr [ESP + 0x10]
MOV ESI,EDX
MOV EBX,dword ptr [EAX + 0x44]
CMP EDI,EBX
JZ 0x0007c82e
MOV EAX,dword ptr [ESP + 0x10]
CALL 0x00067d50
JMP 0x0007c82e
CALL 0x000f6410
(translation_unit "int __regparm3 FUN_0007c320(int param_1)\n\n{\n  undefined4 *puVar1;\n  longlong lVar2;\n  uint uVar3;\n  int iVar4;\n  uint *puVar5;\n  uint uVar6;\n  int extraout_ECX;\n  int extraout_EDX;\n  uint uVar7;\n  int iVar8;\n  int unaff_EDI;\n  uint uVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  uint local_64;\n  uint local_60;\n  int local_58;\n  uint *local_44;\n  uint local_30;\n  undefined4 local_2c;\n  int local_28;\n  int local_20;\n  \n  FUN_0001af1a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = (uint)(extraout_EDX != 1) + extraout_ECX;\n  iVar8 = iVar4;\n  if (iVar4 < *(int *)(param_1 + 0x60)) {\n    do {\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    } while (iVar8 < *(int *)(param_1 + 0x60));\n  }\n  *(int *)(param_1 + 0x60) = iVar4;\n  if (extraout_EDX == 1) {\n    if (iVar4 == 0) {\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }\n  }\n  else {\n    iVar8 = *(int *)(param_1 + 0xd4);\n    if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }\n    if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }\n  }\nLAB_0007c6d7:\n  local_58 = 0;\nLAB_0007c632:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }\n  return local_58;\nLAB_0007c5aa:\n  if (local_44 != (uint *)0x0) goto LAB_0007c5b6;\nLAB_0007c6c0:\n  FUN_00027250();\n  *(uint *)(param_1 + 0x48) = local_64;\n  *(uint *)(param_1 + 0x4c) = local_60;\n  goto LAB_0007c6d7;\n}\n\n" (function_definition "int __regparm3 FUN_0007c320(int param_1)\n\n{\n  undefined4 *puVar1;\n  longlong lVar2;\n  uint uVar3;\n  int iVar4;\n  uint *puVar5;\n  uint uVar6;\n  int extraout_ECX;\n  int extraout_EDX;\n  uint uVar7;\n  int iVar8;\n  int unaff_EDI;\n  uint uVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  uint local_64;\n  uint local_60;\n  int local_58;\n  uint *local_44;\n  uint local_30;\n  undefined4 local_2c;\n  int local_28;\n  int local_20;\n  \n  FUN_0001af1a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = (uint)(extraout_EDX != 1) + extraout_ECX;\n  iVar8 = iVar4;\n  if (iVar4 < *(int *)(param_1 + 0x60)) {\n    do {\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    } while (iVar8 < *(int *)(param_1 + 0x60));\n  }\n  *(int *)(param_1 + 0x60) = iVar4;\n  if (extraout_EDX == 1) {\n    if (iVar4 == 0) {\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }\n  }\n  else {\n    iVar8 = *(int *)(param_1 + 0xd4);\n    if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }\n    if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }\n  }\nLAB_0007c6d7:\n  local_58 = 0;\nLAB_0007c632:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }\n  return local_58;\nLAB_0007c5aa:\n  if (local_44 != (uint *)0x0) goto LAB_0007c5b6;\nLAB_0007c6c0:\n  FUN_00027250();\n  *(uint *)(param_1 + 0x48) = local_64;\n  *(uint *)(param_1 + 0x4c) = local_60;\n  goto LAB_0007c6d7;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0007c320(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  longlong lVar2;\n  uint uVar3;\n  int iVar4;\n  uint *puVar5;\n  uint uVar6;\n  int extraout_ECX;\n  int extraout_EDX;\n  uint uVar7;\n  int iVar8;\n  int unaff_EDI;\n  uint uVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  uint local_64;\n  uint local_60;\n  int local_58;\n  uint *local_44;\n  uint local_30;\n  undefined4 local_2c;\n  int local_28;\n  int local_20;\n  \n  FUN_0001af1a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = (uint)(extraout_EDX != 1) + extraout_ECX;\n  iVar8 = iVar4;\n  if (iVar4 < *(int *)(param_1 + 0x60)) {\n    do {\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    } while (iVar8 < *(int *)(param_1 + 0x60));\n  }\n  *(int *)(param_1 + 0x60) = iVar4;\n  if (extraout_EDX == 1) {\n    if (iVar4 == 0) {\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }\n  }\n  else {\n    iVar8 = *(int *)(param_1 + 0xd4);\n    if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }\n    if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }\n  }\nLAB_0007c6d7:\n  local_58 = 0;\nLAB_0007c632:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }\n  return local_58;\nLAB_0007c5aa:\n  if (local_44 != (uint *)0x0) goto LAB_0007c5b6;\nLAB_0007c6c0:\n  FUN_00027250();\n  *(uint *)(param_1 + 0x48) = local_64;\n  *(uint *)(param_1 + 0x4c) = local_60;\n  goto LAB_0007c6d7;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "longlong lVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "uint local_60;" type_identifier identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "uint *local_44;" type_identifier (pointer_declarator "*local_44" * identifier) ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "FUN_0001af1a();" (call_expression "FUN_0001af1a()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = (uint)(extraout_EDX != 1) + extraout_ECX;" (assignment_expression "iVar4 = (uint)(extraout_EDX != 1) + extraout_ECX" identifier = (binary_expression "(uint)(extraout_EDX != 1) + extraout_ECX" (call_expression "(uint)(extraout_EDX != 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(extraout_EDX != 1)" ( (binary_expression "extraout_EDX != 1" identifier != number_literal) ))) + identifier)) ;) (expression_statement "iVar8 = iVar4;" (assignment_expression "iVar8 = iVar4" identifier = identifier) ;) (if_statement "if (iVar4 < *(int *)(param_1 + 0x60)) {\n    do {\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    } while (iVar8 < *(int *)(param_1 + 0x60));\n  }" if (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x60))" ( (binary_expression "iVar4 < *(int *)(param_1 + 0x60)" identifier < (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    } while (iVar8 < *(int *)(param_1 + 0x60));\n  }" { (do_statement "do {\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    } while (iVar8 < *(int *)(param_1 + 0x60));" do (compound_statement "{\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    }" { (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00027250();" (call_expression "FUN_00027250()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "(iVar8 < *(int *)(param_1 + 0x60))" ( (binary_expression "iVar8 < *(int *)(param_1 + 0x60)" identifier < (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) )) ;) })) (expression_statement "*(int *)(param_1 + 0x60) = iVar4;" (assignment_expression "*(int *)(param_1 + 0x60) = iVar4" (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) = identifier) ;) (if_statement "if (extraout_EDX == 1) {\n    if (iVar4 == 0) {\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }\n  }\n  else {\n    iVar8 = *(int *)(param_1 + 0xd4);\n    if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }\n    if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }\n  }" if (parenthesized_expression "(extraout_EDX == 1)" ( (binary_expression "extraout_EDX == 1" identifier == number_literal) )) (compound_statement "{\n    if (iVar4 == 0) {\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }\n  }" { (if_statement "if (iVar4 == 0) {\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }" { (expression_statement "iVar8 = **(int **)(param_1 + 0x44);" (assignment_expression "iVar8 = **(int **)(param_1 + 0x44)" identifier = (pointer_expression "**(int **)(param_1 + 0x44)" * (pointer_expression "*(int **)(param_1 + 0x44)" * (cast_expression "(int **)(param_1 + 0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))))) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (if_statement "if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }" { (if_statement "if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }" if (parenthesized_expression "(iVar8 == unaff_EDI + 0xce457)" ( (binary_expression "iVar8 == unaff_EDI + 0xce457" identifier == (binary_expression "unaff_EDI + 0xce457" identifier + number_literal)) )) (compound_statement "{\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }" { (expression_statement "local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);" (assignment_expression "local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0)" identifier = (call_expression "FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0)" identifier (argument_list "(*(int **)(param_1 + 0x44),0,0)" ( (pointer_expression "*(int **)(param_1 + 0x44)" * (cast_expression "(int **)(param_1 + 0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) , number_literal , number_literal )))) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x34) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x34) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x34)" * (cast_expression "(undefined4 *)(param_1 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) = number_literal) ;) })) (goto_statement "goto LAB_0007c632;" goto statement_identifier ;) })) }) (else_clause "else {\n    iVar8 = *(int *)(param_1 + 0xd4);\n    if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }\n    if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }\n  }" else (compound_statement "{\n    iVar8 = *(int *)(param_1 + 0xd4);\n    if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }\n    if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }\n  }" { (expression_statement "iVar8 = *(int *)(param_1 + 0xd4);" (assignment_expression "iVar8 = *(int *)(param_1 + 0xd4)" identifier = (pointer_expression "*(int *)(param_1 + 0xd4)" * (cast_expression "(int *)(param_1 + 0xd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd4)" ( (binary_expression "param_1 + 0xd4" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }" { (if_statement "if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }" if (parenthesized_expression "((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0))" ( (binary_expression "(iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)" (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) || (parenthesized_expression "(local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)" ( (comma_expression "local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0" (assignment_expression "local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c)" identifier = (cast_expression "(uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c)" ( (binary_expression "*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c" (binary_expression "*(int *)(param_1 + 0x5c) + -0x2c" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) + number_literal) + (binary_expression "iVar4 * 0x2c" identifier * number_literal)) )))) , (binary_expression "local_44 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }" { (expression_statement "bVar10 = true;" (assignment_expression "bVar10 = true" identifier = true) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);" (assignment_expression "*(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c)" (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x1c)" * (cast_expression "(undefined4 *)(param_1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);" (assignment_expression "*(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc)" (pointer_expression "*(undefined1 *)(param_1 + 0x12)" * (cast_expression "(undefined1 *)(param_1 + 0x12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x12)" ( (binary_expression "param_1 + 0x12" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(param_1 + 0xc)" * (cast_expression "(undefined1 *)(param_1 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }" if (parenthesized_expression "(*(char *)(iVar8 + 0x2c) != '\0')" ( (binary_expression "*(char *)(iVar8 + 0x2c) != '\0'" (pointer_expression "*(char *)(iVar8 + 0x2c)" * (cast_expression "(char *)(iVar8 + 0x2c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x2c)" ( (binary_expression "iVar8 + 0x2c" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }" { (expression_statement "uVar7 = *(uint *)(iVar8 + 0x44);" (assignment_expression "uVar7 = *(uint *)(iVar8 + 0x44)" identifier = (pointer_expression "*(uint *)(iVar8 + 0x44)" * (cast_expression "(uint *)(iVar8 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x44)" ( (binary_expression "iVar8 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);" (assignment_expression "puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20)" identifier = (cast_expression "(undefined4 *)**(int **)(iVar8 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(int **)(iVar8 + 0x20)" * (pointer_expression "*(int **)(iVar8 + 0x20)" * (cast_expression "(int **)(iVar8 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x20)" ( (binary_expression "iVar8 + 0x20" identifier + number_literal) ))))))) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x34) = *puVar1;" (assignment_expression "*(undefined4 *)(iVar8 + 0x34) = *puVar1" (pointer_expression "*(undefined4 *)(iVar8 + 0x34)" * (cast_expression "(undefined4 *)(iVar8 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x34)" ( (binary_expression "iVar8 + 0x34" identifier + number_literal) )))) = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x38) = puVar1[1];" (assignment_expression "*(undefined4 *)(iVar8 + 0x38) = puVar1[1]" (pointer_expression "*(undefined4 *)(iVar8 + 0x38)" * (cast_expression "(undefined4 *)(iVar8 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x38)" ( (binary_expression "iVar8 + 0x38" identifier + number_literal) )))) = (subscript_expression "puVar1[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x3c) = puVar1[2];" (assignment_expression "*(undefined4 *)(iVar8 + 0x3c) = puVar1[2]" (pointer_expression "*(undefined4 *)(iVar8 + 0x3c)" * (cast_expression "(undefined4 *)(iVar8 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x3c)" ( (binary_expression "iVar8 + 0x3c" identifier + number_literal) )))) = (subscript_expression "puVar1[2]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x40) = puVar1[3];" (assignment_expression "*(undefined4 *)(iVar8 + 0x40) = puVar1[3]" (pointer_expression "*(undefined4 *)(iVar8 + 0x40)" * (cast_expression "(undefined4 *)(iVar8 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x40)" ( (binary_expression "iVar8 + 0x40" identifier + number_literal) )))) = (subscript_expression "puVar1[3]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x44) = puVar1[4];" (assignment_expression "*(undefined4 *)(iVar8 + 0x44) = puVar1[4]" (pointer_expression "*(undefined4 *)(iVar8 + 0x44)" * (cast_expression "(undefined4 *)(iVar8 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x44)" ( (binary_expression "iVar8 + 0x44" identifier + number_literal) )))) = (subscript_expression "puVar1[4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x48) = puVar1[5];" (assignment_expression "*(undefined4 *)(iVar8 + 0x48) = puVar1[5]" (pointer_expression "*(undefined4 *)(iVar8 + 0x48)" * (cast_expression "(undefined4 *)(iVar8 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x48)" ( (binary_expression "iVar8 + 0x48" identifier + number_literal) )))) = (subscript_expression "puVar1[5]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x4c) = puVar1[6];" (assignment_expression "*(undefined4 *)(iVar8 + 0x4c) = puVar1[6]" (pointer_expression "*(undefined4 *)(iVar8 + 0x4c)" * (cast_expression "(undefined4 *)(iVar8 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x4c)" ( (binary_expression "iVar8 + 0x4c" identifier + number_literal) )))) = (subscript_expression "puVar1[6]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x50) = puVar1[7];" (assignment_expression "*(undefined4 *)(iVar8 + 0x50) = puVar1[7]" (pointer_expression "*(undefined4 *)(iVar8 + 0x50)" * (cast_expression "(undefined4 *)(iVar8 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x50)" ( (binary_expression "iVar8 + 0x50" identifier + number_literal) )))) = (subscript_expression "puVar1[7]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x54) = puVar1[8];" (assignment_expression "*(undefined4 *)(iVar8 + 0x54) = puVar1[8]" (pointer_expression "*(undefined4 *)(iVar8 + 0x54)" * (cast_expression "(undefined4 *)(iVar8 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x54)" ( (binary_expression "iVar8 + 0x54" identifier + number_literal) )))) = (subscript_expression "puVar1[8]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x58) = puVar1[9];" (assignment_expression "*(undefined4 *)(iVar8 + 0x58) = puVar1[9]" (pointer_expression "*(undefined4 *)(iVar8 + 0x58)" * (cast_expression "(undefined4 *)(iVar8 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x58)" ( (binary_expression "iVar8 + 0x58" identifier + number_literal) )))) = (subscript_expression "puVar1[9]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x5c) = puVar1[10];" (assignment_expression "*(undefined4 *)(iVar8 + 0x5c) = puVar1[10]" (pointer_expression "*(undefined4 *)(iVar8 + 0x5c)" * (cast_expression "(undefined4 *)(iVar8 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x5c)" ( (binary_expression "iVar8 + 0x5c" identifier + number_literal) )))) = (subscript_expression "puVar1[10]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = *(uint *)(iVar8 + 0x44);" (assignment_expression "uVar6 = *(uint *)(iVar8 + 0x44)" identifier = (pointer_expression "*(uint *)(iVar8 + 0x44)" * (cast_expression "(uint *)(iVar8 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x44)" ( (binary_expression "iVar8 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];" (assignment_expression "*(undefined4 *)(iVar8 + 0x60) = puVar1[0xb]" (pointer_expression "*(undefined4 *)(iVar8 + 0x60)" * (cast_expression "(undefined4 *)(iVar8 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x60)" ( (binary_expression "iVar8 + 0x60" identifier + number_literal) )))) = (subscript_expression "puVar1[0xb]" identifier [ number_literal ])) ;) (if_statement "if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }" if (parenthesized_expression "(uVar6 + 1 <= uVar7)" ( (binary_expression "uVar6 + 1 <= uVar7" (binary_expression "uVar6 + 1" identifier + number_literal) <= identifier) )) (compound_statement "{\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }" { (expression_statement "iVar4 = uVar6 + 0x22;" (assignment_expression "iVar4 = uVar6 + 0x22" identifier = (binary_expression "uVar6 + 0x22" identifier + number_literal)) ;) (do_statement "do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);" do (compound_statement "{\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            }" { (expression_statement "local_58 = FUN_00067ce0();" (assignment_expression "local_58 = FUN_00067ce0()" identifier = (call_expression "FUN_00067ce0()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar6 = iVar4 - 0x20;" (assignment_expression "uVar6 = iVar4 - 0x20" identifier = (binary_expression "iVar4 - 0x20" identifier - number_literal)) ;) (expression_statement "bVar10 = local_58 == 0;" (assignment_expression "bVar10 = local_58 == 0" identifier = (binary_expression "local_58 == 0" identifier == number_literal)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 <= uVar7 && bVar10)" ( (binary_expression "uVar6 <= uVar7 && bVar10" (binary_expression "uVar6 <= uVar7" identifier <= identifier) && identifier) )) ;) (expression_statement "uVar6 = *(uint *)(iVar8 + 0x44);" (assignment_expression "uVar6 = *(uint *)(iVar8 + 0x44)" identifier = (pointer_expression "*(uint *)(iVar8 + 0x44)" * (cast_expression "(uint *)(iVar8 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x44)" ( (binary_expression "iVar8 + 0x44" identifier + number_literal) ))))) ;) })) (if_statement "if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }" if (parenthesized_expression "(uVar7 != uVar6)" ( (binary_expression "uVar7 != uVar6" identifier != identifier) )) (compound_statement "{\n            FUN_00067d50();\n          }" { (expression_statement "FUN_00067d50();" (call_expression "FUN_00067d50()" identifier (argument_list "()" ( ))) ;) })) })) (expression_statement "iVar8 = **(int **)(param_1 + 0xd0);" (assignment_expression "iVar8 = **(int **)(param_1 + 0xd0)" identifier = (pointer_expression "**(int **)(param_1 + 0xd0)" * (pointer_expression "*(int **)(param_1 + 0xd0)" * (cast_expression "(int **)(param_1 + 0xd0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xd0)" ( (binary_expression "param_1 + 0xd0" identifier + number_literal) )))))) ;) (while_statement "while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }" while (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }" { (expression_statement "*(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);" (assignment_expression "*(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20)" (pointer_expression "*(int *)(iVar8 + 0x10)" * (cast_expression "(int *)(iVar8 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) = (pointer_expression "*(int *)(iVar8 + 0x20)" * (cast_expression "(int *)(iVar8 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x20)" ( (binary_expression "iVar8 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(iVar8 + 0x20);" (assignment_expression "iVar8 = *(int *)(iVar8 + 0x20)" identifier = (pointer_expression "*(int *)(iVar8 + 0x20)" * (cast_expression "(int *)(iVar8 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x20)" ( (binary_expression "iVar8 + 0x20" identifier + number_literal) ))))) ;) })) (expression_statement "iVar8 = FUN_00025c80();" (assignment_expression "iVar8 = FUN_00025c80()" identifier = (call_expression "FUN_00025c80()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }" if (parenthesized_expression "((iVar8 != 0) && (bVar10))" ( (binary_expression "(iVar8 != 0) && (bVar10)" (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) && (parenthesized_expression "(bVar10)" ( identifier ))) )) (compound_statement "{\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }" { (do_statement "do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);" do (compound_statement "{\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          }" { (expression_statement "iVar8 = *(int *)(iVar8 + 0x10);" (assignment_expression "iVar8 = *(int *)(iVar8 + 0x10)" identifier = (pointer_expression "*(int *)(iVar8 + 0x10)" * (cast_expression "(int *)(iVar8 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "local_58 = FUN_00067ce0();" (assignment_expression "local_58 = FUN_00067ce0()" identifier = (call_expression "FUN_00067ce0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "(local_58 == 0)" ( (binary_expression "local_58 == 0" identifier == number_literal) )) ;) })) (goto_statement "goto LAB_0007c632;" goto statement_identifier ;) })) (labeled_statement "LAB_0007c3bd:\n      uVar7 = local_44[5];" statement_identifier : (expression_statement "uVar7 = local_44[5];" (assignment_expression "uVar7 = local_44[5]" identifier = (subscript_expression "local_44[5]" identifier [ number_literal ])) ;)) (expression_statement "puVar5 = (uint *)FUN_000261b0();" (assignment_expression "puVar5 = (uint *)FUN_000261b0()" identifier = (cast_expression "(uint *)FUN_000261b0()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000261b0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_58 = 7;" (assignment_expression "local_58 = 7" identifier = number_literal) ;) (if_statement "if (puVar5 == (uint *)0x0) goto LAB_0007c632;" if (parenthesized_expression "(puVar5 == (uint *)0x0)" ( (binary_expression "puVar5 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0007c632;" goto statement_identifier ;)) (expression_statement "*puVar5 = uVar7;" (assignment_expression "*puVar5 = uVar7" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "local_60 = *(uint *)(param_1 + 0x4c);" (assignment_expression "local_60 = *(uint *)(param_1 + 0x4c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(param_1 + 0x18) = local_44[5];" (assignment_expression "*(uint *)(param_1 + 0x18) = local_44[5]" (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (subscript_expression "local_44[5]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);" (assignment_expression "*(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc)" (pointer_expression "*(undefined1 *)(param_1 + 0x12)" * (cast_expression "(undefined1 *)(param_1 + 0x12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x12)" ( (binary_expression "param_1 + 0x12" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(param_1 + 0xc)" * (cast_expression "(undefined1 *)(param_1 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "local_64 = *(uint *)(param_1 + 0x48);" (assignment_expression "local_64 = *(uint *)(param_1 + 0x48)" identifier = (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0xd4) == 0)" ( (binary_expression "*(int *)(param_1 + 0xd4) == 0" (pointer_expression "*(int *)(param_1 + 0xd4)" * (cast_expression "(int *)(param_1 + 0xd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd4)" ( (binary_expression "param_1 + 0xd4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }" { (expression_statement "uVar7 = *local_44;" (assignment_expression "uVar7 = *local_44" identifier = (pointer_expression "*local_44" * identifier)) ;) (expression_statement "uVar6 = local_44[1];" (assignment_expression "uVar6 = local_44[1]" identifier = (subscript_expression "local_44[1]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = local_44[2];" (assignment_expression "uVar9 = local_44[2]" identifier = (subscript_expression "local_44[2]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = local_44[3];" (assignment_expression "uVar3 = local_44[3]" identifier = (subscript_expression "local_44[3]" identifier [ number_literal ])) ;) (if_statement "if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }" if (parenthesized_expression "(local_44[3] == 0 && local_44[2] == 0)" ( (binary_expression "local_44[3] == 0 && local_44[2] == 0" (binary_expression "local_44[3] == 0" (subscript_expression "local_44[3]" identifier [ number_literal ]) == number_literal) && (binary_expression "local_44[2] == 0" (subscript_expression "local_44[2]" identifier [ number_literal ]) == number_literal)) )) (compound_statement "{\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }" { (expression_statement "uVar9 = local_64;" (assignment_expression "uVar9 = local_64" identifier = identifier) ;) (expression_statement "uVar3 = local_60;" (assignment_expression "uVar3 = local_60" identifier = identifier) ;) })) (expression_statement "*(uint *)(param_1 + 0x48) = uVar7;" (assignment_expression "*(uint *)(param_1 + 0x48) = uVar7" (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_1 + 0x4c) = uVar6;" (assignment_expression "*(uint *)(param_1 + 0x4c) = uVar6" (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = identifier) ;) (while_statement "while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }" while (parenthesized_expression "((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0)" ( (binary_expression "(SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0" (parenthesized_expression "(SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9)))" ( (binary_expression "SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))" (call_expression "SBORROW4(uVar6,uVar3)" identifier (argument_list "(uVar6,uVar3)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))" identifier (argument_list "(uVar6 - uVar3,(uint)(uVar7 < uVar9))" ( (binary_expression "uVar6 - uVar3" identifier - identifier) , (call_expression "(uint)(uVar7 < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < uVar9)" ( (binary_expression "uVar7 < uVar9" identifier < identifier) ))) )))) )) != (binary_expression "(int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0" (cast_expression "(int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar6 - uVar3) - (uint)(uVar7 < uVar9))" ( (binary_expression "(uVar6 - uVar3) - (uint)(uVar7 < uVar9)" (parenthesized_expression "(uVar6 - uVar3)" ( (binary_expression "uVar6 - uVar3" identifier - identifier) )) - (call_expression "(uint)(uVar7 < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < uVar9)" ( (binary_expression "uVar7 < uVar9" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }" { (expression_statement "local_58 = FUN_0007bf20(1,1);" (assignment_expression "local_58 = FUN_0007bf20(1,1)" identifier = (call_expression "FUN_0007bf20(1,1)" identifier (argument_list "(1,1)" ( number_literal , number_literal )))) ;) (if_statement "if (local_58 != 0) goto LAB_0007c4c8;" if (parenthesized_expression "(local_58 != 0)" ( (binary_expression "local_58 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007c4c8;" goto statement_identifier ;)) (expression_statement "uVar7 = *(uint *)(param_1 + 0x48);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x48)" identifier = (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = *(uint *)(param_1 + 0x4c);" (assignment_expression "uVar6 = *(uint *)(param_1 + 0x4c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) })) (if_statement "if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;" if (parenthesized_expression "((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0)" ( (binary_expression "(SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0" (parenthesized_expression "(SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64)))" ( (binary_expression "SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))" (call_expression "SBORROW4(uVar6,local_60)" identifier (argument_list "(uVar6,local_60)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))" identifier (argument_list "(uVar6 - local_60,(uint)(uVar7 < local_64))" ( (binary_expression "uVar6 - local_60" identifier - identifier) , (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < local_64)" ( (binary_expression "uVar7 < local_64" identifier < identifier) ))) )))) )) != (binary_expression "(int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0" (cast_expression "(int)((uVar6 - local_60) - (uint)(uVar7 < local_64))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar6 - local_60) - (uint)(uVar7 < local_64))" ( (binary_expression "(uVar6 - local_60) - (uint)(uVar7 < local_64)" (parenthesized_expression "(uVar6 - local_60)" ( (binary_expression "uVar6 - local_60" identifier - identifier) )) - (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < local_64)" ( (binary_expression "uVar7 < local_64" identifier < identifier) )))) ))) < number_literal)) )) (goto_statement "goto LAB_0007c431;" goto statement_identifier ;)) (labeled_statement "LAB_0007c5b6:\n        uVar7 = local_44[6];" statement_identifier : (expression_statement "uVar7 = local_44[6];" (assignment_expression "uVar7 = local_44[6]" identifier = (subscript_expression "local_44[6]" identifier [ number_literal ])) ;)) (expression_statement "uVar6 = *(int *)(param_1 + 0x94) + 4;" (assignment_expression "uVar6 = *(int *)(param_1 + 0x94) + 4" identifier = (binary_expression "*(int *)(param_1 + 0x94) + 4" (pointer_expression "*(int *)(param_1 + 0x94)" * (cast_expression "(int *)(param_1 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;" (assignment_expression "lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7" identifier = (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar7" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "local_2c = (undefined4)lVar2;" (assignment_expression "local_2c = (undefined4)lVar2" identifier = (cast_expression "(undefined4)lVar2" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0xd4);" (assignment_expression "iVar8 = *(int *)(param_1 + 0xd4)" identifier = (pointer_expression "*(int *)(param_1 + 0xd4)" * (cast_expression "(int *)(param_1 + 0xd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd4)" ( (binary_expression "param_1 + 0xd4" identifier + number_literal) ))))) ;) (expression_statement "local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;" (assignment_expression "local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7" identifier = (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + (binary_expression "((int)uVar6 >> 0x1f) * uVar7" (parenthesized_expression "((int)uVar6 >> 0x1f)" ( (binary_expression "(int)uVar6 >> 0x1f" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * identifier))) ;) (if_statement "if (iVar8 != 0) goto LAB_0007c4fc;" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007c4fc;" goto statement_identifier ;)) }) (else_clause "else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }" else (compound_statement "{\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }" { (expression_statement "*(undefined4 *)(param_1 + 0x48) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x48) = 0" (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" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = number_literal) ;) (if_statement "if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;" if (parenthesized_expression "((int)(uint)(local_64 != 0) <= (int)-local_60)" ( (binary_expression "(int)(uint)(local_64 != 0) <= (int)-local_60" (cast_expression "(int)(uint)(local_64 != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(local_64 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_64 != 0)" ( (binary_expression "local_64 != 0" identifier != number_literal) )))) <= (cast_expression "(int)-local_60" ( (type_descriptor "int" primitive_type) ) (unary_expression "-local_60" - identifier))) )) (goto_statement "goto LAB_0007c5b6;" goto statement_identifier ;)) (labeled_statement "LAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;" statement_identifier : (labeled_statement "LAB_0007c450:\n        local_30 = 0;" statement_identifier : (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;))) (expression_statement "local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);" (assignment_expression "local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c)" identifier = (call_expression "FUN_0003bf80(local_64,local_60,&local_30,&local_2c)" identifier (argument_list "(local_64,local_60,&local_30,&local_2c)" ( identifier , identifier , (pointer_expression "&local_30" & identifier) , (pointer_expression "&local_2c" & identifier) )))) ;) (if_statement "if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (compound_statement "{\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }" { (if_statement "if (local_58 != 0) goto LAB_0007c4bc;" if (parenthesized_expression "(local_58 != 0)" ( (binary_expression "local_58 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007c4bc;" goto statement_identifier ;)) (expression_statement "uVar7 = *(uint *)(param_1 + 0x48);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x48)" identifier = (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;" statement_identifier : (if_statement "if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;" if (parenthesized_expression "((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0)" ( (binary_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0" (parenthesized_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))" ( (binary_expression "SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))" (call_expression "SBORROW4(iVar8,local_60)" identifier (argument_list "(iVar8,local_60)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))" identifier (argument_list "(iVar8 - local_60,(uint)(uVar7 < local_64))" ( (binary_expression "iVar8 - local_60" identifier - identifier) , (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < local_64)" ( (binary_expression "uVar7 < local_64" identifier < identifier) ))) )))) )) == (binary_expression "(int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0" (cast_expression "(int)((iVar8 - local_60) - (uint)(uVar7 < local_64))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar8 - local_60) - (uint)(uVar7 < local_64))" ( (binary_expression "(iVar8 - local_60) - (uint)(uVar7 < local_64)" (parenthesized_expression "(iVar8 - local_60)" ( (binary_expression "iVar8 - local_60" identifier - identifier) )) - (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < local_64)" ( (binary_expression "uVar7 < local_64" identifier < identifier) )))) ))) < number_literal)) )) (goto_statement "goto LAB_0007c5aa;" goto statement_identifier ;))) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));" do (compound_statement "{\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          }" { (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "local_58 = FUN_0007bf20(1,1);" (assignment_expression "local_58 = FUN_0007bf20(1,1)" identifier = (call_expression "FUN_0007bf20(1,1)" identifier (argument_list "(1,1)" ( number_literal , number_literal )))) ;) (if_statement "if (local_58 != 0) goto LAB_0007c4bc;" if (parenthesized_expression "(local_58 != 0)" ( (binary_expression "local_58 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007c4bc;" goto statement_identifier ;)) (expression_statement "uVar7 = *(uint *)(param_1 + 0x48);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x48)" identifier = (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0))" ( (binary_expression "(uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0)" (parenthesized_expression "(uVar6 < local_30)" ( (binary_expression "uVar6 < local_30" identifier < identifier) )) && (parenthesized_expression "((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0)" ( (binary_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0" (parenthesized_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))" ( (binary_expression "SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))" (call_expression "SBORROW4(iVar8,local_60)" identifier (argument_list "(iVar8,local_60)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))" identifier (argument_list "(iVar8 - local_60,(uint)(uVar7 < local_64))" ( (binary_expression "iVar8 - local_60" identifier - identifier) , (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < local_64)" ( (binary_expression "uVar7 < local_64" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0" (cast_expression "(int)((iVar8 - local_60) - (uint)(uVar7 < local_64))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar8 - local_60) - (uint)(uVar7 < local_64))" ( (binary_expression "(iVar8 - local_60) - (uint)(uVar7 < local_64)" (parenthesized_expression "(iVar8 - local_60)" ( (binary_expression "iVar8 - local_60" identifier - identifier) )) - (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < local_64)" ( (binary_expression "uVar7 < local_64" identifier < identifier) )))) ))) < number_literal)) ))) )) ;) (labeled_statement "LAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;" statement_identifier : (if_statement "if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;" if (parenthesized_expression "((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0)" ( (binary_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0" (parenthesized_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))" ( (binary_expression "SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))" (call_expression "SBORROW4(iVar8,local_60)" identifier (argument_list "(iVar8,local_60)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))" identifier (argument_list "(iVar8 - local_60,(uint)(uVar7 < local_64))" ( (binary_expression "iVar8 - local_60" identifier - identifier) , (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < local_64)" ( (binary_expression "uVar7 < local_64" identifier < identifier) ))) )))) )) == (binary_expression "(int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0" (cast_expression "(int)((iVar8 - local_60) - (uint)(uVar7 < local_64))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar8 - local_60) - (uint)(uVar7 < local_64))" ( (binary_expression "(iVar8 - local_60) - (uint)(uVar7 < local_64)" (parenthesized_expression "(iVar8 - local_60)" ( (binary_expression "iVar8 - local_60" identifier - identifier) )) - (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < local_64)" ( (binary_expression "uVar7 < local_64" identifier < identifier) )))) ))) < number_literal)) )) (goto_statement "goto LAB_0007c5aa;" goto statement_identifier ;))) (goto_statement "goto LAB_0007c450;" goto statement_identifier ;) })) (expression_statement "uVar7 = *(uint *)(param_1 + 0x48);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x48)" identifier = (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7)" ( (binary_expression "*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7" (binary_expression "*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8" (binary_expression "*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50))" (pointer_expression "*(int *)(param_1 + 0x54)" * (cast_expression "(int *)(param_1 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) + (cast_expression "(uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50))" identifier (argument_list "(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50))" ( (pointer_expression "*(uint *)(param_1 + 0x90)" * (cast_expression "(uint *)(param_1 + 0x90)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x90)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) )))) , (pointer_expression "*(uint *)(param_1 + 0x50)" * (cast_expression "(uint *)(param_1 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) ))))) == identifier) && (binary_expression "*(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7" (binary_expression "*(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50)" (pointer_expression "*(uint *)(param_1 + 0x90)" * (cast_expression "(uint *)(param_1 + 0x90)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x90)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) )))) + (pointer_expression "*(uint *)(param_1 + 0x50)" * (cast_expression "(uint *)(param_1 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) == identifier)) )) (compound_statement "{\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }" { (expression_statement "iVar4 = *(int *)(param_1 + 0x94) + 8;" (assignment_expression "iVar4 = *(int *)(param_1 + 0x94) + 8" identifier = (binary_expression "*(int *)(param_1 + 0x94) + 8" (pointer_expression "*(int *)(param_1 + 0x94)" * (cast_expression "(int *)(param_1 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);" (assignment_expression "local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f)" identifier = (call_expression "FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f)" identifier (argument_list "(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f)" ( (binary_expression "local_64 - uVar7" identifier - identifier) , (binary_expression "(local_60 - iVar8) - (uint)(local_64 < uVar7)" (parenthesized_expression "(local_60 - iVar8)" ( (binary_expression "local_60 - iVar8" identifier - identifier) )) - (call_expression "(uint)(local_64 < uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_64 < uVar7)" ( (binary_expression "local_64 < uVar7" identifier < identifier) )))) , identifier , (binary_expression "iVar4 >> 0x1f" identifier >> number_literal) )))) ;) (if_statement "if (local_58 != 0) goto LAB_0007c4bc;" if (parenthesized_expression "(local_58 != 0)" ( (binary_expression "local_58 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007c4bc;" goto statement_identifier ;)) (if_statement "if (local_30 != 0) goto LAB_0007c6f6;" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007c6f6;" goto statement_identifier ;)) (goto_statement "goto LAB_0007c598;" goto statement_identifier ;) })) (if_statement "if (local_58 == 0) goto LAB_0007c598;" if (parenthesized_expression "(local_58 == 0)" ( (binary_expression "local_58 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0007c598;" goto statement_identifier ;)) (labeled_statement "LAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;" statement_identifier : (if_statement "if (local_44 == (uint *)0x0) goto LAB_0007c629;" if (parenthesized_expression "(local_44 == (uint *)0x0)" ( (binary_expression "local_44 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0007c629;" goto statement_identifier ;))) (labeled_statement "LAB_0007c4c8:\n        uVar7 = local_44[6];" statement_identifier : (expression_statement "uVar7 = local_44[6];" (assignment_expression "uVar7 = local_44[6]" identifier = (subscript_expression "local_44[6]" identifier [ number_literal ])) ;)) (expression_statement "uVar6 = *(int *)(param_1 + 0x94) + 4;" (assignment_expression "uVar6 = *(int *)(param_1 + 0x94) + 4" identifier = (binary_expression "*(int *)(param_1 + 0x94) + 4" (pointer_expression "*(int *)(param_1 + 0x94)" * (cast_expression "(int *)(param_1 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;" (assignment_expression "lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7" identifier = (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar7" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "local_2c = (undefined4)lVar2;" (assignment_expression "local_2c = (undefined4)lVar2" identifier = (cast_expression "(undefined4)lVar2" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0xd4);" (assignment_expression "iVar8 = *(int *)(param_1 + 0xd4)" identifier = (pointer_expression "*(int *)(param_1 + 0xd4)" * (cast_expression "(int *)(param_1 + 0xd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd4)" ( (binary_expression "param_1 + 0xd4" identifier + number_literal) ))))) ;) (expression_statement "local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;" (assignment_expression "local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7" identifier = (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + (binary_expression "((int)uVar6 >> 0x1f) * uVar7" (parenthesized_expression "((int)uVar6 >> 0x1f)" ( (binary_expression "(int)uVar6 >> 0x1f" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * identifier))) ;) (if_statement "if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }" { (labeled_statement "LAB_0007c629:\n          FUN_00027250();" statement_identifier : (expression_statement "FUN_00027250();" (call_expression "FUN_00027250()" identifier (argument_list "()" ( ))) ;)) (goto_statement "goto LAB_0007c632;" goto statement_identifier ;) })) (labeled_statement "LAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }" statement_identifier : (if_statement "if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }" if (parenthesized_expression "(local_44[10] == *(uint *)(iVar8 + 0x70))" ( (binary_expression "local_44[10] == *(uint *)(iVar8 + 0x70)" (subscript_expression "local_44[10]" identifier [ number_literal ]) == (pointer_expression "*(uint *)(iVar8 + 0x70)" * (cast_expression "(uint *)(iVar8 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x70)" ( (binary_expression "iVar8 + 0x70" identifier + number_literal) ))))) )) (compound_statement "{\n          uVar6 = local_44[7];\n        }" { (expression_statement "uVar6 = local_44[7];" (assignment_expression "uVar6 = local_44[7]" identifier = (subscript_expression "local_44[7]" identifier [ number_literal ])) ;) }) (else_clause "else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }" else (compound_statement "{\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }" { (expression_statement "local_44[7] = 0;" (assignment_expression "local_44[7] = 0" (subscript_expression "local_44[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_44[10] = *(uint *)(iVar8 + 0x70);" (assignment_expression "local_44[10] = *(uint *)(iVar8 + 0x70)" (subscript_expression "local_44[10]" identifier [ number_literal ]) = (pointer_expression "*(uint *)(iVar8 + 0x70)" * (cast_expression "(uint *)(iVar8 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x70)" ( (binary_expression "iVar8 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) })))) (if_statement "if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }" if (parenthesized_expression "(uVar6 < *(uint *)(iVar8 + 0x44))" ( (binary_expression "uVar6 < *(uint *)(iVar8 + 0x44)" identifier < (pointer_expression "*(uint *)(iVar8 + 0x44)" * (cast_expression "(uint *)(iVar8 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x44)" ( (binary_expression "iVar8 + 0x44" identifier + number_literal) ))))) )) (compound_statement "{\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }" { (expression_statement "*(uint *)(iVar8 + 0x44) = uVar6;" (assignment_expression "*(uint *)(iVar8 + 0x44) = uVar6" (pointer_expression "*(uint *)(iVar8 + 0x44)" * (cast_expression "(uint *)(iVar8 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x44)" ( (binary_expression "iVar8 + 0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(iVar8 + 0x4c) = local_44[8];" (assignment_expression "*(uint *)(iVar8 + 0x4c) = local_44[8]" (pointer_expression "*(uint *)(iVar8 + 0x4c)" * (cast_expression "(uint *)(iVar8 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x4c)" ( (binary_expression "iVar8 + 0x4c" identifier + number_literal) )))) = (subscript_expression "local_44[8]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(iVar8 + 0x50) = local_44[9];" (assignment_expression "*(uint *)(iVar8 + 0x50) = local_44[9]" (pointer_expression "*(uint *)(iVar8 + 0x50)" * (cast_expression "(uint *)(iVar8 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x50)" ( (binary_expression "iVar8 + 0x50" identifier + number_literal) )))) = (subscript_expression "local_44[9]" identifier [ number_literal ])) ;) (expression_statement "FUN_00067d50();" (call_expression "FUN_00067d50()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar7 = local_44[6];" (assignment_expression "uVar7 = local_44[6]" identifier = (subscript_expression "local_44[6]" identifier [ number_literal ])) ;) })) }))) (if_statement "if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }" if (parenthesized_expression "(uVar7 < *(uint *)(param_1 + 0x34))" ( (binary_expression "uVar7 < *(uint *)(param_1 + 0x34)" identifier < (pointer_expression "*(uint *)(param_1 + 0x34)" * (cast_expression "(uint *)(param_1 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) )) (compound_statement "{\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }" { (do_statement "do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));" do (compound_statement "{\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        }" { (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "local_58 = FUN_0007bf20(0,1);" (assignment_expression "local_58 = FUN_0007bf20(0,1)" identifier = (call_expression "FUN_0007bf20(0,1)" identifier (argument_list "(0,1)" ( number_literal , number_literal )))) ;) (if_statement "if (local_58 != 0) goto LAB_0007c629;" if (parenthesized_expression "(local_58 != 0)" ( (binary_expression "local_58 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007c629;" goto statement_identifier ;)) }) while (parenthesized_expression "(uVar7 < *(uint *)(param_1 + 0x34))" ( (binary_expression "uVar7 < *(uint *)(param_1 + 0x34)" identifier < (pointer_expression "*(uint *)(param_1 + 0x34)" * (cast_expression "(uint *)(param_1 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) )) ;) })) (goto_statement "goto LAB_0007c6c0;" goto statement_identifier ;) })) (if_statement "if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }" if (parenthesized_expression "(**(int **)(param_1 + 0x40) != 0)" ( (binary_expression "**(int **)(param_1 + 0x40) != 0" (pointer_expression "**(int **)(param_1 + 0x40)" * (pointer_expression "*(int **)(param_1 + 0x40)" * (cast_expression "(int **)(param_1 + 0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) != number_literal) )) (compound_statement "{\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }" { (if_statement "if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;" if (parenthesized_expression "((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0))" ( (binary_expression "(iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)" (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "(local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)" ( (comma_expression "local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0" (assignment_expression "local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c)" identifier = (cast_expression "(uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c)" ( (binary_expression "*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c" (binary_expression "*(int *)(param_1 + 0x5c) + -0x2c" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) + number_literal) + (binary_expression "iVar4 * 0x2c" identifier * number_literal)) )))) , (binary_expression "local_44 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_0007c3bd;" goto statement_identifier ;)) (expression_statement "local_64 = *(uint *)(param_1 + 0x48);" (assignment_expression "local_64 = *(uint *)(param_1 + 0x48)" identifier = (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "local_44 = (uint *)0x0;" (assignment_expression "local_44 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_60 = *(uint *)(param_1 + 0x4c);" (assignment_expression "local_60 = *(uint *)(param_1 + 0x4c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x48) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x48) = 0" (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" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);" (assignment_expression "*(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c)" (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x1c)" * (cast_expression "(undefined4 *)(param_1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);" (assignment_expression "*(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc)" (pointer_expression "*(undefined1 *)(param_1 + 0x12)" * (cast_expression "(undefined1 *)(param_1 + 0x12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x12)" ( (binary_expression "param_1 + 0x12" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(param_1 + 0xc)" * (cast_expression "(undefined1 *)(param_1 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = number_literal) ;) (if_statement "if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;" if (parenthesized_expression "((int)(uint)(local_64 != 0) <= (int)-local_60)" ( (binary_expression "(int)(uint)(local_64 != 0) <= (int)-local_60" (cast_expression "(int)(uint)(local_64 != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(local_64 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_64 != 0)" ( (binary_expression "local_64 != 0" identifier != number_literal) )))) <= (cast_expression "(int)-local_60" ( (type_descriptor "int" primitive_type) ) (unary_expression "-local_60" - identifier))) )) (goto_statement "goto LAB_0007c6c0;" goto statement_identifier ;)) (goto_statement "goto LAB_0007c431;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0007c6d7:\n  local_58 = 0;" statement_identifier : (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_0007c632:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }" { comment (expression_statement "FUN_000f6410();" (call_expression "FUN_000f6410()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return local_58;" return identifier ;) (labeled_statement "LAB_0007c5aa:\n  if (local_44 != (uint *)0x0) goto LAB_0007c5b6;" statement_identifier : (if_statement "if (local_44 != (uint *)0x0) goto LAB_0007c5b6;" if (parenthesized_expression "(local_44 != (uint *)0x0)" ( (binary_expression "local_44 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0007c5b6;" goto statement_identifier ;))) (labeled_statement "LAB_0007c6c0:\n  FUN_00027250();" statement_identifier : (expression_statement "FUN_00027250();" (call_expression "FUN_00027250()" identifier (argument_list "()" ( ))) ;)) (expression_statement "*(uint *)(param_1 + 0x48) = local_64;" (assignment_expression "*(uint *)(param_1 + 0x48) = local_64" (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_1 + 0x4c) = local_60;" (assignment_expression "*(uint *)(param_1 + 0x4c) = local_60" (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0007c6d7;" goto statement_identifier ;) })))
(translation_unit "int __regparm3 sqlite3PagerSavepoint(Pager *pPager,int op,int iSavepoint)\n\n{\n  uint uVar1;\n  sqlite3_io_methods *psVar2;\n  PCache *pPVar3;\n  PgHdr *pPVar4;\n  u32 *puVar5;\n  longlong lVar6;\n  int iVar7;\n  int iVar8;\n  uint uVar9;\n  Wal *pWVar10;\n  PgHdr *pPVar11;\n  u32 **ppuVar12;\n  int extraout_ECX;\n  int extraout_EDX;\n  u32 uVar13;\n  Pgno PVar14;\n  uint uVar15;\n  int iVar16;\n  int unaff_EDI;\n  int iVar17;\n  int in_GS_OFFSET;\n  bool bVar18;\n  u32 *in_stack_ffffff8c;\n  u64 in_stack_ffffff94;\n  uint local_64;\n  int local_60;\n  Bitvec *local_5c;\n  int local_58;\n  PagerSavepoint *local_44;\n  u32 nJRec;\n  u32 dummy;\n  int local_28;\n  int local_20;\n  \n  __x86_get_pc_thunk_di();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar8 = (uint)(extraout_EDX != 1) + extraout_ECX;\n  if (iVar8 < pPager->nSavepoint) {\n    iVar17 = iVar8 * 0x2c;\n    iVar16 = iVar8;\n    do {\n      iVar16 = iVar16 + 1;\n      iVar7 = iVar17 + -0xc;\n      iVar17 = iVar17 + 0x2c;\n      sqlite3BitvecDestroy(*(Bitvec **)((int)pPager->aSavepoint->aWalData + iVar7));\n    } while (iVar16 < pPager->nSavepoint);\n  }\n  pPager->nSavepoint = iVar8;\n  if (extraout_EDX != 1) {\n    pWVar10 = pPager->pWal;\n    if (pWVar10 != (Wal *)0x0) {\n      if ((iVar8 == 0) ||\n         (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 == (PagerSavepoint *)0x0)) {\n        bVar18 = true;\n        local_58 = 0;\n        pPager->dbSize = pPager->dbOrigSize;\n        pPager->changeCountDone = pPager->tempFile;\n        if (pWVar10->writeLock != '\0') {\n          ppuVar12 = pWVar10->apWiData;\n          uVar9 = (pWVar10->hdr).mxFrame;\n          puVar5 = *ppuVar12;\n          (pWVar10->hdr).iVersion = *puVar5;\n          (pWVar10->hdr).unused = puVar5[1];\n          (pWVar10->hdr).iChange = puVar5[2];\n          uVar13 = puVar5[3];\n          (pWVar10->hdr).isInit = (char)uVar13;\n          (pWVar10->hdr).bigEndCksum = (char)(uVar13 >> 8);\n          (pWVar10->hdr).szPage = (short)(uVar13 >> 0x10);\n          (pWVar10->hdr).mxFrame = puVar5[4];\n          (pWVar10->hdr).nPage = puVar5[5];\n          (pWVar10->hdr).aFrameCksum[0] = puVar5[6];\n          (pWVar10->hdr).aFrameCksum[1] = puVar5[7];\n          (pWVar10->hdr).aSalt[0] = puVar5[8];\n          (pWVar10->hdr).aSalt[1] = puVar5[9];\n          (pWVar10->hdr).aCksum[0] = puVar5[10];\n          uVar13 = (pWVar10->hdr).mxFrame;\n          (pWVar10->hdr).aCksum[1] = puVar5[0xb];\n          if (uVar13 + 1 <= uVar9) {\n            uVar15 = uVar13 + 0x22;\n            while( true ) {\n              if (uVar15 < 0x1000) {\n                uVar13 = (*ppuVar12)[uVar15];\n              }\n              else {\n                uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];\n              }\n              local_58 = pagerUndoCallback(pPager,uVar13);\n              uVar1 = uVar15 - 0x20;\n              bVar18 = local_58 == 0;\n              uVar15 = uVar15 + 1;\n              if (uVar9 < uVar1 || !bVar18) break;\n              ppuVar12 = pWVar10->apWiData;\n            }\n            uVar13 = (pWVar10->hdr).mxFrame;\n          }\n          if (uVar9 != uVar13) {\n            walCleanupHash(pWVar10);\n          }\n        }\n        pPVar3 = pPager->pPCache;\n        pPVar11 = pPVar3->pDirty;\n        if (pPVar11 != (PgHdr *)0x0) {\n          do {\n            pPVar4 = pPVar11->pDirtyNext;\n            pPVar11->pDirty = pPVar4;\n            pPVar11 = pPVar4;\n          } while (pPVar4 != (PgHdr *)0x0);\n          pPVar11 = pPVar3->pDirty;\n        }\n        pPVar11 = pcacheSortDirtyList(pPVar11);\n        if ((pPVar11 != (PgHdr *)0x0) && (bVar18)) {\n          do {\n            pPVar4 = pPVar11->pDirty;\n            local_58 = pagerUndoCallback(pPager,pPVar11->pgno);\n            if (pPVar4 == (PgHdr *)0x0) break;\n            pPVar11 = pPVar4;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      PVar14 = local_44->nOrig;\n      local_5c = (Bitvec *)sqlite3MallocZero(in_stack_ffffff94);\n      local_58 = 7;\n      if (local_5c == (Bitvec *)0x0) goto LAB_0007c632;\n      local_5c->iSize = PVar14;\n      local_60 = *(int *)((int)&pPager->journalOff + 4);\n      pPager->dbSize = local_44->nOrig;\n      pPager->changeCountDone = pPager->tempFile;\n      local_64 = (uint)pPager->journalOff;\n      if (pPager->pWal == (Wal *)0x0) {\n        iVar8 = *(int *)((int)&local_44->iHdrOffset + 4);\n        uVar9 = (uint)local_44->iHdrOffset;\n        uVar15 = (uint)local_44->iOffset;\n        iVar16 = *(int *)((int)&local_44->iOffset + 4);\n        if (iVar8 == 0 && uVar9 == 0) {\n          uVar9 = local_64;\n          iVar8 = local_60;\n        }\n        *(uint *)&pPager->journalOff = uVar15;\n        *(int *)((int)&pPager->journalOff + 4) = iVar16;\n        while ((SBORROW4(iVar16,iVar8) != SBORROW4(iVar16 - iVar8,(uint)(uVar15 < uVar9))) !=\n               (int)((iVar16 - iVar8) - (uint)(uVar15 < uVar9)) < 0) {\n          local_58 = pager_playback_one_page\n                               (pPager,&pPager->journalOff,(Bitvec *)0x1,1,(int)in_stack_ffffff8c);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar15 = (uint)pPager->journalOff;\n          iVar16 = *(int *)((int)&pPager->journalOff + 4);\n        }\n        if ((SBORROW4(iVar16,local_60) != SBORROW4(iVar16 - local_60,(uint)(uVar15 < local_64))) !=\n            (int)((iVar16 - local_60) - (uint)(uVar15 < local_64)) < 0) goto LAB_0007c431;\n      }\n      else {\n        *(undefined4 *)&pPager->journalOff = 0;\n        *(undefined4 *)((int)&pPager->journalOff + 4) = 0;\n        if (-local_60 < (int)(uint)(local_64 != 0)) {\nLAB_0007c431:\n          do {\n            nJRec = 0;\n            in_stack_ffffff8c = &nJRec;\n            local_58 = readJournalHdr(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy);\n            if (nJRec != 0) {\n              if (local_58 != 0) {\nLAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;\n                goto LAB_0007c629;\n              }\n              uVar9 = (uint)pPager->journalOff;\n              iVar8 = *(int *)((int)&pPager->journalOff + 4);\nLAB_0007c6f6:\n              if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }\n              break;\n            }\n            uVar9 = (uint)pPager->journalOff;\n            iVar8 = *(int *)((int)&pPager->journalOff + 4);\n            if (*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8 &&\n                pPager->sectorSize + (int)pPager->journalHdr == uVar9) {\n              in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8);\n              nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);\n              if (local_58 == 0) {\n                if (nJRec != 0) goto LAB_0007c6f6;\n                goto LAB_0007c598;\n              }\n              goto LAB_0007c4bc;\n            }\n            if (local_58 != 0) goto LAB_0007c4bc;\nLAB_0007c598:\n          } while ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0);\n          if (local_44 == (PagerSavepoint *)0x0) goto LAB_0007c6c0;\n        }\n      }\n      PVar14 = local_44->iSubRec;\n      uVar9 = pPager->pageSize + 4;\n      lVar6 = (ulonglong)uVar9 * (ulonglong)PVar14;\n      dummy = (u32)lVar6;\n      pWVar10 = pPager->pWal;\n      local_28 = (int)((ulonglong)lVar6 >> 0x20) + ((int)uVar9 >> 0x1f) * PVar14;\n      if (pWVar10 != (Wal *)0x0) goto LAB_0007c4fc;\n      goto LAB_0007c5ea;\n    }\n    if (pPager->jfd->pMethods == (sqlite3_io_methods *)0x0) goto LAB_0007c6d7;\n    if ((iVar8 != 0) &&\n       (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 != (PagerSavepoint *)0x0))\n    goto LAB_0007c3bd;\n    local_64 = (uint)pPager->journalOff;\n    local_44 = (PagerSavepoint *)0x0;\n    local_60 = *(int *)((int)&pPager->journalOff + 4);\n    *(undefined4 *)&pPager->journalOff = 0;\n    pPager->dbSize = pPager->dbOrigSize;\n    pPager->changeCountDone = pPager->tempFile;\n    *(undefined4 *)((int)&pPager->journalOff + 4) = 0;\n    local_5c = (Bitvec *)0x0;\n    if (-local_60 < (int)(uint)(local_64 != 0)) goto LAB_0007c431;\n    goto LAB_0007c6c0;\n  }\n  if (iVar8 == 0) {\n    psVar2 = pPager->sjfd->pMethods;\n    local_58 = 0;\n    if (psVar2 != (sqlite3_io_methods *)0x0) {\n      if (psVar2 == (sqlite3_io_methods *)(unaff_EDI + 0xce457)) {\n        local_58 = memjrnlTruncate(pPager->sjfd,0);\n      }\n      pPager->nSubRec = 0;\n    }\n    goto LAB_0007c632;\n  }\nLAB_0007c6d7:\n  local_58 = 0;\nLAB_0007c632:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_58;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\nLAB_0007c4c8:\n  PVar14 = local_44->iSubRec;\n  uVar9 = pPager->pageSize + 4;\n  lVar6 = (ulonglong)uVar9 * (ulonglong)PVar14;\n  dummy = (u32)lVar6;\n  pWVar10 = pPager->pWal;\n  local_28 = (int)((ulonglong)lVar6 >> 0x20) + ((int)uVar9 >> 0x1f) * PVar14;\n  if (pWVar10 == (Wal *)0x0) {\nLAB_0007c629:\n    sqlite3BitvecDestroy(local_5c);\n    goto LAB_0007c632;\n  }\nLAB_0007c4fc:\n  if (local_44->aWalData[3] == pWVar10->nCkpt) {\n    uVar13 = local_44->aWalData[0];\n  }\n  else {\n    local_44->aWalData[0] = 0;\n    local_44->aWalData[3] = pWVar10->nCkpt;\n    uVar13 = 0;\n  }\n  if (uVar13 < (pWVar10->hdr).mxFrame) {\n    (pWVar10->hdr).mxFrame = uVar13;\n    (pWVar10->hdr).aFrameCksum[0] = local_44->aWalData[1];\n    (pWVar10->hdr).aFrameCksum[1] = local_44->aWalData[2];\n    walCleanupHash(pWVar10);\n    PVar14 = local_44->iSubRec;\n  }\nLAB_0007c5ea:\n  if (PVar14 < pPager->nSubRec) {\n    do {\n      PVar14 = PVar14 + 1;\n      local_58 = pager_playback_one_page\n                           (pPager,(i64 *)&dummy,(Bitvec *)0x0,1,(int)in_stack_ffffff8c);\n      if (local_58 != 0) goto LAB_0007c629;\n    } while (PVar14 < pPager->nSubRec);\n  }\nLAB_0007c6c0:\n  sqlite3BitvecDestroy(local_5c);\n  *(uint *)&pPager->journalOff = local_64;\n  *(int *)((int)&pPager->journalOff + 4) = local_60;\n  goto LAB_0007c6d7;\n}\n\n" (function_definition "int __regparm3 sqlite3PagerSavepoint(Pager *pPager,int op,int iSavepoint)\n\n{\n  uint uVar1;\n  sqlite3_io_methods *psVar2;\n  PCache *pPVar3;\n  PgHdr *pPVar4;\n  u32 *puVar5;\n  longlong lVar6;\n  int iVar7;\n  int iVar8;\n  uint uVar9;\n  Wal *pWVar10;\n  PgHdr *pPVar11;\n  u32 **ppuVar12;\n  int extraout_ECX;\n  int extraout_EDX;\n  u32 uVar13;\n  Pgno PVar14;\n  uint uVar15;\n  int iVar16;\n  int unaff_EDI;\n  int iVar17;\n  int in_GS_OFFSET;\n  bool bVar18;\n  u32 *in_stack_ffffff8c;\n  u64 in_stack_ffffff94;\n  uint local_64;\n  int local_60;\n  Bitvec *local_5c;\n  int local_58;\n  PagerSavepoint *local_44;\n  u32 nJRec;\n  u32 dummy;\n  int local_28;\n  int local_20;\n  \n  __x86_get_pc_thunk_di();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar8 = (uint)(extraout_EDX != 1) + extraout_ECX;\n  if (iVar8 < pPager->nSavepoint) {\n    iVar17 = iVar8 * 0x2c;\n    iVar16 = iVar8;\n    do {\n      iVar16 = iVar16 + 1;\n      iVar7 = iVar17 + -0xc;\n      iVar17 = iVar17 + 0x2c;\n      sqlite3BitvecDestroy(*(Bitvec **)((int)pPager->aSavepoint->aWalData + iVar7));\n    } while (iVar16 < pPager->nSavepoint);\n  }\n  pPager->nSavepoint = iVar8;\n  if (extraout_EDX != 1) {\n    pWVar10 = pPager->pWal;\n    if (pWVar10 != (Wal *)0x0) {\n      if ((iVar8 == 0) ||\n         (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 == (PagerSavepoint *)0x0)) {\n        bVar18 = true;\n        local_58 = 0;\n        pPager->dbSize = pPager->dbOrigSize;\n        pPager->changeCountDone = pPager->tempFile;\n        if (pWVar10->writeLock != '\0') {\n          ppuVar12 = pWVar10->apWiData;\n          uVar9 = (pWVar10->hdr).mxFrame;\n          puVar5 = *ppuVar12;\n          (pWVar10->hdr).iVersion = *puVar5;\n          (pWVar10->hdr).unused = puVar5[1];\n          (pWVar10->hdr).iChange = puVar5[2];\n          uVar13 = puVar5[3];\n          (pWVar10->hdr).isInit = (char)uVar13;\n          (pWVar10->hdr).bigEndCksum = (char)(uVar13 >> 8);\n          (pWVar10->hdr).szPage = (short)(uVar13 >> 0x10);\n          (pWVar10->hdr).mxFrame = puVar5[4];\n          (pWVar10->hdr).nPage = puVar5[5];\n          (pWVar10->hdr).aFrameCksum[0] = puVar5[6];\n          (pWVar10->hdr).aFrameCksum[1] = puVar5[7];\n          (pWVar10->hdr).aSalt[0] = puVar5[8];\n          (pWVar10->hdr).aSalt[1] = puVar5[9];\n          (pWVar10->hdr).aCksum[0] = puVar5[10];\n          uVar13 = (pWVar10->hdr).mxFrame;\n          (pWVar10->hdr).aCksum[1] = puVar5[0xb];\n          if (uVar13 + 1 <= uVar9) {\n            uVar15 = uVar13 + 0x22;\n            while( true ) {\n              if (uVar15 < 0x1000) {\n                uVar13 = (*ppuVar12)[uVar15];\n              }\n              else {\n                uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];\n              }\n              local_58 = pagerUndoCallback(pPager,uVar13);\n              uVar1 = uVar15 - 0x20;\n              bVar18 = local_58 == 0;\n              uVar15 = uVar15 + 1;\n              if (uVar9 < uVar1 || !bVar18) break;\n              ppuVar12 = pWVar10->apWiData;\n            }\n            uVar13 = (pWVar10->hdr).mxFrame;\n          }\n          if (uVar9 != uVar13) {\n            walCleanupHash(pWVar10);\n          }\n        }\n        pPVar3 = pPager->pPCache;\n        pPVar11 = pPVar3->pDirty;\n        if (pPVar11 != (PgHdr *)0x0) {\n          do {\n            pPVar4 = pPVar11->pDirtyNext;\n            pPVar11->pDirty = pPVar4;\n            pPVar11 = pPVar4;\n          } while (pPVar4 != (PgHdr *)0x0);\n          pPVar11 = pPVar3->pDirty;\n        }\n        pPVar11 = pcacheSortDirtyList(pPVar11);\n        if ((pPVar11 != (PgHdr *)0x0) && (bVar18)) {\n          do {\n            pPVar4 = pPVar11->pDirty;\n            local_58 = pagerUndoCallback(pPager,pPVar11->pgno);\n            if (pPVar4 == (PgHdr *)0x0) break;\n            pPVar11 = pPVar4;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      PVar14 = local_44->nOrig;\n      local_5c = (Bitvec *)sqlite3MallocZero(in_stack_ffffff94);\n      local_58 = 7;\n      if (local_5c == (Bitvec *)0x0) goto LAB_0007c632;\n      local_5c->iSize = PVar14;\n      local_60 = *(int *)((int)&pPager->journalOff + 4);\n      pPager->dbSize = local_44->nOrig;\n      pPager->changeCountDone = pPager->tempFile;\n      local_64 = (uint)pPager->journalOff;\n      if (pPager->pWal == (Wal *)0x0) {\n        iVar8 = *(int *)((int)&local_44->iHdrOffset + 4);\n        uVar9 = (uint)local_44->iHdrOffset;\n        uVar15 = (uint)local_44->iOffset;\n        iVar16 = *(int *)((int)&local_44->iOffset + 4);\n        if (iVar8 == 0 && uVar9 == 0) {\n          uVar9 = local_64;\n          iVar8 = local_60;\n        }\n        *(uint *)&pPager->journalOff = uVar15;\n        *(int *)((int)&pPager->journalOff + 4) = iVar16;\n        while ((SBORROW4(iVar16,iVar8) != SBORROW4(iVar16 - iVar8,(uint)(uVar15 < uVar9))) !=\n               (int)((iVar16 - iVar8) - (uint)(uVar15 < uVar9)) < 0) {\n          local_58 = pager_playback_one_page\n                               (pPager,&pPager->journalOff,(Bitvec *)0x1,1,(int)in_stack_ffffff8c);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar15 = (uint)pPager->journalOff;\n          iVar16 = *(int *)((int)&pPager->journalOff + 4);\n        }\n        if ((SBORROW4(iVar16,local_60) != SBORROW4(iVar16 - local_60,(uint)(uVar15 < local_64))) !=\n            (int)((iVar16 - local_60) - (uint)(uVar15 < local_64)) < 0) goto LAB_0007c431;\n      }\n      else {\n        *(undefined4 *)&pPager->journalOff = 0;\n        *(undefined4 *)((int)&pPager->journalOff + 4) = 0;\n        if (-local_60 < (int)(uint)(local_64 != 0)) {\nLAB_0007c431:\n          do {\n            nJRec = 0;\n            in_stack_ffffff8c = &nJRec;\n            local_58 = readJournalHdr(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy);\n            if (nJRec != 0) {\n              if (local_58 != 0) {\nLAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;\n                goto LAB_0007c629;\n              }\n              uVar9 = (uint)pPager->journalOff;\n              iVar8 = *(int *)((int)&pPager->journalOff + 4);\nLAB_0007c6f6:\n              if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }\n              break;\n            }\n            uVar9 = (uint)pPager->journalOff;\n            iVar8 = *(int *)((int)&pPager->journalOff + 4);\n            if (*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8 &&\n                pPager->sectorSize + (int)pPager->journalHdr == uVar9) {\n              in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8);\n              nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);\n              if (local_58 == 0) {\n                if (nJRec != 0) goto LAB_0007c6f6;\n                goto LAB_0007c598;\n              }\n              goto LAB_0007c4bc;\n            }\n            if (local_58 != 0) goto LAB_0007c4bc;\nLAB_0007c598:\n          } while ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0);\n          if (local_44 == (PagerSavepoint *)0x0) goto LAB_0007c6c0;\n        }\n      }\n      PVar14 = local_44->iSubRec;\n      uVar9 = pPager->pageSize + 4;\n      lVar6 = (ulonglong)uVar9 * (ulonglong)PVar14;\n      dummy = (u32)lVar6;\n      pWVar10 = pPager->pWal;\n      local_28 = (int)((ulonglong)lVar6 >> 0x20) + ((int)uVar9 >> 0x1f) * PVar14;\n      if (pWVar10 != (Wal *)0x0) goto LAB_0007c4fc;\n      goto LAB_0007c5ea;\n    }\n    if (pPager->jfd->pMethods == (sqlite3_io_methods *)0x0) goto LAB_0007c6d7;\n    if ((iVar8 != 0) &&\n       (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 != (PagerSavepoint *)0x0))\n    goto LAB_0007c3bd;\n    local_64 = (uint)pPager->journalOff;\n    local_44 = (PagerSavepoint *)0x0;\n    local_60 = *(int *)((int)&pPager->journalOff + 4);\n    *(undefined4 *)&pPager->journalOff = 0;\n    pPager->dbSize = pPager->dbOrigSize;\n    pPager->changeCountDone = pPager->tempFile;\n    *(undefined4 *)((int)&pPager->journalOff + 4) = 0;\n    local_5c = (Bitvec *)0x0;\n    if (-local_60 < (int)(uint)(local_64 != 0)) goto LAB_0007c431;\n    goto LAB_0007c6c0;\n  }\n  if (iVar8 == 0) {\n    psVar2 = pPager->sjfd->pMethods;\n    local_58 = 0;\n    if (psVar2 != (sqlite3_io_methods *)0x0) {\n      if (psVar2 == (sqlite3_io_methods *)(unaff_EDI + 0xce457)) {\n        local_58 = memjrnlTruncate(pPager->sjfd,0);\n      }\n      pPager->nSubRec = 0;\n    }\n    goto LAB_0007c632;\n  }\nLAB_0007c6d7:\n  local_58 = 0;\nLAB_0007c632:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_58;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\nLAB_0007c4c8:\n  PVar14 = local_44->iSubRec;\n  uVar9 = pPager->pageSize + 4;\n  lVar6 = (ulonglong)uVar9 * (ulonglong)PVar14;\n  dummy = (u32)lVar6;\n  pWVar10 = pPager->pWal;\n  local_28 = (int)((ulonglong)lVar6 >> 0x20) + ((int)uVar9 >> 0x1f) * PVar14;\n  if (pWVar10 == (Wal *)0x0) {\nLAB_0007c629:\n    sqlite3BitvecDestroy(local_5c);\n    goto LAB_0007c632;\n  }\nLAB_0007c4fc:\n  if (local_44->aWalData[3] == pWVar10->nCkpt) {\n    uVar13 = local_44->aWalData[0];\n  }\n  else {\n    local_44->aWalData[0] = 0;\n    local_44->aWalData[3] = pWVar10->nCkpt;\n    uVar13 = 0;\n  }\n  if (uVar13 < (pWVar10->hdr).mxFrame) {\n    (pWVar10->hdr).mxFrame = uVar13;\n    (pWVar10->hdr).aFrameCksum[0] = local_44->aWalData[1];\n    (pWVar10->hdr).aFrameCksum[1] = local_44->aWalData[2];\n    walCleanupHash(pWVar10);\n    PVar14 = local_44->iSubRec;\n  }\nLAB_0007c5ea:\n  if (PVar14 < pPager->nSubRec) {\n    do {\n      PVar14 = PVar14 + 1;\n      local_58 = pager_playback_one_page\n                           (pPager,(i64 *)&dummy,(Bitvec *)0x0,1,(int)in_stack_ffffff8c);\n      if (local_58 != 0) goto LAB_0007c629;\n    } while (PVar14 < pPager->nSubRec);\n  }\nLAB_0007c6c0:\n  sqlite3BitvecDestroy(local_5c);\n  *(uint *)&pPager->journalOff = local_64;\n  *(int *)((int)&pPager->journalOff + 4) = local_60;\n  goto LAB_0007c6d7;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "sqlite3PagerSavepoint(Pager *pPager,int op,int iSavepoint)" identifier (parameter_list "(Pager *pPager,int op,int iSavepoint)" ( (parameter_declaration "Pager *pPager" type_identifier (pointer_declarator "*pPager" * identifier)) , (parameter_declaration "int op" primitive_type identifier) , (parameter_declaration "int iSavepoint" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  sqlite3_io_methods *psVar2;\n  PCache *pPVar3;\n  PgHdr *pPVar4;\n  u32 *puVar5;\n  longlong lVar6;\n  int iVar7;\n  int iVar8;\n  uint uVar9;\n  Wal *pWVar10;\n  PgHdr *pPVar11;\n  u32 **ppuVar12;\n  int extraout_ECX;\n  int extraout_EDX;\n  u32 uVar13;\n  Pgno PVar14;\n  uint uVar15;\n  int iVar16;\n  int unaff_EDI;\n  int iVar17;\n  int in_GS_OFFSET;\n  bool bVar18;\n  u32 *in_stack_ffffff8c;\n  u64 in_stack_ffffff94;\n  uint local_64;\n  int local_60;\n  Bitvec *local_5c;\n  int local_58;\n  PagerSavepoint *local_44;\n  u32 nJRec;\n  u32 dummy;\n  int local_28;\n  int local_20;\n  \n  __x86_get_pc_thunk_di();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar8 = (uint)(extraout_EDX != 1) + extraout_ECX;\n  if (iVar8 < pPager->nSavepoint) {\n    iVar17 = iVar8 * 0x2c;\n    iVar16 = iVar8;\n    do {\n      iVar16 = iVar16 + 1;\n      iVar7 = iVar17 + -0xc;\n      iVar17 = iVar17 + 0x2c;\n      sqlite3BitvecDestroy(*(Bitvec **)((int)pPager->aSavepoint->aWalData + iVar7));\n    } while (iVar16 < pPager->nSavepoint);\n  }\n  pPager->nSavepoint = iVar8;\n  if (extraout_EDX != 1) {\n    pWVar10 = pPager->pWal;\n    if (pWVar10 != (Wal *)0x0) {\n      if ((iVar8 == 0) ||\n         (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 == (PagerSavepoint *)0x0)) {\n        bVar18 = true;\n        local_58 = 0;\n        pPager->dbSize = pPager->dbOrigSize;\n        pPager->changeCountDone = pPager->tempFile;\n        if (pWVar10->writeLock != '\0') {\n          ppuVar12 = pWVar10->apWiData;\n          uVar9 = (pWVar10->hdr).mxFrame;\n          puVar5 = *ppuVar12;\n          (pWVar10->hdr).iVersion = *puVar5;\n          (pWVar10->hdr).unused = puVar5[1];\n          (pWVar10->hdr).iChange = puVar5[2];\n          uVar13 = puVar5[3];\n          (pWVar10->hdr).isInit = (char)uVar13;\n          (pWVar10->hdr).bigEndCksum = (char)(uVar13 >> 8);\n          (pWVar10->hdr).szPage = (short)(uVar13 >> 0x10);\n          (pWVar10->hdr).mxFrame = puVar5[4];\n          (pWVar10->hdr).nPage = puVar5[5];\n          (pWVar10->hdr).aFrameCksum[0] = puVar5[6];\n          (pWVar10->hdr).aFrameCksum[1] = puVar5[7];\n          (pWVar10->hdr).aSalt[0] = puVar5[8];\n          (pWVar10->hdr).aSalt[1] = puVar5[9];\n          (pWVar10->hdr).aCksum[0] = puVar5[10];\n          uVar13 = (pWVar10->hdr).mxFrame;\n          (pWVar10->hdr).aCksum[1] = puVar5[0xb];\n          if (uVar13 + 1 <= uVar9) {\n            uVar15 = uVar13 + 0x22;\n            while( true ) {\n              if (uVar15 < 0x1000) {\n                uVar13 = (*ppuVar12)[uVar15];\n              }\n              else {\n                uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];\n              }\n              local_58 = pagerUndoCallback(pPager,uVar13);\n              uVar1 = uVar15 - 0x20;\n              bVar18 = local_58 == 0;\n              uVar15 = uVar15 + 1;\n              if (uVar9 < uVar1 || !bVar18) break;\n              ppuVar12 = pWVar10->apWiData;\n            }\n            uVar13 = (pWVar10->hdr).mxFrame;\n          }\n          if (uVar9 != uVar13) {\n            walCleanupHash(pWVar10);\n          }\n        }\n        pPVar3 = pPager->pPCache;\n        pPVar11 = pPVar3->pDirty;\n        if (pPVar11 != (PgHdr *)0x0) {\n          do {\n            pPVar4 = pPVar11->pDirtyNext;\n            pPVar11->pDirty = pPVar4;\n            pPVar11 = pPVar4;\n          } while (pPVar4 != (PgHdr *)0x0);\n          pPVar11 = pPVar3->pDirty;\n        }\n        pPVar11 = pcacheSortDirtyList(pPVar11);\n        if ((pPVar11 != (PgHdr *)0x0) && (bVar18)) {\n          do {\n            pPVar4 = pPVar11->pDirty;\n            local_58 = pagerUndoCallback(pPager,pPVar11->pgno);\n            if (pPVar4 == (PgHdr *)0x0) break;\n            pPVar11 = pPVar4;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      PVar14 = local_44->nOrig;\n      local_5c = (Bitvec *)sqlite3MallocZero(in_stack_ffffff94);\n      local_58 = 7;\n      if (local_5c == (Bitvec *)0x0) goto LAB_0007c632;\n      local_5c->iSize = PVar14;\n      local_60 = *(int *)((int)&pPager->journalOff + 4);\n      pPager->dbSize = local_44->nOrig;\n      pPager->changeCountDone = pPager->tempFile;\n      local_64 = (uint)pPager->journalOff;\n      if (pPager->pWal == (Wal *)0x0) {\n        iVar8 = *(int *)((int)&local_44->iHdrOffset + 4);\n        uVar9 = (uint)local_44->iHdrOffset;\n        uVar15 = (uint)local_44->iOffset;\n        iVar16 = *(int *)((int)&local_44->iOffset + 4);\n        if (iVar8 == 0 && uVar9 == 0) {\n          uVar9 = local_64;\n          iVar8 = local_60;\n        }\n        *(uint *)&pPager->journalOff = uVar15;\n        *(int *)((int)&pPager->journalOff + 4) = iVar16;\n        while ((SBORROW4(iVar16,iVar8) != SBORROW4(iVar16 - iVar8,(uint)(uVar15 < uVar9))) !=\n               (int)((iVar16 - iVar8) - (uint)(uVar15 < uVar9)) < 0) {\n          local_58 = pager_playback_one_page\n                               (pPager,&pPager->journalOff,(Bitvec *)0x1,1,(int)in_stack_ffffff8c);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar15 = (uint)pPager->journalOff;\n          iVar16 = *(int *)((int)&pPager->journalOff + 4);\n        }\n        if ((SBORROW4(iVar16,local_60) != SBORROW4(iVar16 - local_60,(uint)(uVar15 < local_64))) !=\n            (int)((iVar16 - local_60) - (uint)(uVar15 < local_64)) < 0) goto LAB_0007c431;\n      }\n      else {\n        *(undefined4 *)&pPager->journalOff = 0;\n        *(undefined4 *)((int)&pPager->journalOff + 4) = 0;\n        if (-local_60 < (int)(uint)(local_64 != 0)) {\nLAB_0007c431:\n          do {\n            nJRec = 0;\n            in_stack_ffffff8c = &nJRec;\n            local_58 = readJournalHdr(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy);\n            if (nJRec != 0) {\n              if (local_58 != 0) {\nLAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;\n                goto LAB_0007c629;\n              }\n              uVar9 = (uint)pPager->journalOff;\n              iVar8 = *(int *)((int)&pPager->journalOff + 4);\nLAB_0007c6f6:\n              if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }\n              break;\n            }\n            uVar9 = (uint)pPager->journalOff;\n            iVar8 = *(int *)((int)&pPager->journalOff + 4);\n            if (*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8 &&\n                pPager->sectorSize + (int)pPager->journalHdr == uVar9) {\n              in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8);\n              nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);\n              if (local_58 == 0) {\n                if (nJRec != 0) goto LAB_0007c6f6;\n                goto LAB_0007c598;\n              }\n              goto LAB_0007c4bc;\n            }\n            if (local_58 != 0) goto LAB_0007c4bc;\nLAB_0007c598:\n          } while ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0);\n          if (local_44 == (PagerSavepoint *)0x0) goto LAB_0007c6c0;\n        }\n      }\n      PVar14 = local_44->iSubRec;\n      uVar9 = pPager->pageSize + 4;\n      lVar6 = (ulonglong)uVar9 * (ulonglong)PVar14;\n      dummy = (u32)lVar6;\n      pWVar10 = pPager->pWal;\n      local_28 = (int)((ulonglong)lVar6 >> 0x20) + ((int)uVar9 >> 0x1f) * PVar14;\n      if (pWVar10 != (Wal *)0x0) goto LAB_0007c4fc;\n      goto LAB_0007c5ea;\n    }\n    if (pPager->jfd->pMethods == (sqlite3_io_methods *)0x0) goto LAB_0007c6d7;\n    if ((iVar8 != 0) &&\n       (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 != (PagerSavepoint *)0x0))\n    goto LAB_0007c3bd;\n    local_64 = (uint)pPager->journalOff;\n    local_44 = (PagerSavepoint *)0x0;\n    local_60 = *(int *)((int)&pPager->journalOff + 4);\n    *(undefined4 *)&pPager->journalOff = 0;\n    pPager->dbSize = pPager->dbOrigSize;\n    pPager->changeCountDone = pPager->tempFile;\n    *(undefined4 *)((int)&pPager->journalOff + 4) = 0;\n    local_5c = (Bitvec *)0x0;\n    if (-local_60 < (int)(uint)(local_64 != 0)) goto LAB_0007c431;\n    goto LAB_0007c6c0;\n  }\n  if (iVar8 == 0) {\n    psVar2 = pPager->sjfd->pMethods;\n    local_58 = 0;\n    if (psVar2 != (sqlite3_io_methods *)0x0) {\n      if (psVar2 == (sqlite3_io_methods *)(unaff_EDI + 0xce457)) {\n        local_58 = memjrnlTruncate(pPager->sjfd,0);\n      }\n      pPager->nSubRec = 0;\n    }\n    goto LAB_0007c632;\n  }\nLAB_0007c6d7:\n  local_58 = 0;\nLAB_0007c632:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_58;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\nLAB_0007c4c8:\n  PVar14 = local_44->iSubRec;\n  uVar9 = pPager->pageSize + 4;\n  lVar6 = (ulonglong)uVar9 * (ulonglong)PVar14;\n  dummy = (u32)lVar6;\n  pWVar10 = pPager->pWal;\n  local_28 = (int)((ulonglong)lVar6 >> 0x20) + ((int)uVar9 >> 0x1f) * PVar14;\n  if (pWVar10 == (Wal *)0x0) {\nLAB_0007c629:\n    sqlite3BitvecDestroy(local_5c);\n    goto LAB_0007c632;\n  }\nLAB_0007c4fc:\n  if (local_44->aWalData[3] == pWVar10->nCkpt) {\n    uVar13 = local_44->aWalData[0];\n  }\n  else {\n    local_44->aWalData[0] = 0;\n    local_44->aWalData[3] = pWVar10->nCkpt;\n    uVar13 = 0;\n  }\n  if (uVar13 < (pWVar10->hdr).mxFrame) {\n    (pWVar10->hdr).mxFrame = uVar13;\n    (pWVar10->hdr).aFrameCksum[0] = local_44->aWalData[1];\n    (pWVar10->hdr).aFrameCksum[1] = local_44->aWalData[2];\n    walCleanupHash(pWVar10);\n    PVar14 = local_44->iSubRec;\n  }\nLAB_0007c5ea:\n  if (PVar14 < pPager->nSubRec) {\n    do {\n      PVar14 = PVar14 + 1;\n      local_58 = pager_playback_one_page\n                           (pPager,(i64 *)&dummy,(Bitvec *)0x0,1,(int)in_stack_ffffff8c);\n      if (local_58 != 0) goto LAB_0007c629;\n    } while (PVar14 < pPager->nSubRec);\n  }\nLAB_0007c6c0:\n  sqlite3BitvecDestroy(local_5c);\n  *(uint *)&pPager->journalOff = local_64;\n  *(int *)((int)&pPager->journalOff + 4) = local_60;\n  goto LAB_0007c6d7;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "sqlite3_io_methods *psVar2;" type_identifier (pointer_declarator "*psVar2" * identifier) ;) (declaration "PCache *pPVar3;" type_identifier (pointer_declarator "*pPVar3" * identifier) ;) (declaration "PgHdr *pPVar4;" type_identifier (pointer_declarator "*pPVar4" * identifier) ;) (declaration "u32 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "longlong lVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "Wal *pWVar10;" type_identifier (pointer_declarator "*pWVar10" * identifier) ;) (declaration "PgHdr *pPVar11;" type_identifier (pointer_declarator "*pPVar11" * identifier) ;) (declaration "u32 **ppuVar12;" type_identifier (pointer_declarator "**ppuVar12" * (pointer_declarator "*ppuVar12" * identifier)) ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "u32 uVar13;" type_identifier identifier ;) (declaration "Pgno PVar14;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "u32 *in_stack_ffffff8c;" type_identifier (pointer_declarator "*in_stack_ffffff8c" * identifier) ;) (declaration "u64 in_stack_ffffff94;" type_identifier identifier ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "Bitvec *local_5c;" type_identifier (pointer_declarator "*local_5c" * identifier) ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "PagerSavepoint *local_44;" type_identifier (pointer_declarator "*local_44" * identifier) ;) (declaration "u32 nJRec;" type_identifier identifier ;) (declaration "u32 dummy;" type_identifier identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = (uint)(extraout_EDX != 1) + extraout_ECX;" (assignment_expression "iVar8 = (uint)(extraout_EDX != 1) + extraout_ECX" identifier = (binary_expression "(uint)(extraout_EDX != 1) + extraout_ECX" (call_expression "(uint)(extraout_EDX != 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(extraout_EDX != 1)" ( (binary_expression "extraout_EDX != 1" identifier != number_literal) ))) + identifier)) ;) (if_statement "if (iVar8 < pPager->nSavepoint) {\n    iVar17 = iVar8 * 0x2c;\n    iVar16 = iVar8;\n    do {\n      iVar16 = iVar16 + 1;\n      iVar7 = iVar17 + -0xc;\n      iVar17 = iVar17 + 0x2c;\n      sqlite3BitvecDestroy(*(Bitvec **)((int)pPager->aSavepoint->aWalData + iVar7));\n    } while (iVar16 < pPager->nSavepoint);\n  }" if (parenthesized_expression "(iVar8 < pPager->nSavepoint)" ( (binary_expression "iVar8 < pPager->nSavepoint" identifier < (field_expression "pPager->nSavepoint" identifier -> field_identifier)) )) (compound_statement "{\n    iVar17 = iVar8 * 0x2c;\n    iVar16 = iVar8;\n    do {\n      iVar16 = iVar16 + 1;\n      iVar7 = iVar17 + -0xc;\n      iVar17 = iVar17 + 0x2c;\n      sqlite3BitvecDestroy(*(Bitvec **)((int)pPager->aSavepoint->aWalData + iVar7));\n    } while (iVar16 < pPager->nSavepoint);\n  }" { (expression_statement "iVar17 = iVar8 * 0x2c;" (assignment_expression "iVar17 = iVar8 * 0x2c" identifier = (binary_expression "iVar8 * 0x2c" identifier * number_literal)) ;) (expression_statement "iVar16 = iVar8;" (assignment_expression "iVar16 = iVar8" identifier = identifier) ;) (do_statement "do {\n      iVar16 = iVar16 + 1;\n      iVar7 = iVar17 + -0xc;\n      iVar17 = iVar17 + 0x2c;\n      sqlite3BitvecDestroy(*(Bitvec **)((int)pPager->aSavepoint->aWalData + iVar7));\n    } while (iVar16 < pPager->nSavepoint);" do (compound_statement "{\n      iVar16 = iVar16 + 1;\n      iVar7 = iVar17 + -0xc;\n      iVar17 = iVar17 + 0x2c;\n      sqlite3BitvecDestroy(*(Bitvec **)((int)pPager->aSavepoint->aWalData + iVar7));\n    }" { (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (expression_statement "iVar7 = iVar17 + -0xc;" (assignment_expression "iVar7 = iVar17 + -0xc" identifier = (binary_expression "iVar17 + -0xc" identifier + number_literal)) ;) (expression_statement "iVar17 = iVar17 + 0x2c;" (assignment_expression "iVar17 = iVar17 + 0x2c" identifier = (binary_expression "iVar17 + 0x2c" identifier + number_literal)) ;) (expression_statement "sqlite3BitvecDestroy(*(Bitvec **)((int)pPager->aSavepoint->aWalData + iVar7));" (call_expression "sqlite3BitvecDestroy(*(Bitvec **)((int)pPager->aSavepoint->aWalData + iVar7))" identifier (argument_list "(*(Bitvec **)((int)pPager->aSavepoint->aWalData + iVar7))" ( (pointer_expression "*(Bitvec **)((int)pPager->aSavepoint->aWalData + iVar7)" * (cast_expression "(Bitvec **)((int)pPager->aSavepoint->aWalData + iVar7)" ( (type_descriptor "Bitvec **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pPager->aSavepoint->aWalData + iVar7)" ( (binary_expression "(int)pPager->aSavepoint->aWalData + iVar7" (cast_expression "(int)pPager->aSavepoint->aWalData" ( (type_descriptor "int" primitive_type) ) (field_expression "pPager->aSavepoint->aWalData" (field_expression "pPager->aSavepoint" identifier -> field_identifier) -> field_identifier)) + identifier) )))) ))) ;) }) while (parenthesized_expression "(iVar16 < pPager->nSavepoint)" ( (binary_expression "iVar16 < pPager->nSavepoint" identifier < (field_expression "pPager->nSavepoint" identifier -> field_identifier)) )) ;) })) (expression_statement "pPager->nSavepoint = iVar8;" (assignment_expression "pPager->nSavepoint = iVar8" (field_expression "pPager->nSavepoint" identifier -> field_identifier) = identifier) ;) (if_statement "if (extraout_EDX != 1) {\n    pWVar10 = pPager->pWal;\n    if (pWVar10 != (Wal *)0x0) {\n      if ((iVar8 == 0) ||\n         (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 == (PagerSavepoint *)0x0)) {\n        bVar18 = true;\n        local_58 = 0;\n        pPager->dbSize = pPager->dbOrigSize;\n        pPager->changeCountDone = pPager->tempFile;\n        if (pWVar10->writeLock != '\0') {\n          ppuVar12 = pWVar10->apWiData;\n          uVar9 = (pWVar10->hdr).mxFrame;\n          puVar5 = *ppuVar12;\n          (pWVar10->hdr).iVersion = *puVar5;\n          (pWVar10->hdr).unused = puVar5[1];\n          (pWVar10->hdr).iChange = puVar5[2];\n          uVar13 = puVar5[3];\n          (pWVar10->hdr).isInit = (char)uVar13;\n          (pWVar10->hdr).bigEndCksum = (char)(uVar13 >> 8);\n          (pWVar10->hdr).szPage = (short)(uVar13 >> 0x10);\n          (pWVar10->hdr).mxFrame = puVar5[4];\n          (pWVar10->hdr).nPage = puVar5[5];\n          (pWVar10->hdr).aFrameCksum[0] = puVar5[6];\n          (pWVar10->hdr).aFrameCksum[1] = puVar5[7];\n          (pWVar10->hdr).aSalt[0] = puVar5[8];\n          (pWVar10->hdr).aSalt[1] = puVar5[9];\n          (pWVar10->hdr).aCksum[0] = puVar5[10];\n          uVar13 = (pWVar10->hdr).mxFrame;\n          (pWVar10->hdr).aCksum[1] = puVar5[0xb];\n          if (uVar13 + 1 <= uVar9) {\n            uVar15 = uVar13 + 0x22;\n            while( true ) {\n              if (uVar15 < 0x1000) {\n                uVar13 = (*ppuVar12)[uVar15];\n              }\n              else {\n                uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];\n              }\n              local_58 = pagerUndoCallback(pPager,uVar13);\n              uVar1 = uVar15 - 0x20;\n              bVar18 = local_58 == 0;\n              uVar15 = uVar15 + 1;\n              if (uVar9 < uVar1 || !bVar18) break;\n              ppuVar12 = pWVar10->apWiData;\n            }\n            uVar13 = (pWVar10->hdr).mxFrame;\n          }\n          if (uVar9 != uVar13) {\n            walCleanupHash(pWVar10);\n          }\n        }\n        pPVar3 = pPager->pPCache;\n        pPVar11 = pPVar3->pDirty;\n        if (pPVar11 != (PgHdr *)0x0) {\n          do {\n            pPVar4 = pPVar11->pDirtyNext;\n            pPVar11->pDirty = pPVar4;\n            pPVar11 = pPVar4;\n          } while (pPVar4 != (PgHdr *)0x0);\n          pPVar11 = pPVar3->pDirty;\n        }\n        pPVar11 = pcacheSortDirtyList(pPVar11);\n        if ((pPVar11 != (PgHdr *)0x0) && (bVar18)) {\n          do {\n            pPVar4 = pPVar11->pDirty;\n            local_58 = pagerUndoCallback(pPager,pPVar11->pgno);\n            if (pPVar4 == (PgHdr *)0x0) break;\n            pPVar11 = pPVar4;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      PVar14 = local_44->nOrig;\n      local_5c = (Bitvec *)sqlite3MallocZero(in_stack_ffffff94);\n      local_58 = 7;\n      if (local_5c == (Bitvec *)0x0) goto LAB_0007c632;\n      local_5c->iSize = PVar14;\n      local_60 = *(int *)((int)&pPager->journalOff + 4);\n      pPager->dbSize = local_44->nOrig;\n      pPager->changeCountDone = pPager->tempFile;\n      local_64 = (uint)pPager->journalOff;\n      if (pPager->pWal == (Wal *)0x0) {\n        iVar8 = *(int *)((int)&local_44->iHdrOffset + 4);\n        uVar9 = (uint)local_44->iHdrOffset;\n        uVar15 = (uint)local_44->iOffset;\n        iVar16 = *(int *)((int)&local_44->iOffset + 4);\n        if (iVar8 == 0 && uVar9 == 0) {\n          uVar9 = local_64;\n          iVar8 = local_60;\n        }\n        *(uint *)&pPager->journalOff = uVar15;\n        *(int *)((int)&pPager->journalOff + 4) = iVar16;\n        while ((SBORROW4(iVar16,iVar8) != SBORROW4(iVar16 - iVar8,(uint)(uVar15 < uVar9))) !=\n               (int)((iVar16 - iVar8) - (uint)(uVar15 < uVar9)) < 0) {\n          local_58 = pager_playback_one_page\n                               (pPager,&pPager->journalOff,(Bitvec *)0x1,1,(int)in_stack_ffffff8c);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar15 = (uint)pPager->journalOff;\n          iVar16 = *(int *)((int)&pPager->journalOff + 4);\n        }\n        if ((SBORROW4(iVar16,local_60) != SBORROW4(iVar16 - local_60,(uint)(uVar15 < local_64))) !=\n            (int)((iVar16 - local_60) - (uint)(uVar15 < local_64)) < 0) goto LAB_0007c431;\n      }\n      else {\n        *(undefined4 *)&pPager->journalOff = 0;\n        *(undefined4 *)((int)&pPager->journalOff + 4) = 0;\n        if (-local_60 < (int)(uint)(local_64 != 0)) {\nLAB_0007c431:\n          do {\n            nJRec = 0;\n            in_stack_ffffff8c = &nJRec;\n            local_58 = readJournalHdr(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy);\n            if (nJRec != 0) {\n              if (local_58 != 0) {\nLAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;\n                goto LAB_0007c629;\n              }\n              uVar9 = (uint)pPager->journalOff;\n              iVar8 = *(int *)((int)&pPager->journalOff + 4);\nLAB_0007c6f6:\n              if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }\n              break;\n            }\n            uVar9 = (uint)pPager->journalOff;\n            iVar8 = *(int *)((int)&pPager->journalOff + 4);\n            if (*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8 &&\n                pPager->sectorSize + (int)pPager->journalHdr == uVar9) {\n              in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8);\n              nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);\n              if (local_58 == 0) {\n                if (nJRec != 0) goto LAB_0007c6f6;\n                goto LAB_0007c598;\n              }\n              goto LAB_0007c4bc;\n            }\n            if (local_58 != 0) goto LAB_0007c4bc;\nLAB_0007c598:\n          } while ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0);\n          if (local_44 == (PagerSavepoint *)0x0) goto LAB_0007c6c0;\n        }\n      }\n      PVar14 = local_44->iSubRec;\n      uVar9 = pPager->pageSize + 4;\n      lVar6 = (ulonglong)uVar9 * (ulonglong)PVar14;\n      dummy = (u32)lVar6;\n      pWVar10 = pPager->pWal;\n      local_28 = (int)((ulonglong)lVar6 >> 0x20) + ((int)uVar9 >> 0x1f) * PVar14;\n      if (pWVar10 != (Wal *)0x0) goto LAB_0007c4fc;\n      goto LAB_0007c5ea;\n    }\n    if (pPager->jfd->pMethods == (sqlite3_io_methods *)0x0) goto LAB_0007c6d7;\n    if ((iVar8 != 0) &&\n       (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 != (PagerSavepoint *)0x0))\n    goto LAB_0007c3bd;\n    local_64 = (uint)pPager->journalOff;\n    local_44 = (PagerSavepoint *)0x0;\n    local_60 = *(int *)((int)&pPager->journalOff + 4);\n    *(undefined4 *)&pPager->journalOff = 0;\n    pPager->dbSize = pPager->dbOrigSize;\n    pPager->changeCountDone = pPager->tempFile;\n    *(undefined4 *)((int)&pPager->journalOff + 4) = 0;\n    local_5c = (Bitvec *)0x0;\n    if (-local_60 < (int)(uint)(local_64 != 0)) goto LAB_0007c431;\n    goto LAB_0007c6c0;\n  }" if (parenthesized_expression "(extraout_EDX != 1)" ( (binary_expression "extraout_EDX != 1" identifier != number_literal) )) (compound_statement "{\n    pWVar10 = pPager->pWal;\n    if (pWVar10 != (Wal *)0x0) {\n      if ((iVar8 == 0) ||\n         (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 == (PagerSavepoint *)0x0)) {\n        bVar18 = true;\n        local_58 = 0;\n        pPager->dbSize = pPager->dbOrigSize;\n        pPager->changeCountDone = pPager->tempFile;\n        if (pWVar10->writeLock != '\0') {\n          ppuVar12 = pWVar10->apWiData;\n          uVar9 = (pWVar10->hdr).mxFrame;\n          puVar5 = *ppuVar12;\n          (pWVar10->hdr).iVersion = *puVar5;\n          (pWVar10->hdr).unused = puVar5[1];\n          (pWVar10->hdr).iChange = puVar5[2];\n          uVar13 = puVar5[3];\n          (pWVar10->hdr).isInit = (char)uVar13;\n          (pWVar10->hdr).bigEndCksum = (char)(uVar13 >> 8);\n          (pWVar10->hdr).szPage = (short)(uVar13 >> 0x10);\n          (pWVar10->hdr).mxFrame = puVar5[4];\n          (pWVar10->hdr).nPage = puVar5[5];\n          (pWVar10->hdr).aFrameCksum[0] = puVar5[6];\n          (pWVar10->hdr).aFrameCksum[1] = puVar5[7];\n          (pWVar10->hdr).aSalt[0] = puVar5[8];\n          (pWVar10->hdr).aSalt[1] = puVar5[9];\n          (pWVar10->hdr).aCksum[0] = puVar5[10];\n          uVar13 = (pWVar10->hdr).mxFrame;\n          (pWVar10->hdr).aCksum[1] = puVar5[0xb];\n          if (uVar13 + 1 <= uVar9) {\n            uVar15 = uVar13 + 0x22;\n            while( true ) {\n              if (uVar15 < 0x1000) {\n                uVar13 = (*ppuVar12)[uVar15];\n              }\n              else {\n                uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];\n              }\n              local_58 = pagerUndoCallback(pPager,uVar13);\n              uVar1 = uVar15 - 0x20;\n              bVar18 = local_58 == 0;\n              uVar15 = uVar15 + 1;\n              if (uVar9 < uVar1 || !bVar18) break;\n              ppuVar12 = pWVar10->apWiData;\n            }\n            uVar13 = (pWVar10->hdr).mxFrame;\n          }\n          if (uVar9 != uVar13) {\n            walCleanupHash(pWVar10);\n          }\n        }\n        pPVar3 = pPager->pPCache;\n        pPVar11 = pPVar3->pDirty;\n        if (pPVar11 != (PgHdr *)0x0) {\n          do {\n            pPVar4 = pPVar11->pDirtyNext;\n            pPVar11->pDirty = pPVar4;\n            pPVar11 = pPVar4;\n          } while (pPVar4 != (PgHdr *)0x0);\n          pPVar11 = pPVar3->pDirty;\n        }\n        pPVar11 = pcacheSortDirtyList(pPVar11);\n        if ((pPVar11 != (PgHdr *)0x0) && (bVar18)) {\n          do {\n            pPVar4 = pPVar11->pDirty;\n            local_58 = pagerUndoCallback(pPager,pPVar11->pgno);\n            if (pPVar4 == (PgHdr *)0x0) break;\n            pPVar11 = pPVar4;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      PVar14 = local_44->nOrig;\n      local_5c = (Bitvec *)sqlite3MallocZero(in_stack_ffffff94);\n      local_58 = 7;\n      if (local_5c == (Bitvec *)0x0) goto LAB_0007c632;\n      local_5c->iSize = PVar14;\n      local_60 = *(int *)((int)&pPager->journalOff + 4);\n      pPager->dbSize = local_44->nOrig;\n      pPager->changeCountDone = pPager->tempFile;\n      local_64 = (uint)pPager->journalOff;\n      if (pPager->pWal == (Wal *)0x0) {\n        iVar8 = *(int *)((int)&local_44->iHdrOffset + 4);\n        uVar9 = (uint)local_44->iHdrOffset;\n        uVar15 = (uint)local_44->iOffset;\n        iVar16 = *(int *)((int)&local_44->iOffset + 4);\n        if (iVar8 == 0 && uVar9 == 0) {\n          uVar9 = local_64;\n          iVar8 = local_60;\n        }\n        *(uint *)&pPager->journalOff = uVar15;\n        *(int *)((int)&pPager->journalOff + 4) = iVar16;\n        while ((SBORROW4(iVar16,iVar8) != SBORROW4(iVar16 - iVar8,(uint)(uVar15 < uVar9))) !=\n               (int)((iVar16 - iVar8) - (uint)(uVar15 < uVar9)) < 0) {\n          local_58 = pager_playback_one_page\n                               (pPager,&pPager->journalOff,(Bitvec *)0x1,1,(int)in_stack_ffffff8c);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar15 = (uint)pPager->journalOff;\n          iVar16 = *(int *)((int)&pPager->journalOff + 4);\n        }\n        if ((SBORROW4(iVar16,local_60) != SBORROW4(iVar16 - local_60,(uint)(uVar15 < local_64))) !=\n            (int)((iVar16 - local_60) - (uint)(uVar15 < local_64)) < 0) goto LAB_0007c431;\n      }\n      else {\n        *(undefined4 *)&pPager->journalOff = 0;\n        *(undefined4 *)((int)&pPager->journalOff + 4) = 0;\n        if (-local_60 < (int)(uint)(local_64 != 0)) {\nLAB_0007c431:\n          do {\n            nJRec = 0;\n            in_stack_ffffff8c = &nJRec;\n            local_58 = readJournalHdr(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy);\n            if (nJRec != 0) {\n              if (local_58 != 0) {\nLAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;\n                goto LAB_0007c629;\n              }\n              uVar9 = (uint)pPager->journalOff;\n              iVar8 = *(int *)((int)&pPager->journalOff + 4);\nLAB_0007c6f6:\n              if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }\n              break;\n            }\n            uVar9 = (uint)pPager->journalOff;\n            iVar8 = *(int *)((int)&pPager->journalOff + 4);\n            if (*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8 &&\n                pPager->sectorSize + (int)pPager->journalHdr == uVar9) {\n              in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8);\n              nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);\n              if (local_58 == 0) {\n                if (nJRec != 0) goto LAB_0007c6f6;\n                goto LAB_0007c598;\n              }\n              goto LAB_0007c4bc;\n            }\n            if (local_58 != 0) goto LAB_0007c4bc;\nLAB_0007c598:\n          } while ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0);\n          if (local_44 == (PagerSavepoint *)0x0) goto LAB_0007c6c0;\n        }\n      }\n      PVar14 = local_44->iSubRec;\n      uVar9 = pPager->pageSize + 4;\n      lVar6 = (ulonglong)uVar9 * (ulonglong)PVar14;\n      dummy = (u32)lVar6;\n      pWVar10 = pPager->pWal;\n      local_28 = (int)((ulonglong)lVar6 >> 0x20) + ((int)uVar9 >> 0x1f) * PVar14;\n      if (pWVar10 != (Wal *)0x0) goto LAB_0007c4fc;\n      goto LAB_0007c5ea;\n    }\n    if (pPager->jfd->pMethods == (sqlite3_io_methods *)0x0) goto LAB_0007c6d7;\n    if ((iVar8 != 0) &&\n       (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 != (PagerSavepoint *)0x0))\n    goto LAB_0007c3bd;\n    local_64 = (uint)pPager->journalOff;\n    local_44 = (PagerSavepoint *)0x0;\n    local_60 = *(int *)((int)&pPager->journalOff + 4);\n    *(undefined4 *)&pPager->journalOff = 0;\n    pPager->dbSize = pPager->dbOrigSize;\n    pPager->changeCountDone = pPager->tempFile;\n    *(undefined4 *)((int)&pPager->journalOff + 4) = 0;\n    local_5c = (Bitvec *)0x0;\n    if (-local_60 < (int)(uint)(local_64 != 0)) goto LAB_0007c431;\n    goto LAB_0007c6c0;\n  }" { (expression_statement "pWVar10 = pPager->pWal;" (assignment_expression "pWVar10 = pPager->pWal" identifier = (field_expression "pPager->pWal" identifier -> field_identifier)) ;) (if_statement "if (pWVar10 != (Wal *)0x0) {\n      if ((iVar8 == 0) ||\n         (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 == (PagerSavepoint *)0x0)) {\n        bVar18 = true;\n        local_58 = 0;\n        pPager->dbSize = pPager->dbOrigSize;\n        pPager->changeCountDone = pPager->tempFile;\n        if (pWVar10->writeLock != '\0') {\n          ppuVar12 = pWVar10->apWiData;\n          uVar9 = (pWVar10->hdr).mxFrame;\n          puVar5 = *ppuVar12;\n          (pWVar10->hdr).iVersion = *puVar5;\n          (pWVar10->hdr).unused = puVar5[1];\n          (pWVar10->hdr).iChange = puVar5[2];\n          uVar13 = puVar5[3];\n          (pWVar10->hdr).isInit = (char)uVar13;\n          (pWVar10->hdr).bigEndCksum = (char)(uVar13 >> 8);\n          (pWVar10->hdr).szPage = (short)(uVar13 >> 0x10);\n          (pWVar10->hdr).mxFrame = puVar5[4];\n          (pWVar10->hdr).nPage = puVar5[5];\n          (pWVar10->hdr).aFrameCksum[0] = puVar5[6];\n          (pWVar10->hdr).aFrameCksum[1] = puVar5[7];\n          (pWVar10->hdr).aSalt[0] = puVar5[8];\n          (pWVar10->hdr).aSalt[1] = puVar5[9];\n          (pWVar10->hdr).aCksum[0] = puVar5[10];\n          uVar13 = (pWVar10->hdr).mxFrame;\n          (pWVar10->hdr).aCksum[1] = puVar5[0xb];\n          if (uVar13 + 1 <= uVar9) {\n            uVar15 = uVar13 + 0x22;\n            while( true ) {\n              if (uVar15 < 0x1000) {\n                uVar13 = (*ppuVar12)[uVar15];\n              }\n              else {\n                uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];\n              }\n              local_58 = pagerUndoCallback(pPager,uVar13);\n              uVar1 = uVar15 - 0x20;\n              bVar18 = local_58 == 0;\n              uVar15 = uVar15 + 1;\n              if (uVar9 < uVar1 || !bVar18) break;\n              ppuVar12 = pWVar10->apWiData;\n            }\n            uVar13 = (pWVar10->hdr).mxFrame;\n          }\n          if (uVar9 != uVar13) {\n            walCleanupHash(pWVar10);\n          }\n        }\n        pPVar3 = pPager->pPCache;\n        pPVar11 = pPVar3->pDirty;\n        if (pPVar11 != (PgHdr *)0x0) {\n          do {\n            pPVar4 = pPVar11->pDirtyNext;\n            pPVar11->pDirty = pPVar4;\n            pPVar11 = pPVar4;\n          } while (pPVar4 != (PgHdr *)0x0);\n          pPVar11 = pPVar3->pDirty;\n        }\n        pPVar11 = pcacheSortDirtyList(pPVar11);\n        if ((pPVar11 != (PgHdr *)0x0) && (bVar18)) {\n          do {\n            pPVar4 = pPVar11->pDirty;\n            local_58 = pagerUndoCallback(pPager,pPVar11->pgno);\n            if (pPVar4 == (PgHdr *)0x0) break;\n            pPVar11 = pPVar4;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      PVar14 = local_44->nOrig;\n      local_5c = (Bitvec *)sqlite3MallocZero(in_stack_ffffff94);\n      local_58 = 7;\n      if (local_5c == (Bitvec *)0x0) goto LAB_0007c632;\n      local_5c->iSize = PVar14;\n      local_60 = *(int *)((int)&pPager->journalOff + 4);\n      pPager->dbSize = local_44->nOrig;\n      pPager->changeCountDone = pPager->tempFile;\n      local_64 = (uint)pPager->journalOff;\n      if (pPager->pWal == (Wal *)0x0) {\n        iVar8 = *(int *)((int)&local_44->iHdrOffset + 4);\n        uVar9 = (uint)local_44->iHdrOffset;\n        uVar15 = (uint)local_44->iOffset;\n        iVar16 = *(int *)((int)&local_44->iOffset + 4);\n        if (iVar8 == 0 && uVar9 == 0) {\n          uVar9 = local_64;\n          iVar8 = local_60;\n        }\n        *(uint *)&pPager->journalOff = uVar15;\n        *(int *)((int)&pPager->journalOff + 4) = iVar16;\n        while ((SBORROW4(iVar16,iVar8) != SBORROW4(iVar16 - iVar8,(uint)(uVar15 < uVar9))) !=\n               (int)((iVar16 - iVar8) - (uint)(uVar15 < uVar9)) < 0) {\n          local_58 = pager_playback_one_page\n                               (pPager,&pPager->journalOff,(Bitvec *)0x1,1,(int)in_stack_ffffff8c);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar15 = (uint)pPager->journalOff;\n          iVar16 = *(int *)((int)&pPager->journalOff + 4);\n        }\n        if ((SBORROW4(iVar16,local_60) != SBORROW4(iVar16 - local_60,(uint)(uVar15 < local_64))) !=\n            (int)((iVar16 - local_60) - (uint)(uVar15 < local_64)) < 0) goto LAB_0007c431;\n      }\n      else {\n        *(undefined4 *)&pPager->journalOff = 0;\n        *(undefined4 *)((int)&pPager->journalOff + 4) = 0;\n        if (-local_60 < (int)(uint)(local_64 != 0)) {\nLAB_0007c431:\n          do {\n            nJRec = 0;\n            in_stack_ffffff8c = &nJRec;\n            local_58 = readJournalHdr(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy);\n            if (nJRec != 0) {\n              if (local_58 != 0) {\nLAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;\n                goto LAB_0007c629;\n              }\n              uVar9 = (uint)pPager->journalOff;\n              iVar8 = *(int *)((int)&pPager->journalOff + 4);\nLAB_0007c6f6:\n              if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }\n              break;\n            }\n            uVar9 = (uint)pPager->journalOff;\n            iVar8 = *(int *)((int)&pPager->journalOff + 4);\n            if (*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8 &&\n                pPager->sectorSize + (int)pPager->journalHdr == uVar9) {\n              in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8);\n              nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);\n              if (local_58 == 0) {\n                if (nJRec != 0) goto LAB_0007c6f6;\n                goto LAB_0007c598;\n              }\n              goto LAB_0007c4bc;\n            }\n            if (local_58 != 0) goto LAB_0007c4bc;\nLAB_0007c598:\n          } while ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0);\n          if (local_44 == (PagerSavepoint *)0x0) goto LAB_0007c6c0;\n        }\n      }\n      PVar14 = local_44->iSubRec;\n      uVar9 = pPager->pageSize + 4;\n      lVar6 = (ulonglong)uVar9 * (ulonglong)PVar14;\n      dummy = (u32)lVar6;\n      pWVar10 = pPager->pWal;\n      local_28 = (int)((ulonglong)lVar6 >> 0x20) + ((int)uVar9 >> 0x1f) * PVar14;\n      if (pWVar10 != (Wal *)0x0) goto LAB_0007c4fc;\n      goto LAB_0007c5ea;\n    }" if (parenthesized_expression "(pWVar10 != (Wal *)0x0)" ( (binary_expression "pWVar10 != (Wal *)0x0" identifier != (cast_expression "(Wal *)0x0" ( (type_descriptor "Wal *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((iVar8 == 0) ||\n         (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 == (PagerSavepoint *)0x0)) {\n        bVar18 = true;\n        local_58 = 0;\n        pPager->dbSize = pPager->dbOrigSize;\n        pPager->changeCountDone = pPager->tempFile;\n        if (pWVar10->writeLock != '\0') {\n          ppuVar12 = pWVar10->apWiData;\n          uVar9 = (pWVar10->hdr).mxFrame;\n          puVar5 = *ppuVar12;\n          (pWVar10->hdr).iVersion = *puVar5;\n          (pWVar10->hdr).unused = puVar5[1];\n          (pWVar10->hdr).iChange = puVar5[2];\n          uVar13 = puVar5[3];\n          (pWVar10->hdr).isInit = (char)uVar13;\n          (pWVar10->hdr).bigEndCksum = (char)(uVar13 >> 8);\n          (pWVar10->hdr).szPage = (short)(uVar13 >> 0x10);\n          (pWVar10->hdr).mxFrame = puVar5[4];\n          (pWVar10->hdr).nPage = puVar5[5];\n          (pWVar10->hdr).aFrameCksum[0] = puVar5[6];\n          (pWVar10->hdr).aFrameCksum[1] = puVar5[7];\n          (pWVar10->hdr).aSalt[0] = puVar5[8];\n          (pWVar10->hdr).aSalt[1] = puVar5[9];\n          (pWVar10->hdr).aCksum[0] = puVar5[10];\n          uVar13 = (pWVar10->hdr).mxFrame;\n          (pWVar10->hdr).aCksum[1] = puVar5[0xb];\n          if (uVar13 + 1 <= uVar9) {\n            uVar15 = uVar13 + 0x22;\n            while( true ) {\n              if (uVar15 < 0x1000) {\n                uVar13 = (*ppuVar12)[uVar15];\n              }\n              else {\n                uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];\n              }\n              local_58 = pagerUndoCallback(pPager,uVar13);\n              uVar1 = uVar15 - 0x20;\n              bVar18 = local_58 == 0;\n              uVar15 = uVar15 + 1;\n              if (uVar9 < uVar1 || !bVar18) break;\n              ppuVar12 = pWVar10->apWiData;\n            }\n            uVar13 = (pWVar10->hdr).mxFrame;\n          }\n          if (uVar9 != uVar13) {\n            walCleanupHash(pWVar10);\n          }\n        }\n        pPVar3 = pPager->pPCache;\n        pPVar11 = pPVar3->pDirty;\n        if (pPVar11 != (PgHdr *)0x0) {\n          do {\n            pPVar4 = pPVar11->pDirtyNext;\n            pPVar11->pDirty = pPVar4;\n            pPVar11 = pPVar4;\n          } while (pPVar4 != (PgHdr *)0x0);\n          pPVar11 = pPVar3->pDirty;\n        }\n        pPVar11 = pcacheSortDirtyList(pPVar11);\n        if ((pPVar11 != (PgHdr *)0x0) && (bVar18)) {\n          do {\n            pPVar4 = pPVar11->pDirty;\n            local_58 = pagerUndoCallback(pPager,pPVar11->pgno);\n            if (pPVar4 == (PgHdr *)0x0) break;\n            pPVar11 = pPVar4;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      PVar14 = local_44->nOrig;\n      local_5c = (Bitvec *)sqlite3MallocZero(in_stack_ffffff94);\n      local_58 = 7;\n      if (local_5c == (Bitvec *)0x0) goto LAB_0007c632;\n      local_5c->iSize = PVar14;\n      local_60 = *(int *)((int)&pPager->journalOff + 4);\n      pPager->dbSize = local_44->nOrig;\n      pPager->changeCountDone = pPager->tempFile;\n      local_64 = (uint)pPager->journalOff;\n      if (pPager->pWal == (Wal *)0x0) {\n        iVar8 = *(int *)((int)&local_44->iHdrOffset + 4);\n        uVar9 = (uint)local_44->iHdrOffset;\n        uVar15 = (uint)local_44->iOffset;\n        iVar16 = *(int *)((int)&local_44->iOffset + 4);\n        if (iVar8 == 0 && uVar9 == 0) {\n          uVar9 = local_64;\n          iVar8 = local_60;\n        }\n        *(uint *)&pPager->journalOff = uVar15;\n        *(int *)((int)&pPager->journalOff + 4) = iVar16;\n        while ((SBORROW4(iVar16,iVar8) != SBORROW4(iVar16 - iVar8,(uint)(uVar15 < uVar9))) !=\n               (int)((iVar16 - iVar8) - (uint)(uVar15 < uVar9)) < 0) {\n          local_58 = pager_playback_one_page\n                               (pPager,&pPager->journalOff,(Bitvec *)0x1,1,(int)in_stack_ffffff8c);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar15 = (uint)pPager->journalOff;\n          iVar16 = *(int *)((int)&pPager->journalOff + 4);\n        }\n        if ((SBORROW4(iVar16,local_60) != SBORROW4(iVar16 - local_60,(uint)(uVar15 < local_64))) !=\n            (int)((iVar16 - local_60) - (uint)(uVar15 < local_64)) < 0) goto LAB_0007c431;\n      }\n      else {\n        *(undefined4 *)&pPager->journalOff = 0;\n        *(undefined4 *)((int)&pPager->journalOff + 4) = 0;\n        if (-local_60 < (int)(uint)(local_64 != 0)) {\nLAB_0007c431:\n          do {\n            nJRec = 0;\n            in_stack_ffffff8c = &nJRec;\n            local_58 = readJournalHdr(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy);\n            if (nJRec != 0) {\n              if (local_58 != 0) {\nLAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;\n                goto LAB_0007c629;\n              }\n              uVar9 = (uint)pPager->journalOff;\n              iVar8 = *(int *)((int)&pPager->journalOff + 4);\nLAB_0007c6f6:\n              if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }\n              break;\n            }\n            uVar9 = (uint)pPager->journalOff;\n            iVar8 = *(int *)((int)&pPager->journalOff + 4);\n            if (*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8 &&\n                pPager->sectorSize + (int)pPager->journalHdr == uVar9) {\n              in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8);\n              nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);\n              if (local_58 == 0) {\n                if (nJRec != 0) goto LAB_0007c6f6;\n                goto LAB_0007c598;\n              }\n              goto LAB_0007c4bc;\n            }\n            if (local_58 != 0) goto LAB_0007c4bc;\nLAB_0007c598:\n          } while ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0);\n          if (local_44 == (PagerSavepoint *)0x0) goto LAB_0007c6c0;\n        }\n      }\n      PVar14 = local_44->iSubRec;\n      uVar9 = pPager->pageSize + 4;\n      lVar6 = (ulonglong)uVar9 * (ulonglong)PVar14;\n      dummy = (u32)lVar6;\n      pWVar10 = pPager->pWal;\n      local_28 = (int)((ulonglong)lVar6 >> 0x20) + ((int)uVar9 >> 0x1f) * PVar14;\n      if (pWVar10 != (Wal *)0x0) goto LAB_0007c4fc;\n      goto LAB_0007c5ea;\n    }" { (if_statement "if ((iVar8 == 0) ||\n         (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 == (PagerSavepoint *)0x0)) {\n        bVar18 = true;\n        local_58 = 0;\n        pPager->dbSize = pPager->dbOrigSize;\n        pPager->changeCountDone = pPager->tempFile;\n        if (pWVar10->writeLock != '\0') {\n          ppuVar12 = pWVar10->apWiData;\n          uVar9 = (pWVar10->hdr).mxFrame;\n          puVar5 = *ppuVar12;\n          (pWVar10->hdr).iVersion = *puVar5;\n          (pWVar10->hdr).unused = puVar5[1];\n          (pWVar10->hdr).iChange = puVar5[2];\n          uVar13 = puVar5[3];\n          (pWVar10->hdr).isInit = (char)uVar13;\n          (pWVar10->hdr).bigEndCksum = (char)(uVar13 >> 8);\n          (pWVar10->hdr).szPage = (short)(uVar13 >> 0x10);\n          (pWVar10->hdr).mxFrame = puVar5[4];\n          (pWVar10->hdr).nPage = puVar5[5];\n          (pWVar10->hdr).aFrameCksum[0] = puVar5[6];\n          (pWVar10->hdr).aFrameCksum[1] = puVar5[7];\n          (pWVar10->hdr).aSalt[0] = puVar5[8];\n          (pWVar10->hdr).aSalt[1] = puVar5[9];\n          (pWVar10->hdr).aCksum[0] = puVar5[10];\n          uVar13 = (pWVar10->hdr).mxFrame;\n          (pWVar10->hdr).aCksum[1] = puVar5[0xb];\n          if (uVar13 + 1 <= uVar9) {\n            uVar15 = uVar13 + 0x22;\n            while( true ) {\n              if (uVar15 < 0x1000) {\n                uVar13 = (*ppuVar12)[uVar15];\n              }\n              else {\n                uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];\n              }\n              local_58 = pagerUndoCallback(pPager,uVar13);\n              uVar1 = uVar15 - 0x20;\n              bVar18 = local_58 == 0;\n              uVar15 = uVar15 + 1;\n              if (uVar9 < uVar1 || !bVar18) break;\n              ppuVar12 = pWVar10->apWiData;\n            }\n            uVar13 = (pWVar10->hdr).mxFrame;\n          }\n          if (uVar9 != uVar13) {\n            walCleanupHash(pWVar10);\n          }\n        }\n        pPVar3 = pPager->pPCache;\n        pPVar11 = pPVar3->pDirty;\n        if (pPVar11 != (PgHdr *)0x0) {\n          do {\n            pPVar4 = pPVar11->pDirtyNext;\n            pPVar11->pDirty = pPVar4;\n            pPVar11 = pPVar4;\n          } while (pPVar4 != (PgHdr *)0x0);\n          pPVar11 = pPVar3->pDirty;\n        }\n        pPVar11 = pcacheSortDirtyList(pPVar11);\n        if ((pPVar11 != (PgHdr *)0x0) && (bVar18)) {\n          do {\n            pPVar4 = pPVar11->pDirty;\n            local_58 = pagerUndoCallback(pPager,pPVar11->pgno);\n            if (pPVar4 == (PgHdr *)0x0) break;\n            pPVar11 = pPVar4;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }" if (parenthesized_expression "((iVar8 == 0) ||\n         (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 == (PagerSavepoint *)0x0))" ( (binary_expression "(iVar8 == 0) ||\n         (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 == (PagerSavepoint *)0x0)" (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) || (parenthesized_expression "(local_44 = pPager->aSavepoint + iVar8 + -1, local_44 == (PagerSavepoint *)0x0)" ( (comma_expression "local_44 = pPager->aSavepoint + iVar8 + -1, local_44 == (PagerSavepoint *)0x0" (assignment_expression "local_44 = pPager->aSavepoint + iVar8 + -1" identifier = (binary_expression "pPager->aSavepoint + iVar8 + -1" (binary_expression "pPager->aSavepoint + iVar8" (field_expression "pPager->aSavepoint" identifier -> field_identifier) + identifier) + number_literal)) , (binary_expression "local_44 == (PagerSavepoint *)0x0" identifier == (cast_expression "(PagerSavepoint *)0x0" ( (type_descriptor "PagerSavepoint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        bVar18 = true;\n        local_58 = 0;\n        pPager->dbSize = pPager->dbOrigSize;\n        pPager->changeCountDone = pPager->tempFile;\n        if (pWVar10->writeLock != '\0') {\n          ppuVar12 = pWVar10->apWiData;\n          uVar9 = (pWVar10->hdr).mxFrame;\n          puVar5 = *ppuVar12;\n          (pWVar10->hdr).iVersion = *puVar5;\n          (pWVar10->hdr).unused = puVar5[1];\n          (pWVar10->hdr).iChange = puVar5[2];\n          uVar13 = puVar5[3];\n          (pWVar10->hdr).isInit = (char)uVar13;\n          (pWVar10->hdr).bigEndCksum = (char)(uVar13 >> 8);\n          (pWVar10->hdr).szPage = (short)(uVar13 >> 0x10);\n          (pWVar10->hdr).mxFrame = puVar5[4];\n          (pWVar10->hdr).nPage = puVar5[5];\n          (pWVar10->hdr).aFrameCksum[0] = puVar5[6];\n          (pWVar10->hdr).aFrameCksum[1] = puVar5[7];\n          (pWVar10->hdr).aSalt[0] = puVar5[8];\n          (pWVar10->hdr).aSalt[1] = puVar5[9];\n          (pWVar10->hdr).aCksum[0] = puVar5[10];\n          uVar13 = (pWVar10->hdr).mxFrame;\n          (pWVar10->hdr).aCksum[1] = puVar5[0xb];\n          if (uVar13 + 1 <= uVar9) {\n            uVar15 = uVar13 + 0x22;\n            while( true ) {\n              if (uVar15 < 0x1000) {\n                uVar13 = (*ppuVar12)[uVar15];\n              }\n              else {\n                uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];\n              }\n              local_58 = pagerUndoCallback(pPager,uVar13);\n              uVar1 = uVar15 - 0x20;\n              bVar18 = local_58 == 0;\n              uVar15 = uVar15 + 1;\n              if (uVar9 < uVar1 || !bVar18) break;\n              ppuVar12 = pWVar10->apWiData;\n            }\n            uVar13 = (pWVar10->hdr).mxFrame;\n          }\n          if (uVar9 != uVar13) {\n            walCleanupHash(pWVar10);\n          }\n        }\n        pPVar3 = pPager->pPCache;\n        pPVar11 = pPVar3->pDirty;\n        if (pPVar11 != (PgHdr *)0x0) {\n          do {\n            pPVar4 = pPVar11->pDirtyNext;\n            pPVar11->pDirty = pPVar4;\n            pPVar11 = pPVar4;\n          } while (pPVar4 != (PgHdr *)0x0);\n          pPVar11 = pPVar3->pDirty;\n        }\n        pPVar11 = pcacheSortDirtyList(pPVar11);\n        if ((pPVar11 != (PgHdr *)0x0) && (bVar18)) {\n          do {\n            pPVar4 = pPVar11->pDirty;\n            local_58 = pagerUndoCallback(pPager,pPVar11->pgno);\n            if (pPVar4 == (PgHdr *)0x0) break;\n            pPVar11 = pPVar4;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }" { (expression_statement "bVar18 = true;" (assignment_expression "bVar18 = true" identifier = true) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "pPager->dbSize = pPager->dbOrigSize;" (assignment_expression "pPager->dbSize = pPager->dbOrigSize" (field_expression "pPager->dbSize" identifier -> field_identifier) = (field_expression "pPager->dbOrigSize" identifier -> field_identifier)) ;) (expression_statement "pPager->changeCountDone = pPager->tempFile;" (assignment_expression "pPager->changeCountDone = pPager->tempFile" (field_expression "pPager->changeCountDone" identifier -> field_identifier) = (field_expression "pPager->tempFile" identifier -> field_identifier)) ;) (if_statement "if (pWVar10->writeLock != '\0') {\n          ppuVar12 = pWVar10->apWiData;\n          uVar9 = (pWVar10->hdr).mxFrame;\n          puVar5 = *ppuVar12;\n          (pWVar10->hdr).iVersion = *puVar5;\n          (pWVar10->hdr).unused = puVar5[1];\n          (pWVar10->hdr).iChange = puVar5[2];\n          uVar13 = puVar5[3];\n          (pWVar10->hdr).isInit = (char)uVar13;\n          (pWVar10->hdr).bigEndCksum = (char)(uVar13 >> 8);\n          (pWVar10->hdr).szPage = (short)(uVar13 >> 0x10);\n          (pWVar10->hdr).mxFrame = puVar5[4];\n          (pWVar10->hdr).nPage = puVar5[5];\n          (pWVar10->hdr).aFrameCksum[0] = puVar5[6];\n          (pWVar10->hdr).aFrameCksum[1] = puVar5[7];\n          (pWVar10->hdr).aSalt[0] = puVar5[8];\n          (pWVar10->hdr).aSalt[1] = puVar5[9];\n          (pWVar10->hdr).aCksum[0] = puVar5[10];\n          uVar13 = (pWVar10->hdr).mxFrame;\n          (pWVar10->hdr).aCksum[1] = puVar5[0xb];\n          if (uVar13 + 1 <= uVar9) {\n            uVar15 = uVar13 + 0x22;\n            while( true ) {\n              if (uVar15 < 0x1000) {\n                uVar13 = (*ppuVar12)[uVar15];\n              }\n              else {\n                uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];\n              }\n              local_58 = pagerUndoCallback(pPager,uVar13);\n              uVar1 = uVar15 - 0x20;\n              bVar18 = local_58 == 0;\n              uVar15 = uVar15 + 1;\n              if (uVar9 < uVar1 || !bVar18) break;\n              ppuVar12 = pWVar10->apWiData;\n            }\n            uVar13 = (pWVar10->hdr).mxFrame;\n          }\n          if (uVar9 != uVar13) {\n            walCleanupHash(pWVar10);\n          }\n        }" if (parenthesized_expression "(pWVar10->writeLock != '\0')" ( (binary_expression "pWVar10->writeLock != '\0'" (field_expression "pWVar10->writeLock" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          ppuVar12 = pWVar10->apWiData;\n          uVar9 = (pWVar10->hdr).mxFrame;\n          puVar5 = *ppuVar12;\n          (pWVar10->hdr).iVersion = *puVar5;\n          (pWVar10->hdr).unused = puVar5[1];\n          (pWVar10->hdr).iChange = puVar5[2];\n          uVar13 = puVar5[3];\n          (pWVar10->hdr).isInit = (char)uVar13;\n          (pWVar10->hdr).bigEndCksum = (char)(uVar13 >> 8);\n          (pWVar10->hdr).szPage = (short)(uVar13 >> 0x10);\n          (pWVar10->hdr).mxFrame = puVar5[4];\n          (pWVar10->hdr).nPage = puVar5[5];\n          (pWVar10->hdr).aFrameCksum[0] = puVar5[6];\n          (pWVar10->hdr).aFrameCksum[1] = puVar5[7];\n          (pWVar10->hdr).aSalt[0] = puVar5[8];\n          (pWVar10->hdr).aSalt[1] = puVar5[9];\n          (pWVar10->hdr).aCksum[0] = puVar5[10];\n          uVar13 = (pWVar10->hdr).mxFrame;\n          (pWVar10->hdr).aCksum[1] = puVar5[0xb];\n          if (uVar13 + 1 <= uVar9) {\n            uVar15 = uVar13 + 0x22;\n            while( true ) {\n              if (uVar15 < 0x1000) {\n                uVar13 = (*ppuVar12)[uVar15];\n              }\n              else {\n                uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];\n              }\n              local_58 = pagerUndoCallback(pPager,uVar13);\n              uVar1 = uVar15 - 0x20;\n              bVar18 = local_58 == 0;\n              uVar15 = uVar15 + 1;\n              if (uVar9 < uVar1 || !bVar18) break;\n              ppuVar12 = pWVar10->apWiData;\n            }\n            uVar13 = (pWVar10->hdr).mxFrame;\n          }\n          if (uVar9 != uVar13) {\n            walCleanupHash(pWVar10);\n          }\n        }" { (expression_statement "ppuVar12 = pWVar10->apWiData;" (assignment_expression "ppuVar12 = pWVar10->apWiData" identifier = (field_expression "pWVar10->apWiData" identifier -> field_identifier)) ;) (expression_statement "uVar9 = (pWVar10->hdr).mxFrame;" (assignment_expression "uVar9 = (pWVar10->hdr).mxFrame" identifier = (field_expression "(pWVar10->hdr).mxFrame" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar5 = *ppuVar12;" (assignment_expression "puVar5 = *ppuVar12" identifier = (pointer_expression "*ppuVar12" * identifier)) ;) (expression_statement "(pWVar10->hdr).iVersion = *puVar5;" (assignment_expression "(pWVar10->hdr).iVersion = *puVar5" (field_expression "(pWVar10->hdr).iVersion" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "(pWVar10->hdr).unused = puVar5[1];" (assignment_expression "(pWVar10->hdr).unused = puVar5[1]" (field_expression "(pWVar10->hdr).unused" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier) = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "(pWVar10->hdr).iChange = puVar5[2];" (assignment_expression "(pWVar10->hdr).iChange = puVar5[2]" (field_expression "(pWVar10->hdr).iChange" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier) = (subscript_expression "puVar5[2]" identifier [ number_literal ])) ;) (expression_statement "uVar13 = puVar5[3];" (assignment_expression "uVar13 = puVar5[3]" identifier = (subscript_expression "puVar5[3]" identifier [ number_literal ])) ;) (expression_statement "(pWVar10->hdr).isInit = (char)uVar13;" (assignment_expression "(pWVar10->hdr).isInit = (char)uVar13" (field_expression "(pWVar10->hdr).isInit" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(char)uVar13" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "(pWVar10->hdr).bigEndCksum = (char)(uVar13 >> 8);" (assignment_expression "(pWVar10->hdr).bigEndCksum = (char)(uVar13 >> 8)" (field_expression "(pWVar10->hdr).bigEndCksum" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(char)(uVar13 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar13 >> 8)" ( (binary_expression "uVar13 >> 8" identifier >> number_literal) )))) ;) (expression_statement "(pWVar10->hdr).szPage = (short)(uVar13 >> 0x10);" (assignment_expression "(pWVar10->hdr).szPage = (short)(uVar13 >> 0x10)" (field_expression "(pWVar10->hdr).szPage" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(short)(uVar13 >> 0x10)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(uVar13 >> 0x10)" ( (binary_expression "uVar13 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "(pWVar10->hdr).mxFrame = puVar5[4];" (assignment_expression "(pWVar10->hdr).mxFrame = puVar5[4]" (field_expression "(pWVar10->hdr).mxFrame" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier) = (subscript_expression "puVar5[4]" identifier [ number_literal ])) ;) (expression_statement "(pWVar10->hdr).nPage = puVar5[5];" (assignment_expression "(pWVar10->hdr).nPage = puVar5[5]" (field_expression "(pWVar10->hdr).nPage" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier) = (subscript_expression "puVar5[5]" identifier [ number_literal ])) ;) (expression_statement "(pWVar10->hdr).aFrameCksum[0] = puVar5[6];" (assignment_expression "(pWVar10->hdr).aFrameCksum[0] = puVar5[6]" (subscript_expression "(pWVar10->hdr).aFrameCksum[0]" (field_expression "(pWVar10->hdr).aFrameCksum" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (subscript_expression "puVar5[6]" identifier [ number_literal ])) ;) (expression_statement "(pWVar10->hdr).aFrameCksum[1] = puVar5[7];" (assignment_expression "(pWVar10->hdr).aFrameCksum[1] = puVar5[7]" (subscript_expression "(pWVar10->hdr).aFrameCksum[1]" (field_expression "(pWVar10->hdr).aFrameCksum" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (subscript_expression "puVar5[7]" identifier [ number_literal ])) ;) (expression_statement "(pWVar10->hdr).aSalt[0] = puVar5[8];" (assignment_expression "(pWVar10->hdr).aSalt[0] = puVar5[8]" (subscript_expression "(pWVar10->hdr).aSalt[0]" (field_expression "(pWVar10->hdr).aSalt" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (subscript_expression "puVar5[8]" identifier [ number_literal ])) ;) (expression_statement "(pWVar10->hdr).aSalt[1] = puVar5[9];" (assignment_expression "(pWVar10->hdr).aSalt[1] = puVar5[9]" (subscript_expression "(pWVar10->hdr).aSalt[1]" (field_expression "(pWVar10->hdr).aSalt" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (subscript_expression "puVar5[9]" identifier [ number_literal ])) ;) (expression_statement "(pWVar10->hdr).aCksum[0] = puVar5[10];" (assignment_expression "(pWVar10->hdr).aCksum[0] = puVar5[10]" (subscript_expression "(pWVar10->hdr).aCksum[0]" (field_expression "(pWVar10->hdr).aCksum" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (subscript_expression "puVar5[10]" identifier [ number_literal ])) ;) (expression_statement "uVar13 = (pWVar10->hdr).mxFrame;" (assignment_expression "uVar13 = (pWVar10->hdr).mxFrame" identifier = (field_expression "(pWVar10->hdr).mxFrame" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(pWVar10->hdr).aCksum[1] = puVar5[0xb];" (assignment_expression "(pWVar10->hdr).aCksum[1] = puVar5[0xb]" (subscript_expression "(pWVar10->hdr).aCksum[1]" (field_expression "(pWVar10->hdr).aCksum" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (subscript_expression "puVar5[0xb]" identifier [ number_literal ])) ;) (if_statement "if (uVar13 + 1 <= uVar9) {\n            uVar15 = uVar13 + 0x22;\n            while( true ) {\n              if (uVar15 < 0x1000) {\n                uVar13 = (*ppuVar12)[uVar15];\n              }\n              else {\n                uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];\n              }\n              local_58 = pagerUndoCallback(pPager,uVar13);\n              uVar1 = uVar15 - 0x20;\n              bVar18 = local_58 == 0;\n              uVar15 = uVar15 + 1;\n              if (uVar9 < uVar1 || !bVar18) break;\n              ppuVar12 = pWVar10->apWiData;\n            }\n            uVar13 = (pWVar10->hdr).mxFrame;\n          }" if (parenthesized_expression "(uVar13 + 1 <= uVar9)" ( (binary_expression "uVar13 + 1 <= uVar9" (binary_expression "uVar13 + 1" identifier + number_literal) <= identifier) )) (compound_statement "{\n            uVar15 = uVar13 + 0x22;\n            while( true ) {\n              if (uVar15 < 0x1000) {\n                uVar13 = (*ppuVar12)[uVar15];\n              }\n              else {\n                uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];\n              }\n              local_58 = pagerUndoCallback(pPager,uVar13);\n              uVar1 = uVar15 - 0x20;\n              bVar18 = local_58 == 0;\n              uVar15 = uVar15 + 1;\n              if (uVar9 < uVar1 || !bVar18) break;\n              ppuVar12 = pWVar10->apWiData;\n            }\n            uVar13 = (pWVar10->hdr).mxFrame;\n          }" { (expression_statement "uVar15 = uVar13 + 0x22;" (assignment_expression "uVar15 = uVar13 + 0x22" identifier = (binary_expression "uVar13 + 0x22" identifier + number_literal)) ;) (while_statement "while( true ) {\n              if (uVar15 < 0x1000) {\n                uVar13 = (*ppuVar12)[uVar15];\n              }\n              else {\n                uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];\n              }\n              local_58 = pagerUndoCallback(pPager,uVar13);\n              uVar1 = uVar15 - 0x20;\n              bVar18 = local_58 == 0;\n              uVar15 = uVar15 + 1;\n              if (uVar9 < uVar1 || !bVar18) break;\n              ppuVar12 = pWVar10->apWiData;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              if (uVar15 < 0x1000) {\n                uVar13 = (*ppuVar12)[uVar15];\n              }\n              else {\n                uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];\n              }\n              local_58 = pagerUndoCallback(pPager,uVar13);\n              uVar1 = uVar15 - 0x20;\n              bVar18 = local_58 == 0;\n              uVar15 = uVar15 + 1;\n              if (uVar9 < uVar1 || !bVar18) break;\n              ppuVar12 = pWVar10->apWiData;\n            }" { (if_statement "if (uVar15 < 0x1000) {\n                uVar13 = (*ppuVar12)[uVar15];\n              }\n              else {\n                uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];\n              }" if (parenthesized_expression "(uVar15 < 0x1000)" ( (binary_expression "uVar15 < 0x1000" identifier < number_literal) )) (compound_statement "{\n                uVar13 = (*ppuVar12)[uVar15];\n              }" { (expression_statement "uVar13 = (*ppuVar12)[uVar15];" (assignment_expression "uVar13 = (*ppuVar12)[uVar15]" identifier = (subscript_expression "(*ppuVar12)[uVar15]" (parenthesized_expression "(*ppuVar12)" ( (pointer_expression "*ppuVar12" * identifier) )) [ identifier ])) ;) }) (else_clause "else {\n                uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];\n              }" else (compound_statement "{\n                uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];\n              }" { (expression_statement "uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff];" (assignment_expression "uVar13 = ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff]" identifier = (subscript_expression "ppuVar12[uVar15 >> 0xc][uVar15 & 0xfff]" (subscript_expression "ppuVar12[uVar15 >> 0xc]" identifier [ (binary_expression "uVar15 >> 0xc" identifier >> number_literal) ]) [ (binary_expression "uVar15 & 0xfff" identifier & number_literal) ])) ;) }))) (expression_statement "local_58 = pagerUndoCallback(pPager,uVar13);" (assignment_expression "local_58 = pagerUndoCallback(pPager,uVar13)" identifier = (call_expression "pagerUndoCallback(pPager,uVar13)" identifier (argument_list "(pPager,uVar13)" ( identifier , identifier )))) ;) (expression_statement "uVar1 = uVar15 - 0x20;" (assignment_expression "uVar1 = uVar15 - 0x20" identifier = (binary_expression "uVar15 - 0x20" identifier - number_literal)) ;) (expression_statement "bVar18 = local_58 == 0;" (assignment_expression "bVar18 = local_58 == 0" identifier = (binary_expression "local_58 == 0" identifier == number_literal)) ;) (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (if_statement "if (uVar9 < uVar1 || !bVar18) break;" if (parenthesized_expression "(uVar9 < uVar1 || !bVar18)" ( (binary_expression "uVar9 < uVar1 || !bVar18" (binary_expression "uVar9 < uVar1" identifier < identifier) || (unary_expression "!bVar18" ! identifier)) )) (break_statement "break;" break ;)) (expression_statement "ppuVar12 = pWVar10->apWiData;" (assignment_expression "ppuVar12 = pWVar10->apWiData" identifier = (field_expression "pWVar10->apWiData" identifier -> field_identifier)) ;) })) (expression_statement "uVar13 = (pWVar10->hdr).mxFrame;" (assignment_expression "uVar13 = (pWVar10->hdr).mxFrame" identifier = (field_expression "(pWVar10->hdr).mxFrame" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier)) ;) })) (if_statement "if (uVar9 != uVar13) {\n            walCleanupHash(pWVar10);\n          }" if (parenthesized_expression "(uVar9 != uVar13)" ( (binary_expression "uVar9 != uVar13" identifier != identifier) )) (compound_statement "{\n            walCleanupHash(pWVar10);\n          }" { (expression_statement "walCleanupHash(pWVar10);" (call_expression "walCleanupHash(pWVar10)" identifier (argument_list "(pWVar10)" ( identifier ))) ;) })) })) (expression_statement "pPVar3 = pPager->pPCache;" (assignment_expression "pPVar3 = pPager->pPCache" identifier = (field_expression "pPager->pPCache" identifier -> field_identifier)) ;) (expression_statement "pPVar11 = pPVar3->pDirty;" (assignment_expression "pPVar11 = pPVar3->pDirty" identifier = (field_expression "pPVar3->pDirty" identifier -> field_identifier)) ;) (if_statement "if (pPVar11 != (PgHdr *)0x0) {\n          do {\n            pPVar4 = pPVar11->pDirtyNext;\n            pPVar11->pDirty = pPVar4;\n            pPVar11 = pPVar4;\n          } while (pPVar4 != (PgHdr *)0x0);\n          pPVar11 = pPVar3->pDirty;\n        }" if (parenthesized_expression "(pPVar11 != (PgHdr *)0x0)" ( (binary_expression "pPVar11 != (PgHdr *)0x0" identifier != (cast_expression "(PgHdr *)0x0" ( (type_descriptor "PgHdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            pPVar4 = pPVar11->pDirtyNext;\n            pPVar11->pDirty = pPVar4;\n            pPVar11 = pPVar4;\n          } while (pPVar4 != (PgHdr *)0x0);\n          pPVar11 = pPVar3->pDirty;\n        }" { (do_statement "do {\n            pPVar4 = pPVar11->pDirtyNext;\n            pPVar11->pDirty = pPVar4;\n            pPVar11 = pPVar4;\n          } while (pPVar4 != (PgHdr *)0x0);" do (compound_statement "{\n            pPVar4 = pPVar11->pDirtyNext;\n            pPVar11->pDirty = pPVar4;\n            pPVar11 = pPVar4;\n          }" { (expression_statement "pPVar4 = pPVar11->pDirtyNext;" (assignment_expression "pPVar4 = pPVar11->pDirtyNext" identifier = (field_expression "pPVar11->pDirtyNext" identifier -> field_identifier)) ;) (expression_statement "pPVar11->pDirty = pPVar4;" (assignment_expression "pPVar11->pDirty = pPVar4" (field_expression "pPVar11->pDirty" identifier -> field_identifier) = identifier) ;) (expression_statement "pPVar11 = pPVar4;" (assignment_expression "pPVar11 = pPVar4" identifier = identifier) ;) }) while (parenthesized_expression "(pPVar4 != (PgHdr *)0x0)" ( (binary_expression "pPVar4 != (PgHdr *)0x0" identifier != (cast_expression "(PgHdr *)0x0" ( (type_descriptor "PgHdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pPVar11 = pPVar3->pDirty;" (assignment_expression "pPVar11 = pPVar3->pDirty" identifier = (field_expression "pPVar3->pDirty" identifier -> field_identifier)) ;) })) (expression_statement "pPVar11 = pcacheSortDirtyList(pPVar11);" (assignment_expression "pPVar11 = pcacheSortDirtyList(pPVar11)" identifier = (call_expression "pcacheSortDirtyList(pPVar11)" identifier (argument_list "(pPVar11)" ( identifier )))) ;) (if_statement "if ((pPVar11 != (PgHdr *)0x0) && (bVar18)) {\n          do {\n            pPVar4 = pPVar11->pDirty;\n            local_58 = pagerUndoCallback(pPager,pPVar11->pgno);\n            if (pPVar4 == (PgHdr *)0x0) break;\n            pPVar11 = pPVar4;\n          } while (local_58 == 0);\n        }" if (parenthesized_expression "((pPVar11 != (PgHdr *)0x0) && (bVar18))" ( (binary_expression "(pPVar11 != (PgHdr *)0x0) && (bVar18)" (parenthesized_expression "(pPVar11 != (PgHdr *)0x0)" ( (binary_expression "pPVar11 != (PgHdr *)0x0" identifier != (cast_expression "(PgHdr *)0x0" ( (type_descriptor "PgHdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(bVar18)" ( identifier ))) )) (compound_statement "{\n          do {\n            pPVar4 = pPVar11->pDirty;\n            local_58 = pagerUndoCallback(pPager,pPVar11->pgno);\n            if (pPVar4 == (PgHdr *)0x0) break;\n            pPVar11 = pPVar4;\n          } while (local_58 == 0);\n        }" { (do_statement "do {\n            pPVar4 = pPVar11->pDirty;\n            local_58 = pagerUndoCallback(pPager,pPVar11->pgno);\n            if (pPVar4 == (PgHdr *)0x0) break;\n            pPVar11 = pPVar4;\n          } while (local_58 == 0);" do (compound_statement "{\n            pPVar4 = pPVar11->pDirty;\n            local_58 = pagerUndoCallback(pPager,pPVar11->pgno);\n            if (pPVar4 == (PgHdr *)0x0) break;\n            pPVar11 = pPVar4;\n          }" { (expression_statement "pPVar4 = pPVar11->pDirty;" (assignment_expression "pPVar4 = pPVar11->pDirty" identifier = (field_expression "pPVar11->pDirty" identifier -> field_identifier)) ;) (expression_statement "local_58 = pagerUndoCallback(pPager,pPVar11->pgno);" (assignment_expression "local_58 = pagerUndoCallback(pPager,pPVar11->pgno)" identifier = (call_expression "pagerUndoCallback(pPager,pPVar11->pgno)" identifier (argument_list "(pPager,pPVar11->pgno)" ( identifier , (field_expression "pPVar11->pgno" identifier -> field_identifier) )))) ;) (if_statement "if (pPVar4 == (PgHdr *)0x0) break;" if (parenthesized_expression "(pPVar4 == (PgHdr *)0x0)" ( (binary_expression "pPVar4 == (PgHdr *)0x0" identifier == (cast_expression "(PgHdr *)0x0" ( (type_descriptor "PgHdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pPVar11 = pPVar4;" (assignment_expression "pPVar11 = pPVar4" identifier = identifier) ;) }) while (parenthesized_expression "(local_58 == 0)" ( (binary_expression "local_58 == 0" identifier == number_literal) )) ;) })) (goto_statement "goto LAB_0007c632;" goto statement_identifier ;) })) (labeled_statement "LAB_0007c3bd:\n      PVar14 = local_44->nOrig;" statement_identifier : (expression_statement "PVar14 = local_44->nOrig;" (assignment_expression "PVar14 = local_44->nOrig" identifier = (field_expression "local_44->nOrig" identifier -> field_identifier)) ;)) (expression_statement "local_5c = (Bitvec *)sqlite3MallocZero(in_stack_ffffff94);" (assignment_expression "local_5c = (Bitvec *)sqlite3MallocZero(in_stack_ffffff94)" identifier = (cast_expression "(Bitvec *)sqlite3MallocZero(in_stack_ffffff94)" ( (type_descriptor "Bitvec *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3MallocZero(in_stack_ffffff94)" identifier (argument_list "(in_stack_ffffff94)" ( identifier ))))) ;) (expression_statement "local_58 = 7;" (assignment_expression "local_58 = 7" identifier = number_literal) ;) (if_statement "if (local_5c == (Bitvec *)0x0) goto LAB_0007c632;" if (parenthesized_expression "(local_5c == (Bitvec *)0x0)" ( (binary_expression "local_5c == (Bitvec *)0x0" identifier == (cast_expression "(Bitvec *)0x0" ( (type_descriptor "Bitvec *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0007c632;" goto statement_identifier ;)) (expression_statement "local_5c->iSize = PVar14;" (assignment_expression "local_5c->iSize = PVar14" (field_expression "local_5c->iSize" identifier -> field_identifier) = identifier) ;) (expression_statement "local_60 = *(int *)((int)&pPager->journalOff + 4);" (assignment_expression "local_60 = *(int *)((int)&pPager->journalOff + 4)" identifier = (pointer_expression "*(int *)((int)&pPager->journalOff + 4)" * (cast_expression "(int *)((int)&pPager->journalOff + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPager->journalOff + 4)" ( (binary_expression "(int)&pPager->journalOff + 4" (cast_expression "(int)&pPager->journalOff" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPager->journalOff" & (field_expression "pPager->journalOff" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "pPager->dbSize = local_44->nOrig;" (assignment_expression "pPager->dbSize = local_44->nOrig" (field_expression "pPager->dbSize" identifier -> field_identifier) = (field_expression "local_44->nOrig" identifier -> field_identifier)) ;) (expression_statement "pPager->changeCountDone = pPager->tempFile;" (assignment_expression "pPager->changeCountDone = pPager->tempFile" (field_expression "pPager->changeCountDone" identifier -> field_identifier) = (field_expression "pPager->tempFile" identifier -> field_identifier)) ;) (expression_statement "local_64 = (uint)pPager->journalOff;" (assignment_expression "local_64 = (uint)pPager->journalOff" identifier = (cast_expression "(uint)pPager->journalOff" ( (type_descriptor "uint" type_identifier) ) (field_expression "pPager->journalOff" identifier -> field_identifier))) ;) (if_statement "if (pPager->pWal == (Wal *)0x0) {\n        iVar8 = *(int *)((int)&local_44->iHdrOffset + 4);\n        uVar9 = (uint)local_44->iHdrOffset;\n        uVar15 = (uint)local_44->iOffset;\n        iVar16 = *(int *)((int)&local_44->iOffset + 4);\n        if (iVar8 == 0 && uVar9 == 0) {\n          uVar9 = local_64;\n          iVar8 = local_60;\n        }\n        *(uint *)&pPager->journalOff = uVar15;\n        *(int *)((int)&pPager->journalOff + 4) = iVar16;\n        while ((SBORROW4(iVar16,iVar8) != SBORROW4(iVar16 - iVar8,(uint)(uVar15 < uVar9))) !=\n               (int)((iVar16 - iVar8) - (uint)(uVar15 < uVar9)) < 0) {\n          local_58 = pager_playback_one_page\n                               (pPager,&pPager->journalOff,(Bitvec *)0x1,1,(int)in_stack_ffffff8c);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar15 = (uint)pPager->journalOff;\n          iVar16 = *(int *)((int)&pPager->journalOff + 4);\n        }\n        if ((SBORROW4(iVar16,local_60) != SBORROW4(iVar16 - local_60,(uint)(uVar15 < local_64))) !=\n            (int)((iVar16 - local_60) - (uint)(uVar15 < local_64)) < 0) goto LAB_0007c431;\n      }\n      else {\n        *(undefined4 *)&pPager->journalOff = 0;\n        *(undefined4 *)((int)&pPager->journalOff + 4) = 0;\n        if (-local_60 < (int)(uint)(local_64 != 0)) {\nLAB_0007c431:\n          do {\n            nJRec = 0;\n            in_stack_ffffff8c = &nJRec;\n            local_58 = readJournalHdr(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy);\n            if (nJRec != 0) {\n              if (local_58 != 0) {\nLAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;\n                goto LAB_0007c629;\n              }\n              uVar9 = (uint)pPager->journalOff;\n              iVar8 = *(int *)((int)&pPager->journalOff + 4);\nLAB_0007c6f6:\n              if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }\n              break;\n            }\n            uVar9 = (uint)pPager->journalOff;\n            iVar8 = *(int *)((int)&pPager->journalOff + 4);\n            if (*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8 &&\n                pPager->sectorSize + (int)pPager->journalHdr == uVar9) {\n              in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8);\n              nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);\n              if (local_58 == 0) {\n                if (nJRec != 0) goto LAB_0007c6f6;\n                goto LAB_0007c598;\n              }\n              goto LAB_0007c4bc;\n            }\n            if (local_58 != 0) goto LAB_0007c4bc;\nLAB_0007c598:\n          } while ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0);\n          if (local_44 == (PagerSavepoint *)0x0) goto LAB_0007c6c0;\n        }\n      }" if (parenthesized_expression "(pPager->pWal == (Wal *)0x0)" ( (binary_expression "pPager->pWal == (Wal *)0x0" (field_expression "pPager->pWal" identifier -> field_identifier) == (cast_expression "(Wal *)0x0" ( (type_descriptor "Wal *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar8 = *(int *)((int)&local_44->iHdrOffset + 4);\n        uVar9 = (uint)local_44->iHdrOffset;\n        uVar15 = (uint)local_44->iOffset;\n        iVar16 = *(int *)((int)&local_44->iOffset + 4);\n        if (iVar8 == 0 && uVar9 == 0) {\n          uVar9 = local_64;\n          iVar8 = local_60;\n        }\n        *(uint *)&pPager->journalOff = uVar15;\n        *(int *)((int)&pPager->journalOff + 4) = iVar16;\n        while ((SBORROW4(iVar16,iVar8) != SBORROW4(iVar16 - iVar8,(uint)(uVar15 < uVar9))) !=\n               (int)((iVar16 - iVar8) - (uint)(uVar15 < uVar9)) < 0) {\n          local_58 = pager_playback_one_page\n                               (pPager,&pPager->journalOff,(Bitvec *)0x1,1,(int)in_stack_ffffff8c);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar15 = (uint)pPager->journalOff;\n          iVar16 = *(int *)((int)&pPager->journalOff + 4);\n        }\n        if ((SBORROW4(iVar16,local_60) != SBORROW4(iVar16 - local_60,(uint)(uVar15 < local_64))) !=\n            (int)((iVar16 - local_60) - (uint)(uVar15 < local_64)) < 0) goto LAB_0007c431;\n      }" { (expression_statement "iVar8 = *(int *)((int)&local_44->iHdrOffset + 4);" (assignment_expression "iVar8 = *(int *)((int)&local_44->iHdrOffset + 4)" identifier = (pointer_expression "*(int *)((int)&local_44->iHdrOffset + 4)" * (cast_expression "(int *)((int)&local_44->iHdrOffset + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_44->iHdrOffset + 4)" ( (binary_expression "(int)&local_44->iHdrOffset + 4" (cast_expression "(int)&local_44->iHdrOffset" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_44->iHdrOffset" & (field_expression "local_44->iHdrOffset" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar9 = (uint)local_44->iHdrOffset;" (assignment_expression "uVar9 = (uint)local_44->iHdrOffset" identifier = (cast_expression "(uint)local_44->iHdrOffset" ( (type_descriptor "uint" type_identifier) ) (field_expression "local_44->iHdrOffset" identifier -> field_identifier))) ;) (expression_statement "uVar15 = (uint)local_44->iOffset;" (assignment_expression "uVar15 = (uint)local_44->iOffset" identifier = (cast_expression "(uint)local_44->iOffset" ( (type_descriptor "uint" type_identifier) ) (field_expression "local_44->iOffset" identifier -> field_identifier))) ;) (expression_statement "iVar16 = *(int *)((int)&local_44->iOffset + 4);" (assignment_expression "iVar16 = *(int *)((int)&local_44->iOffset + 4)" identifier = (pointer_expression "*(int *)((int)&local_44->iOffset + 4)" * (cast_expression "(int *)((int)&local_44->iOffset + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_44->iOffset + 4)" ( (binary_expression "(int)&local_44->iOffset + 4" (cast_expression "(int)&local_44->iOffset" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_44->iOffset" & (field_expression "local_44->iOffset" identifier -> field_identifier))) + number_literal) ))))) ;) (if_statement "if (iVar8 == 0 && uVar9 == 0) {\n          uVar9 = local_64;\n          iVar8 = local_60;\n        }" if (parenthesized_expression "(iVar8 == 0 && uVar9 == 0)" ( (binary_expression "iVar8 == 0 && uVar9 == 0" (binary_expression "iVar8 == 0" identifier == number_literal) && (binary_expression "uVar9 == 0" identifier == number_literal)) )) (compound_statement "{\n          uVar9 = local_64;\n          iVar8 = local_60;\n        }" { (expression_statement "uVar9 = local_64;" (assignment_expression "uVar9 = local_64" identifier = identifier) ;) (expression_statement "iVar8 = local_60;" (assignment_expression "iVar8 = local_60" identifier = identifier) ;) })) (expression_statement "*(uint *)&pPager->journalOff = uVar15;" (assignment_expression "*(uint *)&pPager->journalOff = uVar15" (pointer_expression "*(uint *)&pPager->journalOff" * (cast_expression "(uint *)&pPager->journalOff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pPager->journalOff" & (field_expression "pPager->journalOff" identifier -> field_identifier)))) = identifier) ;) (expression_statement "*(int *)((int)&pPager->journalOff + 4) = iVar16;" (assignment_expression "*(int *)((int)&pPager->journalOff + 4) = iVar16" (pointer_expression "*(int *)((int)&pPager->journalOff + 4)" * (cast_expression "(int *)((int)&pPager->journalOff + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPager->journalOff + 4)" ( (binary_expression "(int)&pPager->journalOff + 4" (cast_expression "(int)&pPager->journalOff" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPager->journalOff" & (field_expression "pPager->journalOff" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (while_statement "while ((SBORROW4(iVar16,iVar8) != SBORROW4(iVar16 - iVar8,(uint)(uVar15 < uVar9))) !=\n               (int)((iVar16 - iVar8) - (uint)(uVar15 < uVar9)) < 0) {\n          local_58 = pager_playback_one_page\n                               (pPager,&pPager->journalOff,(Bitvec *)0x1,1,(int)in_stack_ffffff8c);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar15 = (uint)pPager->journalOff;\n          iVar16 = *(int *)((int)&pPager->journalOff + 4);\n        }" while (parenthesized_expression "((SBORROW4(iVar16,iVar8) != SBORROW4(iVar16 - iVar8,(uint)(uVar15 < uVar9))) !=\n               (int)((iVar16 - iVar8) - (uint)(uVar15 < uVar9)) < 0)" ( (binary_expression "(SBORROW4(iVar16,iVar8) != SBORROW4(iVar16 - iVar8,(uint)(uVar15 < uVar9))) !=\n               (int)((iVar16 - iVar8) - (uint)(uVar15 < uVar9)) < 0" (parenthesized_expression "(SBORROW4(iVar16,iVar8) != SBORROW4(iVar16 - iVar8,(uint)(uVar15 < uVar9)))" ( (binary_expression "SBORROW4(iVar16,iVar8) != SBORROW4(iVar16 - iVar8,(uint)(uVar15 < uVar9))" (call_expression "SBORROW4(iVar16,iVar8)" identifier (argument_list "(iVar16,iVar8)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar16 - iVar8,(uint)(uVar15 < uVar9))" identifier (argument_list "(iVar16 - iVar8,(uint)(uVar15 < uVar9))" ( (binary_expression "iVar16 - iVar8" identifier - identifier) , (call_expression "(uint)(uVar15 < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar15 < uVar9)" ( (binary_expression "uVar15 < uVar9" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar16 - iVar8) - (uint)(uVar15 < uVar9)) < 0" (cast_expression "(int)((iVar16 - iVar8) - (uint)(uVar15 < uVar9))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar16 - iVar8) - (uint)(uVar15 < uVar9))" ( (binary_expression "(iVar16 - iVar8) - (uint)(uVar15 < uVar9)" (parenthesized_expression "(iVar16 - iVar8)" ( (binary_expression "iVar16 - iVar8" identifier - identifier) )) - (call_expression "(uint)(uVar15 < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar15 < uVar9)" ( (binary_expression "uVar15 < uVar9" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n          local_58 = pager_playback_one_page\n                               (pPager,&pPager->journalOff,(Bitvec *)0x1,1,(int)in_stack_ffffff8c);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar15 = (uint)pPager->journalOff;\n          iVar16 = *(int *)((int)&pPager->journalOff + 4);\n        }" { (expression_statement "local_58 = pager_playback_one_page\n                               (pPager,&pPager->journalOff,(Bitvec *)0x1,1,(int)in_stack_ffffff8c);" (assignment_expression "local_58 = pager_playback_one_page\n                               (pPager,&pPager->journalOff,(Bitvec *)0x1,1,(int)in_stack_ffffff8c)" identifier = (call_expression "pager_playback_one_page\n                               (pPager,&pPager->journalOff,(Bitvec *)0x1,1,(int)in_stack_ffffff8c)" identifier (argument_list "(pPager,&pPager->journalOff,(Bitvec *)0x1,1,(int)in_stack_ffffff8c)" ( identifier , (pointer_expression "&pPager->journalOff" & (field_expression "pPager->journalOff" identifier -> field_identifier)) , (cast_expression "(Bitvec *)0x1" ( (type_descriptor "Bitvec *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal , (cast_expression "(int)in_stack_ffffff8c" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (if_statement "if (local_58 != 0) goto LAB_0007c4c8;" if (parenthesized_expression "(local_58 != 0)" ( (binary_expression "local_58 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007c4c8;" goto statement_identifier ;)) (expression_statement "uVar15 = (uint)pPager->journalOff;" (assignment_expression "uVar15 = (uint)pPager->journalOff" identifier = (cast_expression "(uint)pPager->journalOff" ( (type_descriptor "uint" type_identifier) ) (field_expression "pPager->journalOff" identifier -> field_identifier))) ;) (expression_statement "iVar16 = *(int *)((int)&pPager->journalOff + 4);" (assignment_expression "iVar16 = *(int *)((int)&pPager->journalOff + 4)" identifier = (pointer_expression "*(int *)((int)&pPager->journalOff + 4)" * (cast_expression "(int *)((int)&pPager->journalOff + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPager->journalOff + 4)" ( (binary_expression "(int)&pPager->journalOff + 4" (cast_expression "(int)&pPager->journalOff" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPager->journalOff" & (field_expression "pPager->journalOff" identifier -> field_identifier))) + number_literal) ))))) ;) })) (if_statement "if ((SBORROW4(iVar16,local_60) != SBORROW4(iVar16 - local_60,(uint)(uVar15 < local_64))) !=\n            (int)((iVar16 - local_60) - (uint)(uVar15 < local_64)) < 0) goto LAB_0007c431;" if (parenthesized_expression "((SBORROW4(iVar16,local_60) != SBORROW4(iVar16 - local_60,(uint)(uVar15 < local_64))) !=\n            (int)((iVar16 - local_60) - (uint)(uVar15 < local_64)) < 0)" ( (binary_expression "(SBORROW4(iVar16,local_60) != SBORROW4(iVar16 - local_60,(uint)(uVar15 < local_64))) !=\n            (int)((iVar16 - local_60) - (uint)(uVar15 < local_64)) < 0" (parenthesized_expression "(SBORROW4(iVar16,local_60) != SBORROW4(iVar16 - local_60,(uint)(uVar15 < local_64)))" ( (binary_expression "SBORROW4(iVar16,local_60) != SBORROW4(iVar16 - local_60,(uint)(uVar15 < local_64))" (call_expression "SBORROW4(iVar16,local_60)" identifier (argument_list "(iVar16,local_60)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar16 - local_60,(uint)(uVar15 < local_64))" identifier (argument_list "(iVar16 - local_60,(uint)(uVar15 < local_64))" ( (binary_expression "iVar16 - local_60" identifier - identifier) , (call_expression "(uint)(uVar15 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar15 < local_64)" ( (binary_expression "uVar15 < local_64" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar16 - local_60) - (uint)(uVar15 < local_64)) < 0" (cast_expression "(int)((iVar16 - local_60) - (uint)(uVar15 < local_64))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar16 - local_60) - (uint)(uVar15 < local_64))" ( (binary_expression "(iVar16 - local_60) - (uint)(uVar15 < local_64)" (parenthesized_expression "(iVar16 - local_60)" ( (binary_expression "iVar16 - local_60" identifier - identifier) )) - (call_expression "(uint)(uVar15 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar15 < local_64)" ( (binary_expression "uVar15 < local_64" identifier < identifier) )))) ))) < number_literal)) )) (goto_statement "goto LAB_0007c431;" goto statement_identifier ;)) }) (else_clause "else {\n        *(undefined4 *)&pPager->journalOff = 0;\n        *(undefined4 *)((int)&pPager->journalOff + 4) = 0;\n        if (-local_60 < (int)(uint)(local_64 != 0)) {\nLAB_0007c431:\n          do {\n            nJRec = 0;\n            in_stack_ffffff8c = &nJRec;\n            local_58 = readJournalHdr(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy);\n            if (nJRec != 0) {\n              if (local_58 != 0) {\nLAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;\n                goto LAB_0007c629;\n              }\n              uVar9 = (uint)pPager->journalOff;\n              iVar8 = *(int *)((int)&pPager->journalOff + 4);\nLAB_0007c6f6:\n              if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }\n              break;\n            }\n            uVar9 = (uint)pPager->journalOff;\n            iVar8 = *(int *)((int)&pPager->journalOff + 4);\n            if (*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8 &&\n                pPager->sectorSize + (int)pPager->journalHdr == uVar9) {\n              in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8);\n              nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);\n              if (local_58 == 0) {\n                if (nJRec != 0) goto LAB_0007c6f6;\n                goto LAB_0007c598;\n              }\n              goto LAB_0007c4bc;\n            }\n            if (local_58 != 0) goto LAB_0007c4bc;\nLAB_0007c598:\n          } while ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0);\n          if (local_44 == (PagerSavepoint *)0x0) goto LAB_0007c6c0;\n        }\n      }" else (compound_statement "{\n        *(undefined4 *)&pPager->journalOff = 0;\n        *(undefined4 *)((int)&pPager->journalOff + 4) = 0;\n        if (-local_60 < (int)(uint)(local_64 != 0)) {\nLAB_0007c431:\n          do {\n            nJRec = 0;\n            in_stack_ffffff8c = &nJRec;\n            local_58 = readJournalHdr(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy);\n            if (nJRec != 0) {\n              if (local_58 != 0) {\nLAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;\n                goto LAB_0007c629;\n              }\n              uVar9 = (uint)pPager->journalOff;\n              iVar8 = *(int *)((int)&pPager->journalOff + 4);\nLAB_0007c6f6:\n              if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }\n              break;\n            }\n            uVar9 = (uint)pPager->journalOff;\n            iVar8 = *(int *)((int)&pPager->journalOff + 4);\n            if (*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8 &&\n                pPager->sectorSize + (int)pPager->journalHdr == uVar9) {\n              in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8);\n              nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);\n              if (local_58 == 0) {\n                if (nJRec != 0) goto LAB_0007c6f6;\n                goto LAB_0007c598;\n              }\n              goto LAB_0007c4bc;\n            }\n            if (local_58 != 0) goto LAB_0007c4bc;\nLAB_0007c598:\n          } while ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0);\n          if (local_44 == (PagerSavepoint *)0x0) goto LAB_0007c6c0;\n        }\n      }" { (expression_statement "*(undefined4 *)&pPager->journalOff = 0;" (assignment_expression "*(undefined4 *)&pPager->journalOff = 0" (pointer_expression "*(undefined4 *)&pPager->journalOff" * (cast_expression "(undefined4 *)&pPager->journalOff" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pPager->journalOff" & (field_expression "pPager->journalOff" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&pPager->journalOff + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&pPager->journalOff + 4) = 0" (pointer_expression "*(undefined4 *)((int)&pPager->journalOff + 4)" * (cast_expression "(undefined4 *)((int)&pPager->journalOff + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPager->journalOff + 4)" ( (binary_expression "(int)&pPager->journalOff + 4" (cast_expression "(int)&pPager->journalOff" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPager->journalOff" & (field_expression "pPager->journalOff" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (if_statement "if (-local_60 < (int)(uint)(local_64 != 0)) {\nLAB_0007c431:\n          do {\n            nJRec = 0;\n            in_stack_ffffff8c = &nJRec;\n            local_58 = readJournalHdr(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy);\n            if (nJRec != 0) {\n              if (local_58 != 0) {\nLAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;\n                goto LAB_0007c629;\n              }\n              uVar9 = (uint)pPager->journalOff;\n              iVar8 = *(int *)((int)&pPager->journalOff + 4);\nLAB_0007c6f6:\n              if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }\n              break;\n            }\n            uVar9 = (uint)pPager->journalOff;\n            iVar8 = *(int *)((int)&pPager->journalOff + 4);\n            if (*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8 &&\n                pPager->sectorSize + (int)pPager->journalHdr == uVar9) {\n              in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8);\n              nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);\n              if (local_58 == 0) {\n                if (nJRec != 0) goto LAB_0007c6f6;\n                goto LAB_0007c598;\n              }\n              goto LAB_0007c4bc;\n            }\n            if (local_58 != 0) goto LAB_0007c4bc;\nLAB_0007c598:\n          } while ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0);\n          if (local_44 == (PagerSavepoint *)0x0) goto LAB_0007c6c0;\n        }" if (parenthesized_expression "(-local_60 < (int)(uint)(local_64 != 0))" ( (binary_expression "-local_60 < (int)(uint)(local_64 != 0)" (unary_expression "-local_60" - identifier) < (cast_expression "(int)(uint)(local_64 != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(local_64 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_64 != 0)" ( (binary_expression "local_64 != 0" identifier != number_literal) ))))) )) (compound_statement "{\nLAB_0007c431:\n          do {\n            nJRec = 0;\n            in_stack_ffffff8c = &nJRec;\n            local_58 = readJournalHdr(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy);\n            if (nJRec != 0) {\n              if (local_58 != 0) {\nLAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;\n                goto LAB_0007c629;\n              }\n              uVar9 = (uint)pPager->journalOff;\n              iVar8 = *(int *)((int)&pPager->journalOff + 4);\nLAB_0007c6f6:\n              if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }\n              break;\n            }\n            uVar9 = (uint)pPager->journalOff;\n            iVar8 = *(int *)((int)&pPager->journalOff + 4);\n            if (*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8 &&\n                pPager->sectorSize + (int)pPager->journalHdr == uVar9) {\n              in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8);\n              nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);\n              if (local_58 == 0) {\n                if (nJRec != 0) goto LAB_0007c6f6;\n                goto LAB_0007c598;\n              }\n              goto LAB_0007c4bc;\n            }\n            if (local_58 != 0) goto LAB_0007c4bc;\nLAB_0007c598:\n          } while ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0);\n          if (local_44 == (PagerSavepoint *)0x0) goto LAB_0007c6c0;\n        }" { (labeled_statement "LAB_0007c431:\n          do {\n            nJRec = 0;\n            in_stack_ffffff8c = &nJRec;\n            local_58 = readJournalHdr(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy);\n            if (nJRec != 0) {\n              if (local_58 != 0) {\nLAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;\n                goto LAB_0007c629;\n              }\n              uVar9 = (uint)pPager->journalOff;\n              iVar8 = *(int *)((int)&pPager->journalOff + 4);\nLAB_0007c6f6:\n              if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }\n              break;\n            }\n            uVar9 = (uint)pPager->journalOff;\n            iVar8 = *(int *)((int)&pPager->journalOff + 4);\n            if (*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8 &&\n                pPager->sectorSize + (int)pPager->journalHdr == uVar9) {\n              in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8);\n              nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);\n              if (local_58 == 0) {\n                if (nJRec != 0) goto LAB_0007c6f6;\n                goto LAB_0007c598;\n              }\n              goto LAB_0007c4bc;\n            }\n            if (local_58 != 0) goto LAB_0007c4bc;\nLAB_0007c598:\n          } while ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0);" statement_identifier : (do_statement "do {\n            nJRec = 0;\n            in_stack_ffffff8c = &nJRec;\n            local_58 = readJournalHdr(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy);\n            if (nJRec != 0) {\n              if (local_58 != 0) {\nLAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;\n                goto LAB_0007c629;\n              }\n              uVar9 = (uint)pPager->journalOff;\n              iVar8 = *(int *)((int)&pPager->journalOff + 4);\nLAB_0007c6f6:\n              if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }\n              break;\n            }\n            uVar9 = (uint)pPager->journalOff;\n            iVar8 = *(int *)((int)&pPager->journalOff + 4);\n            if (*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8 &&\n                pPager->sectorSize + (int)pPager->journalHdr == uVar9) {\n              in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8);\n              nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);\n              if (local_58 == 0) {\n                if (nJRec != 0) goto LAB_0007c6f6;\n                goto LAB_0007c598;\n              }\n              goto LAB_0007c4bc;\n            }\n            if (local_58 != 0) goto LAB_0007c4bc;\nLAB_0007c598:\n          } while ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0);" do (compound_statement "{\n            nJRec = 0;\n            in_stack_ffffff8c = &nJRec;\n            local_58 = readJournalHdr(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy);\n            if (nJRec != 0) {\n              if (local_58 != 0) {\nLAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;\n                goto LAB_0007c629;\n              }\n              uVar9 = (uint)pPager->journalOff;\n              iVar8 = *(int *)((int)&pPager->journalOff + 4);\nLAB_0007c6f6:\n              if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }\n              break;\n            }\n            uVar9 = (uint)pPager->journalOff;\n            iVar8 = *(int *)((int)&pPager->journalOff + 4);\n            if (*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8 &&\n                pPager->sectorSize + (int)pPager->journalHdr == uVar9) {\n              in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8);\n              nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);\n              if (local_58 == 0) {\n                if (nJRec != 0) goto LAB_0007c6f6;\n                goto LAB_0007c598;\n              }\n              goto LAB_0007c4bc;\n            }\n            if (local_58 != 0) goto LAB_0007c4bc;\nLAB_0007c598:\n          }" { (expression_statement "nJRec = 0;" (assignment_expression "nJRec = 0" identifier = number_literal) ;) (expression_statement "in_stack_ffffff8c = &nJRec;" (assignment_expression "in_stack_ffffff8c = &nJRec" identifier = (pointer_expression "&nJRec" & identifier)) ;) (expression_statement "local_58 = readJournalHdr(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy);" (assignment_expression "local_58 = readJournalHdr(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy)" identifier = (call_expression "readJournalHdr(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy)" identifier (argument_list "(pPager,0,CONCAT44(local_60,local_64),&nJRec,&dummy)" ( identifier , number_literal , (call_expression "CONCAT44(local_60,local_64)" identifier (argument_list "(local_60,local_64)" ( identifier , identifier ))) , (pointer_expression "&nJRec" & identifier) , (pointer_expression "&dummy" & identifier) )))) ;) (if_statement "if (nJRec != 0) {\n              if (local_58 != 0) {\nLAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;\n                goto LAB_0007c629;\n              }\n              uVar9 = (uint)pPager->journalOff;\n              iVar8 = *(int *)((int)&pPager->journalOff + 4);\nLAB_0007c6f6:\n              if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }\n              break;\n            }" if (parenthesized_expression "(nJRec != 0)" ( (binary_expression "nJRec != 0" identifier != number_literal) )) (compound_statement "{\n              if (local_58 != 0) {\nLAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;\n                goto LAB_0007c629;\n              }\n              uVar9 = (uint)pPager->journalOff;\n              iVar8 = *(int *)((int)&pPager->journalOff + 4);\nLAB_0007c6f6:\n              if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }\n              break;\n            }" { (if_statement "if (local_58 != 0) {\nLAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;\n                goto LAB_0007c629;\n              }" if (parenthesized_expression "(local_58 != 0)" ( (binary_expression "local_58 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;\n                goto LAB_0007c629;\n              }" { (labeled_statement "LAB_0007c4bc:\n                if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;" statement_identifier : (if_statement "if (local_44 != (PagerSavepoint *)0x0) goto LAB_0007c4c8;" if (parenthesized_expression "(local_44 != (PagerSavepoint *)0x0)" ( (binary_expression "local_44 != (PagerSavepoint *)0x0" identifier != (cast_expression "(PagerSavepoint *)0x0" ( (type_descriptor "PagerSavepoint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0007c4c8;" goto statement_identifier ;))) (goto_statement "goto LAB_0007c629;" goto statement_identifier ;) })) (expression_statement "uVar9 = (uint)pPager->journalOff;" (assignment_expression "uVar9 = (uint)pPager->journalOff" identifier = (cast_expression "(uint)pPager->journalOff" ( (type_descriptor "uint" type_identifier) ) (field_expression "pPager->journalOff" identifier -> field_identifier))) ;) (expression_statement "iVar8 = *(int *)((int)&pPager->journalOff + 4);" (assignment_expression "iVar8 = *(int *)((int)&pPager->journalOff + 4)" identifier = (pointer_expression "*(int *)((int)&pPager->journalOff + 4)" * (cast_expression "(int *)((int)&pPager->journalOff + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPager->journalOff + 4)" ( (binary_expression "(int)&pPager->journalOff + 4" (cast_expression "(int)&pPager->journalOff" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPager->journalOff" & (field_expression "pPager->journalOff" identifier -> field_identifier))) + number_literal) ))))) ;) (labeled_statement "LAB_0007c6f6:\n              if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }" statement_identifier : (if_statement "if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0) {\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }" if (parenthesized_expression "((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0)" ( (binary_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                  != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0" (parenthesized_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))" ( (binary_expression "SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))" (call_expression "SBORROW4(iVar8,local_60)" identifier (argument_list "(iVar8,local_60)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))" identifier (argument_list "(iVar8 - local_60,(uint)(uVar9 < local_64))" ( (binary_expression "iVar8 - local_60" identifier - identifier) , (call_expression "(uint)(uVar9 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < local_64)" ( (binary_expression "uVar9 < local_64" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0" (cast_expression "(int)((iVar8 - local_60) - (uint)(uVar9 < local_64))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar8 - local_60) - (uint)(uVar9 < local_64))" ( (binary_expression "(iVar8 - local_60) - (uint)(uVar9 < local_64)" (parenthesized_expression "(iVar8 - local_60)" ( (binary_expression "iVar8 - local_60" identifier - identifier) )) - (call_expression "(uint)(uVar9 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < local_64)" ( (binary_expression "uVar9 < local_64" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n                uVar15 = 0;\n                do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));\n                goto LAB_0007c598;\n              }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (do_statement "do {\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                } while ((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0));" do (compound_statement "{\n                  uVar15 = uVar15 + 1;\n                  local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);\n                  if (local_58 != 0) goto LAB_0007c4bc;\n                  uVar9 = (uint)pPager->journalOff;\n                  iVar8 = *(int *)((int)&pPager->journalOff + 4);\n                }" { (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (expression_statement "local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c);" (assignment_expression "local_58 = pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c)" identifier = (call_expression "pager_playback_one_page\n                                       (pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c)" identifier (argument_list "(pPager,&pPager->journalOff,(Bitvec *)0x1,1,\n                                        (int)in_stack_ffffff8c)" ( identifier , (pointer_expression "&pPager->journalOff" & (field_expression "pPager->journalOff" identifier -> field_identifier)) , (cast_expression "(Bitvec *)0x1" ( (type_descriptor "Bitvec *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal , (cast_expression "(int)in_stack_ffffff8c" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (if_statement "if (local_58 != 0) goto LAB_0007c4bc;" if (parenthesized_expression "(local_58 != 0)" ( (binary_expression "local_58 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007c4bc;" goto statement_identifier ;)) (expression_statement "uVar9 = (uint)pPager->journalOff;" (assignment_expression "uVar9 = (uint)pPager->journalOff" identifier = (cast_expression "(uint)pPager->journalOff" ( (type_descriptor "uint" type_identifier) ) (field_expression "pPager->journalOff" identifier -> field_identifier))) ;) (expression_statement "iVar8 = *(int *)((int)&pPager->journalOff + 4);" (assignment_expression "iVar8 = *(int *)((int)&pPager->journalOff + 4)" identifier = (pointer_expression "*(int *)((int)&pPager->journalOff + 4)" * (cast_expression "(int *)((int)&pPager->journalOff + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPager->journalOff + 4)" ( (binary_expression "(int)&pPager->journalOff + 4" (cast_expression "(int)&pPager->journalOff" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPager->journalOff" & (field_expression "pPager->journalOff" identifier -> field_identifier))) + number_literal) ))))) ;) }) while (parenthesized_expression "((uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0))" ( (binary_expression "(uVar15 < nJRec) &&\n                        ((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0)" (parenthesized_expression "(uVar15 < nJRec)" ( (binary_expression "uVar15 < nJRec" identifier < identifier) )) && (parenthesized_expression "((SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0)" ( (binary_expression "(SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))) !=\n                         (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0" (parenthesized_expression "(SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))" ( (binary_expression "SBORROW4(iVar8,local_60) !=\n                         SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))" (call_expression "SBORROW4(iVar8,local_60)" identifier (argument_list "(iVar8,local_60)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))" identifier (argument_list "(iVar8 - local_60,(uint)(uVar9 < local_64))" ( (binary_expression "iVar8 - local_60" identifier - identifier) , (call_expression "(uint)(uVar9 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < local_64)" ( (binary_expression "uVar9 < local_64" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0" (cast_expression "(int)((iVar8 - local_60) - (uint)(uVar9 < local_64))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar8 - local_60) - (uint)(uVar9 < local_64))" ( (binary_expression "(iVar8 - local_60) - (uint)(uVar9 < local_64)" (parenthesized_expression "(iVar8 - local_60)" ( (binary_expression "iVar8 - local_60" identifier - identifier) )) - (call_expression "(uint)(uVar9 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < local_64)" ( (binary_expression "uVar9 < local_64" identifier < identifier) )))) ))) < number_literal)) ))) )) ;) (goto_statement "goto LAB_0007c598;" goto statement_identifier ;) }))) (break_statement "break;" break ;) })) (expression_statement "uVar9 = (uint)pPager->journalOff;" (assignment_expression "uVar9 = (uint)pPager->journalOff" identifier = (cast_expression "(uint)pPager->journalOff" ( (type_descriptor "uint" type_identifier) ) (field_expression "pPager->journalOff" identifier -> field_identifier))) ;) (expression_statement "iVar8 = *(int *)((int)&pPager->journalOff + 4);" (assignment_expression "iVar8 = *(int *)((int)&pPager->journalOff + 4)" identifier = (pointer_expression "*(int *)((int)&pPager->journalOff + 4)" * (cast_expression "(int *)((int)&pPager->journalOff + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPager->journalOff + 4)" ( (binary_expression "(int)&pPager->journalOff + 4" (cast_expression "(int)&pPager->journalOff" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPager->journalOff" & (field_expression "pPager->journalOff" identifier -> field_identifier))) + number_literal) ))))) ;) (if_statement "if (*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8 &&\n                pPager->sectorSize + (int)pPager->journalHdr == uVar9) {\n              in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8);\n              nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);\n              if (local_58 == 0) {\n                if (nJRec != 0) goto LAB_0007c6f6;\n                goto LAB_0007c598;\n              }\n              goto LAB_0007c4bc;\n            }" if (parenthesized_expression "(*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8 &&\n                pPager->sectorSize + (int)pPager->journalHdr == uVar9)" ( (binary_expression "*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8 &&\n                pPager->sectorSize + (int)pPager->journalHdr == uVar9" (binary_expression "*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr) == iVar8" (binary_expression "*(int *)((int)&pPager->journalHdr + 4) +\n                (uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr)" (pointer_expression "*(int *)((int)&pPager->journalHdr + 4)" * (cast_expression "(int *)((int)&pPager->journalHdr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPager->journalHdr + 4)" ( (binary_expression "(int)&pPager->journalHdr + 4" (cast_expression "(int)&pPager->journalHdr" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPager->journalHdr" & (field_expression "pPager->journalHdr" identifier -> field_identifier))) + number_literal) )))) + (cast_expression "(uint)CARRY4(pPager->sectorSize,(uint)pPager->journalHdr)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(pPager->sectorSize,(uint)pPager->journalHdr)" identifier (argument_list "(pPager->sectorSize,(uint)pPager->journalHdr)" ( (field_expression "pPager->sectorSize" identifier -> field_identifier) , (cast_expression "(uint)pPager->journalHdr" ( (type_descriptor "uint" type_identifier) ) (field_expression "pPager->journalHdr" identifier -> field_identifier)) ))))) == identifier) && (binary_expression "pPager->sectorSize + (int)pPager->journalHdr == uVar9" (binary_expression "pPager->sectorSize + (int)pPager->journalHdr" (field_expression "pPager->sectorSize" identifier -> field_identifier) + (cast_expression "(int)pPager->journalHdr" ( (type_descriptor "int" primitive_type) ) (field_expression "pPager->journalHdr" identifier -> field_identifier))) == identifier)) )) (compound_statement "{\n              in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8);\n              nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);\n              if (local_58 == 0) {\n                if (nJRec != 0) goto LAB_0007c6f6;\n                goto LAB_0007c598;\n              }\n              goto LAB_0007c4bc;\n            }" { (expression_statement "in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8);" (assignment_expression "in_stack_ffffff8c = (u32 *)(pPager->pageSize + 8)" identifier = (cast_expression "(u32 *)(pPager->pageSize + 8)" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pPager->pageSize + 8)" ( (binary_expression "pPager->pageSize + 8" (field_expression "pPager->pageSize" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);" (assignment_expression "nJRec = __divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f)" identifier = (call_expression "__divdi3(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f)" identifier (argument_list "(local_64 - uVar9,(local_60 - iVar8) - (uint)(local_64 < uVar9),\n                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f)" ( (binary_expression "local_64 - uVar9" identifier - identifier) , (binary_expression "(local_60 - iVar8) - (uint)(local_64 < uVar9)" (parenthesized_expression "(local_60 - iVar8)" ( (binary_expression "local_60 - iVar8" identifier - identifier) )) - (call_expression "(uint)(local_64 < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_64 < uVar9)" ( (binary_expression "local_64 < uVar9" identifier < identifier) )))) , identifier , (binary_expression "(int)in_stack_ffffff8c >> 0x1f" (cast_expression "(int)in_stack_ffffff8c" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (if_statement "if (local_58 == 0) {\n                if (nJRec != 0) goto LAB_0007c6f6;\n                goto LAB_0007c598;\n              }" if (parenthesized_expression "(local_58 == 0)" ( (binary_expression "local_58 == 0" identifier == number_literal) )) (compound_statement "{\n                if (nJRec != 0) goto LAB_0007c6f6;\n                goto LAB_0007c598;\n              }" { (if_statement "if (nJRec != 0) goto LAB_0007c6f6;" if (parenthesized_expression "(nJRec != 0)" ( (binary_expression "nJRec != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007c6f6;" goto statement_identifier ;)) (goto_statement "goto LAB_0007c598;" goto statement_identifier ;) })) (goto_statement "goto LAB_0007c4bc;" goto statement_identifier ;) })) (if_statement "if (local_58 != 0) goto LAB_0007c4bc;" if (parenthesized_expression "(local_58 != 0)" ( (binary_expression "local_58 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007c4bc;" goto statement_identifier ;)) (labeled_statement "LAB_0007c598:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0)" ( (binary_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0" (parenthesized_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64)))" ( (binary_expression "SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))" (call_expression "SBORROW4(iVar8,local_60)" identifier (argument_list "(iVar8,local_60)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar8 - local_60,(uint)(uVar9 < local_64))" identifier (argument_list "(iVar8 - local_60,(uint)(uVar9 < local_64))" ( (binary_expression "iVar8 - local_60" identifier - identifier) , (call_expression "(uint)(uVar9 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < local_64)" ( (binary_expression "uVar9 < local_64" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar8 - local_60) - (uint)(uVar9 < local_64)) < 0" (cast_expression "(int)((iVar8 - local_60) - (uint)(uVar9 < local_64))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar8 - local_60) - (uint)(uVar9 < local_64))" ( (binary_expression "(iVar8 - local_60) - (uint)(uVar9 < local_64)" (parenthesized_expression "(iVar8 - local_60)" ( (binary_expression "iVar8 - local_60" identifier - identifier) )) - (call_expression "(uint)(uVar9 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < local_64)" ( (binary_expression "uVar9 < local_64" identifier < identifier) )))) ))) < number_literal)) )) ;)) (if_statement "if (local_44 == (PagerSavepoint *)0x0) goto LAB_0007c6c0;" if (parenthesized_expression "(local_44 == (PagerSavepoint *)0x0)" ( (binary_expression "local_44 == (PagerSavepoint *)0x0" identifier == (cast_expression "(PagerSavepoint *)0x0" ( (type_descriptor "PagerSavepoint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0007c6c0;" goto statement_identifier ;)) })) }))) (expression_statement "PVar14 = local_44->iSubRec;" (assignment_expression "PVar14 = local_44->iSubRec" identifier = (field_expression "local_44->iSubRec" identifier -> field_identifier)) ;) (expression_statement "uVar9 = pPager->pageSize + 4;" (assignment_expression "uVar9 = pPager->pageSize + 4" identifier = (binary_expression "pPager->pageSize + 4" (field_expression "pPager->pageSize" identifier -> field_identifier) + number_literal)) ;) (expression_statement "lVar6 = (ulonglong)uVar9 * (ulonglong)PVar14;" (assignment_expression "lVar6 = (ulonglong)uVar9 * (ulonglong)PVar14" identifier = (binary_expression "(ulonglong)uVar9 * (ulonglong)PVar14" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)PVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "dummy = (u32)lVar6;" (assignment_expression "dummy = (u32)lVar6" identifier = (cast_expression "(u32)lVar6" ( (type_descriptor "u32" type_identifier) ) identifier)) ;) (expression_statement "pWVar10 = pPager->pWal;" (assignment_expression "pWVar10 = pPager->pWal" identifier = (field_expression "pPager->pWal" identifier -> field_identifier)) ;) (expression_statement "local_28 = (int)((ulonglong)lVar6 >> 0x20) + ((int)uVar9 >> 0x1f) * PVar14;" (assignment_expression "local_28 = (int)((ulonglong)lVar6 >> 0x20) + ((int)uVar9 >> 0x1f) * PVar14" identifier = (binary_expression "(int)((ulonglong)lVar6 >> 0x20) + ((int)uVar9 >> 0x1f) * PVar14" (cast_expression "(int)((ulonglong)lVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar6 >> 0x20)" ( (binary_expression "(ulonglong)lVar6 >> 0x20" (cast_expression "(ulonglong)lVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + (binary_expression "((int)uVar9 >> 0x1f) * PVar14" (parenthesized_expression "((int)uVar9 >> 0x1f)" ( (binary_expression "(int)uVar9 >> 0x1f" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * identifier))) ;) (if_statement "if (pWVar10 != (Wal *)0x0) goto LAB_0007c4fc;" if (parenthesized_expression "(pWVar10 != (Wal *)0x0)" ( (binary_expression "pWVar10 != (Wal *)0x0" identifier != (cast_expression "(Wal *)0x0" ( (type_descriptor "Wal *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0007c4fc;" goto statement_identifier ;)) (goto_statement "goto LAB_0007c5ea;" goto statement_identifier ;) })) (if_statement "if (pPager->jfd->pMethods == (sqlite3_io_methods *)0x0) goto LAB_0007c6d7;" if (parenthesized_expression "(pPager->jfd->pMethods == (sqlite3_io_methods *)0x0)" ( (binary_expression "pPager->jfd->pMethods == (sqlite3_io_methods *)0x0" (field_expression "pPager->jfd->pMethods" (field_expression "pPager->jfd" identifier -> field_identifier) -> field_identifier) == (cast_expression "(sqlite3_io_methods *)0x0" ( (type_descriptor "sqlite3_io_methods *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0007c6d7;" goto statement_identifier ;)) (if_statement "if ((iVar8 != 0) &&\n       (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 != (PagerSavepoint *)0x0))\n    goto LAB_0007c3bd;" if (parenthesized_expression "((iVar8 != 0) &&\n       (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 != (PagerSavepoint *)0x0))" ( (binary_expression "(iVar8 != 0) &&\n       (local_44 = pPager->aSavepoint + iVar8 + -1, local_44 != (PagerSavepoint *)0x0)" (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) && (parenthesized_expression "(local_44 = pPager->aSavepoint + iVar8 + -1, local_44 != (PagerSavepoint *)0x0)" ( (comma_expression "local_44 = pPager->aSavepoint + iVar8 + -1, local_44 != (PagerSavepoint *)0x0" (assignment_expression "local_44 = pPager->aSavepoint + iVar8 + -1" identifier = (binary_expression "pPager->aSavepoint + iVar8 + -1" (binary_expression "pPager->aSavepoint + iVar8" (field_expression "pPager->aSavepoint" identifier -> field_identifier) + identifier) + number_literal)) , (binary_expression "local_44 != (PagerSavepoint *)0x0" identifier != (cast_expression "(PagerSavepoint *)0x0" ( (type_descriptor "PagerSavepoint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_0007c3bd;" goto statement_identifier ;)) (expression_statement "local_64 = (uint)pPager->journalOff;" (assignment_expression "local_64 = (uint)pPager->journalOff" identifier = (cast_expression "(uint)pPager->journalOff" ( (type_descriptor "uint" type_identifier) ) (field_expression "pPager->journalOff" identifier -> field_identifier))) ;) (expression_statement "local_44 = (PagerSavepoint *)0x0;" (assignment_expression "local_44 = (PagerSavepoint *)0x0" identifier = (cast_expression "(PagerSavepoint *)0x0" ( (type_descriptor "PagerSavepoint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_60 = *(int *)((int)&pPager->journalOff + 4);" (assignment_expression "local_60 = *(int *)((int)&pPager->journalOff + 4)" identifier = (pointer_expression "*(int *)((int)&pPager->journalOff + 4)" * (cast_expression "(int *)((int)&pPager->journalOff + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPager->journalOff + 4)" ( (binary_expression "(int)&pPager->journalOff + 4" (cast_expression "(int)&pPager->journalOff" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPager->journalOff" & (field_expression "pPager->journalOff" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)&pPager->journalOff = 0;" (assignment_expression "*(undefined4 *)&pPager->journalOff = 0" (pointer_expression "*(undefined4 *)&pPager->journalOff" * (cast_expression "(undefined4 *)&pPager->journalOff" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pPager->journalOff" & (field_expression "pPager->journalOff" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "pPager->dbSize = pPager->dbOrigSize;" (assignment_expression "pPager->dbSize = pPager->dbOrigSize" (field_expression "pPager->dbSize" identifier -> field_identifier) = (field_expression "pPager->dbOrigSize" identifier -> field_identifier)) ;) (expression_statement "pPager->changeCountDone = pPager->tempFile;" (assignment_expression "pPager->changeCountDone = pPager->tempFile" (field_expression "pPager->changeCountDone" identifier -> field_identifier) = (field_expression "pPager->tempFile" identifier -> field_identifier)) ;) (expression_statement "*(undefined4 *)((int)&pPager->journalOff + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&pPager->journalOff + 4) = 0" (pointer_expression "*(undefined4 *)((int)&pPager->journalOff + 4)" * (cast_expression "(undefined4 *)((int)&pPager->journalOff + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPager->journalOff + 4)" ( (binary_expression "(int)&pPager->journalOff + 4" (cast_expression "(int)&pPager->journalOff" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPager->journalOff" & (field_expression "pPager->journalOff" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "local_5c = (Bitvec *)0x0;" (assignment_expression "local_5c = (Bitvec *)0x0" identifier = (cast_expression "(Bitvec *)0x0" ( (type_descriptor "Bitvec *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (-local_60 < (int)(uint)(local_64 != 0)) goto LAB_0007c431;" if (parenthesized_expression "(-local_60 < (int)(uint)(local_64 != 0))" ( (binary_expression "-local_60 < (int)(uint)(local_64 != 0)" (unary_expression "-local_60" - identifier) < (cast_expression "(int)(uint)(local_64 != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(local_64 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_64 != 0)" ( (binary_expression "local_64 != 0" identifier != number_literal) ))))) )) (goto_statement "goto LAB_0007c431;" goto statement_identifier ;)) (goto_statement "goto LAB_0007c6c0;" goto statement_identifier ;) })) (if_statement "if (iVar8 == 0) {\n    psVar2 = pPager->sjfd->pMethods;\n    local_58 = 0;\n    if (psVar2 != (sqlite3_io_methods *)0x0) {\n      if (psVar2 == (sqlite3_io_methods *)(unaff_EDI + 0xce457)) {\n        local_58 = memjrnlTruncate(pPager->sjfd,0);\n      }\n      pPager->nSubRec = 0;\n    }\n    goto LAB_0007c632;\n  }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n    psVar2 = pPager->sjfd->pMethods;\n    local_58 = 0;\n    if (psVar2 != (sqlite3_io_methods *)0x0) {\n      if (psVar2 == (sqlite3_io_methods *)(unaff_EDI + 0xce457)) {\n        local_58 = memjrnlTruncate(pPager->sjfd,0);\n      }\n      pPager->nSubRec = 0;\n    }\n    goto LAB_0007c632;\n  }" { (expression_statement "psVar2 = pPager->sjfd->pMethods;" (assignment_expression "psVar2 = pPager->sjfd->pMethods" identifier = (field_expression "pPager->sjfd->pMethods" (field_expression "pPager->sjfd" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (if_statement "if (psVar2 != (sqlite3_io_methods *)0x0) {\n      if (psVar2 == (sqlite3_io_methods *)(unaff_EDI + 0xce457)) {\n        local_58 = memjrnlTruncate(pPager->sjfd,0);\n      }\n      pPager->nSubRec = 0;\n    }" if (parenthesized_expression "(psVar2 != (sqlite3_io_methods *)0x0)" ( (binary_expression "psVar2 != (sqlite3_io_methods *)0x0" identifier != (cast_expression "(sqlite3_io_methods *)0x0" ( (type_descriptor "sqlite3_io_methods *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (psVar2 == (sqlite3_io_methods *)(unaff_EDI + 0xce457)) {\n        local_58 = memjrnlTruncate(pPager->sjfd,0);\n      }\n      pPager->nSubRec = 0;\n    }" { (if_statement "if (psVar2 == (sqlite3_io_methods *)(unaff_EDI + 0xce457)) {\n        local_58 = memjrnlTruncate(pPager->sjfd,0);\n      }" if (parenthesized_expression "(psVar2 == (sqlite3_io_methods *)(unaff_EDI + 0xce457))" ( (binary_expression "psVar2 == (sqlite3_io_methods *)(unaff_EDI + 0xce457)" identifier == (cast_expression "(sqlite3_io_methods *)(unaff_EDI + 0xce457)" ( (type_descriptor "sqlite3_io_methods *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xce457)" ( (binary_expression "unaff_EDI + 0xce457" identifier + number_literal) )))) )) (compound_statement "{\n        local_58 = memjrnlTruncate(pPager->sjfd,0);\n      }" { (expression_statement "local_58 = memjrnlTruncate(pPager->sjfd,0);" (assignment_expression "local_58 = memjrnlTruncate(pPager->sjfd,0)" identifier = (call_expression "memjrnlTruncate(pPager->sjfd,0)" identifier (argument_list "(pPager->sjfd,0)" ( (field_expression "pPager->sjfd" identifier -> field_identifier) , number_literal )))) ;) })) (expression_statement "pPager->nSubRec = 0;" (assignment_expression "pPager->nSubRec = 0" (field_expression "pPager->nSubRec" identifier -> field_identifier) = number_literal) ;) })) (goto_statement "goto LAB_0007c632;" goto statement_identifier ;) })) (labeled_statement "LAB_0007c6d7:\n  local_58 = 0;" statement_identifier : (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_0007c632:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_58;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_58;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return local_58;\n  }" { (return_statement "return local_58;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_0007c4c8:\n  PVar14 = local_44->iSubRec;" statement_identifier : (expression_statement "PVar14 = local_44->iSubRec;" (assignment_expression "PVar14 = local_44->iSubRec" identifier = (field_expression "local_44->iSubRec" identifier -> field_identifier)) ;)) (expression_statement "uVar9 = pPager->pageSize + 4;" (assignment_expression "uVar9 = pPager->pageSize + 4" identifier = (binary_expression "pPager->pageSize + 4" (field_expression "pPager->pageSize" identifier -> field_identifier) + number_literal)) ;) (expression_statement "lVar6 = (ulonglong)uVar9 * (ulonglong)PVar14;" (assignment_expression "lVar6 = (ulonglong)uVar9 * (ulonglong)PVar14" identifier = (binary_expression "(ulonglong)uVar9 * (ulonglong)PVar14" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)PVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "dummy = (u32)lVar6;" (assignment_expression "dummy = (u32)lVar6" identifier = (cast_expression "(u32)lVar6" ( (type_descriptor "u32" type_identifier) ) identifier)) ;) (expression_statement "pWVar10 = pPager->pWal;" (assignment_expression "pWVar10 = pPager->pWal" identifier = (field_expression "pPager->pWal" identifier -> field_identifier)) ;) (expression_statement "local_28 = (int)((ulonglong)lVar6 >> 0x20) + ((int)uVar9 >> 0x1f) * PVar14;" (assignment_expression "local_28 = (int)((ulonglong)lVar6 >> 0x20) + ((int)uVar9 >> 0x1f) * PVar14" identifier = (binary_expression "(int)((ulonglong)lVar6 >> 0x20) + ((int)uVar9 >> 0x1f) * PVar14" (cast_expression "(int)((ulonglong)lVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar6 >> 0x20)" ( (binary_expression "(ulonglong)lVar6 >> 0x20" (cast_expression "(ulonglong)lVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + (binary_expression "((int)uVar9 >> 0x1f) * PVar14" (parenthesized_expression "((int)uVar9 >> 0x1f)" ( (binary_expression "(int)uVar9 >> 0x1f" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * identifier))) ;) (if_statement "if (pWVar10 == (Wal *)0x0) {\nLAB_0007c629:\n    sqlite3BitvecDestroy(local_5c);\n    goto LAB_0007c632;\n  }" if (parenthesized_expression "(pWVar10 == (Wal *)0x0)" ( (binary_expression "pWVar10 == (Wal *)0x0" identifier == (cast_expression "(Wal *)0x0" ( (type_descriptor "Wal *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0007c629:\n    sqlite3BitvecDestroy(local_5c);\n    goto LAB_0007c632;\n  }" { (labeled_statement "LAB_0007c629:\n    sqlite3BitvecDestroy(local_5c);" statement_identifier : (expression_statement "sqlite3BitvecDestroy(local_5c);" (call_expression "sqlite3BitvecDestroy(local_5c)" identifier (argument_list "(local_5c)" ( identifier ))) ;)) (goto_statement "goto LAB_0007c632;" goto statement_identifier ;) })) (labeled_statement "LAB_0007c4fc:\n  if (local_44->aWalData[3] == pWVar10->nCkpt) {\n    uVar13 = local_44->aWalData[0];\n  }\n  else {\n    local_44->aWalData[0] = 0;\n    local_44->aWalData[3] = pWVar10->nCkpt;\n    uVar13 = 0;\n  }" statement_identifier : (if_statement "if (local_44->aWalData[3] == pWVar10->nCkpt) {\n    uVar13 = local_44->aWalData[0];\n  }\n  else {\n    local_44->aWalData[0] = 0;\n    local_44->aWalData[3] = pWVar10->nCkpt;\n    uVar13 = 0;\n  }" if (parenthesized_expression "(local_44->aWalData[3] == pWVar10->nCkpt)" ( (binary_expression "local_44->aWalData[3] == pWVar10->nCkpt" (subscript_expression "local_44->aWalData[3]" (field_expression "local_44->aWalData" identifier -> field_identifier) [ number_literal ]) == (field_expression "pWVar10->nCkpt" identifier -> field_identifier)) )) (compound_statement "{\n    uVar13 = local_44->aWalData[0];\n  }" { (expression_statement "uVar13 = local_44->aWalData[0];" (assignment_expression "uVar13 = local_44->aWalData[0]" identifier = (subscript_expression "local_44->aWalData[0]" (field_expression "local_44->aWalData" identifier -> field_identifier) [ number_literal ])) ;) }) (else_clause "else {\n    local_44->aWalData[0] = 0;\n    local_44->aWalData[3] = pWVar10->nCkpt;\n    uVar13 = 0;\n  }" else (compound_statement "{\n    local_44->aWalData[0] = 0;\n    local_44->aWalData[3] = pWVar10->nCkpt;\n    uVar13 = 0;\n  }" { (expression_statement "local_44->aWalData[0] = 0;" (assignment_expression "local_44->aWalData[0] = 0" (subscript_expression "local_44->aWalData[0]" (field_expression "local_44->aWalData" identifier -> field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "local_44->aWalData[3] = pWVar10->nCkpt;" (assignment_expression "local_44->aWalData[3] = pWVar10->nCkpt" (subscript_expression "local_44->aWalData[3]" (field_expression "local_44->aWalData" identifier -> field_identifier) [ number_literal ]) = (field_expression "pWVar10->nCkpt" identifier -> field_identifier)) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) })))) (if_statement "if (uVar13 < (pWVar10->hdr).mxFrame) {\n    (pWVar10->hdr).mxFrame = uVar13;\n    (pWVar10->hdr).aFrameCksum[0] = local_44->aWalData[1];\n    (pWVar10->hdr).aFrameCksum[1] = local_44->aWalData[2];\n    walCleanupHash(pWVar10);\n    PVar14 = local_44->iSubRec;\n  }" if (parenthesized_expression "(uVar13 < (pWVar10->hdr).mxFrame)" ( (binary_expression "uVar13 < (pWVar10->hdr).mxFrame" identifier < (field_expression "(pWVar10->hdr).mxFrame" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier)) )) (compound_statement "{\n    (pWVar10->hdr).mxFrame = uVar13;\n    (pWVar10->hdr).aFrameCksum[0] = local_44->aWalData[1];\n    (pWVar10->hdr).aFrameCksum[1] = local_44->aWalData[2];\n    walCleanupHash(pWVar10);\n    PVar14 = local_44->iSubRec;\n  }" { (expression_statement "(pWVar10->hdr).mxFrame = uVar13;" (assignment_expression "(pWVar10->hdr).mxFrame = uVar13" (field_expression "(pWVar10->hdr).mxFrame" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(pWVar10->hdr).aFrameCksum[0] = local_44->aWalData[1];" (assignment_expression "(pWVar10->hdr).aFrameCksum[0] = local_44->aWalData[1]" (subscript_expression "(pWVar10->hdr).aFrameCksum[0]" (field_expression "(pWVar10->hdr).aFrameCksum" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (subscript_expression "local_44->aWalData[1]" (field_expression "local_44->aWalData" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "(pWVar10->hdr).aFrameCksum[1] = local_44->aWalData[2];" (assignment_expression "(pWVar10->hdr).aFrameCksum[1] = local_44->aWalData[2]" (subscript_expression "(pWVar10->hdr).aFrameCksum[1]" (field_expression "(pWVar10->hdr).aFrameCksum" (parenthesized_expression "(pWVar10->hdr)" ( (field_expression "pWVar10->hdr" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (subscript_expression "local_44->aWalData[2]" (field_expression "local_44->aWalData" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "walCleanupHash(pWVar10);" (call_expression "walCleanupHash(pWVar10)" identifier (argument_list "(pWVar10)" ( identifier ))) ;) (expression_statement "PVar14 = local_44->iSubRec;" (assignment_expression "PVar14 = local_44->iSubRec" identifier = (field_expression "local_44->iSubRec" identifier -> field_identifier)) ;) })) (labeled_statement "LAB_0007c5ea:\n  if (PVar14 < pPager->nSubRec) {\n    do {\n      PVar14 = PVar14 + 1;\n      local_58 = pager_playback_one_page\n                           (pPager,(i64 *)&dummy,(Bitvec *)0x0,1,(int)in_stack_ffffff8c);\n      if (local_58 != 0) goto LAB_0007c629;\n    } while (PVar14 < pPager->nSubRec);\n  }" statement_identifier : (if_statement "if (PVar14 < pPager->nSubRec) {\n    do {\n      PVar14 = PVar14 + 1;\n      local_58 = pager_playback_one_page\n                           (pPager,(i64 *)&dummy,(Bitvec *)0x0,1,(int)in_stack_ffffff8c);\n      if (local_58 != 0) goto LAB_0007c629;\n    } while (PVar14 < pPager->nSubRec);\n  }" if (parenthesized_expression "(PVar14 < pPager->nSubRec)" ( (binary_expression "PVar14 < pPager->nSubRec" identifier < (field_expression "pPager->nSubRec" identifier -> field_identifier)) )) (compound_statement "{\n    do {\n      PVar14 = PVar14 + 1;\n      local_58 = pager_playback_one_page\n                           (pPager,(i64 *)&dummy,(Bitvec *)0x0,1,(int)in_stack_ffffff8c);\n      if (local_58 != 0) goto LAB_0007c629;\n    } while (PVar14 < pPager->nSubRec);\n  }" { (do_statement "do {\n      PVar14 = PVar14 + 1;\n      local_58 = pager_playback_one_page\n                           (pPager,(i64 *)&dummy,(Bitvec *)0x0,1,(int)in_stack_ffffff8c);\n      if (local_58 != 0) goto LAB_0007c629;\n    } while (PVar14 < pPager->nSubRec);" do (compound_statement "{\n      PVar14 = PVar14 + 1;\n      local_58 = pager_playback_one_page\n                           (pPager,(i64 *)&dummy,(Bitvec *)0x0,1,(int)in_stack_ffffff8c);\n      if (local_58 != 0) goto LAB_0007c629;\n    }" { (expression_statement "PVar14 = PVar14 + 1;" (assignment_expression "PVar14 = PVar14 + 1" identifier = (binary_expression "PVar14 + 1" identifier + number_literal)) ;) (expression_statement "local_58 = pager_playback_one_page\n                           (pPager,(i64 *)&dummy,(Bitvec *)0x0,1,(int)in_stack_ffffff8c);" (assignment_expression "local_58 = pager_playback_one_page\n                           (pPager,(i64 *)&dummy,(Bitvec *)0x0,1,(int)in_stack_ffffff8c)" identifier = (call_expression "pager_playback_one_page\n                           (pPager,(i64 *)&dummy,(Bitvec *)0x0,1,(int)in_stack_ffffff8c)" identifier (argument_list "(pPager,(i64 *)&dummy,(Bitvec *)0x0,1,(int)in_stack_ffffff8c)" ( identifier , (cast_expression "(i64 *)&dummy" ( (type_descriptor "i64 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&dummy" & identifier)) , (cast_expression "(Bitvec *)0x0" ( (type_descriptor "Bitvec *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal , (cast_expression "(int)in_stack_ffffff8c" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (if_statement "if (local_58 != 0) goto LAB_0007c629;" if (parenthesized_expression "(local_58 != 0)" ( (binary_expression "local_58 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007c629;" goto statement_identifier ;)) }) while (parenthesized_expression "(PVar14 < pPager->nSubRec)" ( (binary_expression "PVar14 < pPager->nSubRec" identifier < (field_expression "pPager->nSubRec" identifier -> field_identifier)) )) ;) }))) (labeled_statement "LAB_0007c6c0:\n  sqlite3BitvecDestroy(local_5c);" statement_identifier : (expression_statement "sqlite3BitvecDestroy(local_5c);" (call_expression "sqlite3BitvecDestroy(local_5c)" identifier (argument_list "(local_5c)" ( identifier ))) ;)) (expression_statement "*(uint *)&pPager->journalOff = local_64;" (assignment_expression "*(uint *)&pPager->journalOff = local_64" (pointer_expression "*(uint *)&pPager->journalOff" * (cast_expression "(uint *)&pPager->journalOff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pPager->journalOff" & (field_expression "pPager->journalOff" identifier -> field_identifier)))) = identifier) ;) (expression_statement "*(int *)((int)&pPager->journalOff + 4) = local_60;" (assignment_expression "*(int *)((int)&pPager->journalOff + 4) = local_60" (pointer_expression "*(int *)((int)&pPager->journalOff + 4)" * (cast_expression "(int *)((int)&pPager->journalOff + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPager->journalOff + 4)" ( (binary_expression "(int)&pPager->journalOff + 4" (cast_expression "(int)&pPager->journalOff" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPager->journalOff" & (field_expression "pPager->journalOff" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0007c6d7;" goto statement_identifier ;) })))
(translation_unit "int __regparm3 FUN_0007c320(int param_1)\n\n{\n  undefined4 *puVar1;\n  longlong lVar2;\n  uint uVar3;\n  int iVar4;\n  uint *puVar5;\n  uint uVar6;\n  int extraout_ECX;\n  int extraout_EDX;\n  uint uVar7;\n  int iVar8;\n  int unaff_EDI;\n  uint uVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  uint local_64;\n  uint local_60;\n  int local_58;\n  uint *local_44;\n  uint local_30;\n  undefined4 local_2c;\n  int local_28;\n  int local_20;\n  \n  FUN_0001af1a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = (uint)(extraout_EDX != 1) + extraout_ECX;\n  iVar8 = iVar4;\n  if (iVar4 < *(int *)(param_1 + 0x60)) {\n    do {\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    } while (iVar8 < *(int *)(param_1 + 0x60));\n  }\n  *(int *)(param_1 + 0x60) = iVar4;\n  if (extraout_EDX == 1) {\n    if (iVar4 == 0) {\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }\n  }\n  else {\n    iVar8 = *(int *)(param_1 + 0xd4);\n    if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }\n    if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }\n  }\nLAB_0007c6d7:\n  local_58 = 0;\nLAB_0007c632:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return local_58;\nLAB_0007c5aa:\n  if (local_44 != (uint *)0x0) goto LAB_0007c5b6;\nLAB_0007c6c0:\n  FUN_00027250();\n  *(uint *)(param_1 + 0x48) = local_64;\n  *(uint *)(param_1 + 0x4c) = local_60;\n  goto LAB_0007c6d7;\n}\n\n" (function_definition "int __regparm3 FUN_0007c320(int param_1)\n\n{\n  undefined4 *puVar1;\n  longlong lVar2;\n  uint uVar3;\n  int iVar4;\n  uint *puVar5;\n  uint uVar6;\n  int extraout_ECX;\n  int extraout_EDX;\n  uint uVar7;\n  int iVar8;\n  int unaff_EDI;\n  uint uVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  uint local_64;\n  uint local_60;\n  int local_58;\n  uint *local_44;\n  uint local_30;\n  undefined4 local_2c;\n  int local_28;\n  int local_20;\n  \n  FUN_0001af1a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = (uint)(extraout_EDX != 1) + extraout_ECX;\n  iVar8 = iVar4;\n  if (iVar4 < *(int *)(param_1 + 0x60)) {\n    do {\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    } while (iVar8 < *(int *)(param_1 + 0x60));\n  }\n  *(int *)(param_1 + 0x60) = iVar4;\n  if (extraout_EDX == 1) {\n    if (iVar4 == 0) {\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }\n  }\n  else {\n    iVar8 = *(int *)(param_1 + 0xd4);\n    if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }\n    if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }\n  }\nLAB_0007c6d7:\n  local_58 = 0;\nLAB_0007c632:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return local_58;\nLAB_0007c5aa:\n  if (local_44 != (uint *)0x0) goto LAB_0007c5b6;\nLAB_0007c6c0:\n  FUN_00027250();\n  *(uint *)(param_1 + 0x48) = local_64;\n  *(uint *)(param_1 + 0x4c) = local_60;\n  goto LAB_0007c6d7;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0007c320(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  longlong lVar2;\n  uint uVar3;\n  int iVar4;\n  uint *puVar5;\n  uint uVar6;\n  int extraout_ECX;\n  int extraout_EDX;\n  uint uVar7;\n  int iVar8;\n  int unaff_EDI;\n  uint uVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  uint local_64;\n  uint local_60;\n  int local_58;\n  uint *local_44;\n  uint local_30;\n  undefined4 local_2c;\n  int local_28;\n  int local_20;\n  \n  FUN_0001af1a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = (uint)(extraout_EDX != 1) + extraout_ECX;\n  iVar8 = iVar4;\n  if (iVar4 < *(int *)(param_1 + 0x60)) {\n    do {\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    } while (iVar8 < *(int *)(param_1 + 0x60));\n  }\n  *(int *)(param_1 + 0x60) = iVar4;\n  if (extraout_EDX == 1) {\n    if (iVar4 == 0) {\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }\n  }\n  else {\n    iVar8 = *(int *)(param_1 + 0xd4);\n    if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }\n    if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }\n  }\nLAB_0007c6d7:\n  local_58 = 0;\nLAB_0007c632:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return local_58;\nLAB_0007c5aa:\n  if (local_44 != (uint *)0x0) goto LAB_0007c5b6;\nLAB_0007c6c0:\n  FUN_00027250();\n  *(uint *)(param_1 + 0x48) = local_64;\n  *(uint *)(param_1 + 0x4c) = local_60;\n  goto LAB_0007c6d7;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "longlong lVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "uint local_60;" type_identifier identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "uint *local_44;" type_identifier (pointer_declarator "*local_44" * identifier) ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "FUN_0001af1a();" (call_expression "FUN_0001af1a()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = (uint)(extraout_EDX != 1) + extraout_ECX;" (assignment_expression "iVar4 = (uint)(extraout_EDX != 1) + extraout_ECX" identifier = (binary_expression "(uint)(extraout_EDX != 1) + extraout_ECX" (call_expression "(uint)(extraout_EDX != 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(extraout_EDX != 1)" ( (binary_expression "extraout_EDX != 1" identifier != number_literal) ))) + identifier)) ;) (expression_statement "iVar8 = iVar4;" (assignment_expression "iVar8 = iVar4" identifier = identifier) ;) (if_statement "if (iVar4 < *(int *)(param_1 + 0x60)) {\n    do {\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    } while (iVar8 < *(int *)(param_1 + 0x60));\n  }" if (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x60))" ( (binary_expression "iVar4 < *(int *)(param_1 + 0x60)" identifier < (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    } while (iVar8 < *(int *)(param_1 + 0x60));\n  }" { (do_statement "do {\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    } while (iVar8 < *(int *)(param_1 + 0x60));" do (compound_statement "{\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    }" { (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00027250();" (call_expression "FUN_00027250()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "(iVar8 < *(int *)(param_1 + 0x60))" ( (binary_expression "iVar8 < *(int *)(param_1 + 0x60)" identifier < (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) )) ;) })) (expression_statement "*(int *)(param_1 + 0x60) = iVar4;" (assignment_expression "*(int *)(param_1 + 0x60) = iVar4" (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) = identifier) ;) (if_statement "if (extraout_EDX == 1) {\n    if (iVar4 == 0) {\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }\n  }\n  else {\n    iVar8 = *(int *)(param_1 + 0xd4);\n    if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }\n    if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }\n  }" if (parenthesized_expression "(extraout_EDX == 1)" ( (binary_expression "extraout_EDX == 1" identifier == number_literal) )) (compound_statement "{\n    if (iVar4 == 0) {\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }\n  }" { (if_statement "if (iVar4 == 0) {\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }" { (expression_statement "iVar8 = **(int **)(param_1 + 0x44);" (assignment_expression "iVar8 = **(int **)(param_1 + 0x44)" identifier = (pointer_expression "**(int **)(param_1 + 0x44)" * (pointer_expression "*(int **)(param_1 + 0x44)" * (cast_expression "(int **)(param_1 + 0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))))) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (if_statement "if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }" { (if_statement "if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }" if (parenthesized_expression "(iVar8 == unaff_EDI + 0xce457)" ( (binary_expression "iVar8 == unaff_EDI + 0xce457" identifier == (binary_expression "unaff_EDI + 0xce457" identifier + number_literal)) )) (compound_statement "{\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }" { (expression_statement "local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);" (assignment_expression "local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0)" identifier = (call_expression "FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0)" identifier (argument_list "(*(int **)(param_1 + 0x44),0,0)" ( (pointer_expression "*(int **)(param_1 + 0x44)" * (cast_expression "(int **)(param_1 + 0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) , number_literal , number_literal )))) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x34) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x34) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x34)" * (cast_expression "(undefined4 *)(param_1 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) = number_literal) ;) })) (goto_statement "goto LAB_0007c632;" goto statement_identifier ;) })) }) (else_clause "else {\n    iVar8 = *(int *)(param_1 + 0xd4);\n    if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }\n    if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }\n  }" else (compound_statement "{\n    iVar8 = *(int *)(param_1 + 0xd4);\n    if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }\n    if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }\n  }" { (expression_statement "iVar8 = *(int *)(param_1 + 0xd4);" (assignment_expression "iVar8 = *(int *)(param_1 + 0xd4)" identifier = (pointer_expression "*(int *)(param_1 + 0xd4)" * (cast_expression "(int *)(param_1 + 0xd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd4)" ( (binary_expression "param_1 + 0xd4" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }" { (if_statement "if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }" if (parenthesized_expression "((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0))" ( (binary_expression "(iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)" (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) || (parenthesized_expression "(local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)" ( (comma_expression "local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0" (assignment_expression "local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c)" identifier = (cast_expression "(uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c)" ( (binary_expression "*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c" (binary_expression "*(int *)(param_1 + 0x5c) + -0x2c" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) + number_literal) + (binary_expression "iVar4 * 0x2c" identifier * number_literal)) )))) , (binary_expression "local_44 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }" { (expression_statement "bVar10 = true;" (assignment_expression "bVar10 = true" identifier = true) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);" (assignment_expression "*(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c)" (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x1c)" * (cast_expression "(undefined4 *)(param_1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);" (assignment_expression "*(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc)" (pointer_expression "*(undefined1 *)(param_1 + 0x12)" * (cast_expression "(undefined1 *)(param_1 + 0x12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x12)" ( (binary_expression "param_1 + 0x12" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(param_1 + 0xc)" * (cast_expression "(undefined1 *)(param_1 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }" if (parenthesized_expression "(*(char *)(iVar8 + 0x2c) != '\0')" ( (binary_expression "*(char *)(iVar8 + 0x2c) != '\0'" (pointer_expression "*(char *)(iVar8 + 0x2c)" * (cast_expression "(char *)(iVar8 + 0x2c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x2c)" ( (binary_expression "iVar8 + 0x2c" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }" { (expression_statement "uVar7 = *(uint *)(iVar8 + 0x44);" (assignment_expression "uVar7 = *(uint *)(iVar8 + 0x44)" identifier = (pointer_expression "*(uint *)(iVar8 + 0x44)" * (cast_expression "(uint *)(iVar8 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x44)" ( (binary_expression "iVar8 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);" (assignment_expression "puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20)" identifier = (cast_expression "(undefined4 *)**(int **)(iVar8 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(int **)(iVar8 + 0x20)" * (pointer_expression "*(int **)(iVar8 + 0x20)" * (cast_expression "(int **)(iVar8 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x20)" ( (binary_expression "iVar8 + 0x20" identifier + number_literal) ))))))) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x34) = *puVar1;" (assignment_expression "*(undefined4 *)(iVar8 + 0x34) = *puVar1" (pointer_expression "*(undefined4 *)(iVar8 + 0x34)" * (cast_expression "(undefined4 *)(iVar8 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x34)" ( (binary_expression "iVar8 + 0x34" identifier + number_literal) )))) = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x38) = puVar1[1];" (assignment_expression "*(undefined4 *)(iVar8 + 0x38) = puVar1[1]" (pointer_expression "*(undefined4 *)(iVar8 + 0x38)" * (cast_expression "(undefined4 *)(iVar8 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x38)" ( (binary_expression "iVar8 + 0x38" identifier + number_literal) )))) = (subscript_expression "puVar1[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x3c) = puVar1[2];" (assignment_expression "*(undefined4 *)(iVar8 + 0x3c) = puVar1[2]" (pointer_expression "*(undefined4 *)(iVar8 + 0x3c)" * (cast_expression "(undefined4 *)(iVar8 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x3c)" ( (binary_expression "iVar8 + 0x3c" identifier + number_literal) )))) = (subscript_expression "puVar1[2]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x40) = puVar1[3];" (assignment_expression "*(undefined4 *)(iVar8 + 0x40) = puVar1[3]" (pointer_expression "*(undefined4 *)(iVar8 + 0x40)" * (cast_expression "(undefined4 *)(iVar8 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x40)" ( (binary_expression "iVar8 + 0x40" identifier + number_literal) )))) = (subscript_expression "puVar1[3]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x44) = puVar1[4];" (assignment_expression "*(undefined4 *)(iVar8 + 0x44) = puVar1[4]" (pointer_expression "*(undefined4 *)(iVar8 + 0x44)" * (cast_expression "(undefined4 *)(iVar8 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x44)" ( (binary_expression "iVar8 + 0x44" identifier + number_literal) )))) = (subscript_expression "puVar1[4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x48) = puVar1[5];" (assignment_expression "*(undefined4 *)(iVar8 + 0x48) = puVar1[5]" (pointer_expression "*(undefined4 *)(iVar8 + 0x48)" * (cast_expression "(undefined4 *)(iVar8 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x48)" ( (binary_expression "iVar8 + 0x48" identifier + number_literal) )))) = (subscript_expression "puVar1[5]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x4c) = puVar1[6];" (assignment_expression "*(undefined4 *)(iVar8 + 0x4c) = puVar1[6]" (pointer_expression "*(undefined4 *)(iVar8 + 0x4c)" * (cast_expression "(undefined4 *)(iVar8 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x4c)" ( (binary_expression "iVar8 + 0x4c" identifier + number_literal) )))) = (subscript_expression "puVar1[6]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x50) = puVar1[7];" (assignment_expression "*(undefined4 *)(iVar8 + 0x50) = puVar1[7]" (pointer_expression "*(undefined4 *)(iVar8 + 0x50)" * (cast_expression "(undefined4 *)(iVar8 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x50)" ( (binary_expression "iVar8 + 0x50" identifier + number_literal) )))) = (subscript_expression "puVar1[7]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x54) = puVar1[8];" (assignment_expression "*(undefined4 *)(iVar8 + 0x54) = puVar1[8]" (pointer_expression "*(undefined4 *)(iVar8 + 0x54)" * (cast_expression "(undefined4 *)(iVar8 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x54)" ( (binary_expression "iVar8 + 0x54" identifier + number_literal) )))) = (subscript_expression "puVar1[8]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x58) = puVar1[9];" (assignment_expression "*(undefined4 *)(iVar8 + 0x58) = puVar1[9]" (pointer_expression "*(undefined4 *)(iVar8 + 0x58)" * (cast_expression "(undefined4 *)(iVar8 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x58)" ( (binary_expression "iVar8 + 0x58" identifier + number_literal) )))) = (subscript_expression "puVar1[9]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x5c) = puVar1[10];" (assignment_expression "*(undefined4 *)(iVar8 + 0x5c) = puVar1[10]" (pointer_expression "*(undefined4 *)(iVar8 + 0x5c)" * (cast_expression "(undefined4 *)(iVar8 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x5c)" ( (binary_expression "iVar8 + 0x5c" identifier + number_literal) )))) = (subscript_expression "puVar1[10]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = *(uint *)(iVar8 + 0x44);" (assignment_expression "uVar6 = *(uint *)(iVar8 + 0x44)" identifier = (pointer_expression "*(uint *)(iVar8 + 0x44)" * (cast_expression "(uint *)(iVar8 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x44)" ( (binary_expression "iVar8 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];" (assignment_expression "*(undefined4 *)(iVar8 + 0x60) = puVar1[0xb]" (pointer_expression "*(undefined4 *)(iVar8 + 0x60)" * (cast_expression "(undefined4 *)(iVar8 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x60)" ( (binary_expression "iVar8 + 0x60" identifier + number_literal) )))) = (subscript_expression "puVar1[0xb]" identifier [ number_literal ])) ;) (if_statement "if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }" if (parenthesized_expression "(uVar6 + 1 <= uVar7)" ( (binary_expression "uVar6 + 1 <= uVar7" (binary_expression "uVar6 + 1" identifier + number_literal) <= identifier) )) (compound_statement "{\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }" { (expression_statement "iVar4 = uVar6 + 0x22;" (assignment_expression "iVar4 = uVar6 + 0x22" identifier = (binary_expression "uVar6 + 0x22" identifier + number_literal)) ;) (do_statement "do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);" do (compound_statement "{\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            }" { (expression_statement "local_58 = FUN_00067ce0();" (assignment_expression "local_58 = FUN_00067ce0()" identifier = (call_expression "FUN_00067ce0()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar6 = iVar4 - 0x20;" (assignment_expression "uVar6 = iVar4 - 0x20" identifier = (binary_expression "iVar4 - 0x20" identifier - number_literal)) ;) (expression_statement "bVar10 = local_58 == 0;" (assignment_expression "bVar10 = local_58 == 0" identifier = (binary_expression "local_58 == 0" identifier == number_literal)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 <= uVar7 && bVar10)" ( (binary_expression "uVar6 <= uVar7 && bVar10" (binary_expression "uVar6 <= uVar7" identifier <= identifier) && identifier) )) ;) (expression_statement "uVar6 = *(uint *)(iVar8 + 0x44);" (assignment_expression "uVar6 = *(uint *)(iVar8 + 0x44)" identifier = (pointer_expression "*(uint *)(iVar8 + 0x44)" * (cast_expression "(uint *)(iVar8 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x44)" ( (binary_expression "iVar8 + 0x44" identifier + number_literal) ))))) ;) })) (if_statement "if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }" if (parenthesized_expression "(uVar7 != uVar6)" ( (binary_expression "uVar7 != uVar6" identifier != identifier) )) (compound_statement "{\n            FUN_00067d50();\n          }" { (expression_statement "FUN_00067d50();" (call_expression "FUN_00067d50()" identifier (argument_list "()" ( ))) ;) })) })) (expression_statement "iVar8 = **(int **)(param_1 + 0xd0);" (assignment_expression "iVar8 = **(int **)(param_1 + 0xd0)" identifier = (pointer_expression "**(int **)(param_1 + 0xd0)" * (pointer_expression "*(int **)(param_1 + 0xd0)" * (cast_expression "(int **)(param_1 + 0xd0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xd0)" ( (binary_expression "param_1 + 0xd0" identifier + number_literal) )))))) ;) (while_statement "while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }" while (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }" { (expression_statement "*(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);" (assignment_expression "*(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20)" (pointer_expression "*(int *)(iVar8 + 0x10)" * (cast_expression "(int *)(iVar8 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) = (pointer_expression "*(int *)(iVar8 + 0x20)" * (cast_expression "(int *)(iVar8 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x20)" ( (binary_expression "iVar8 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(iVar8 + 0x20);" (assignment_expression "iVar8 = *(int *)(iVar8 + 0x20)" identifier = (pointer_expression "*(int *)(iVar8 + 0x20)" * (cast_expression "(int *)(iVar8 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x20)" ( (binary_expression "iVar8 + 0x20" identifier + number_literal) ))))) ;) })) (expression_statement "iVar8 = FUN_00025c80();" (assignment_expression "iVar8 = FUN_00025c80()" identifier = (call_expression "FUN_00025c80()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }" if (parenthesized_expression "((iVar8 != 0) && (bVar10))" ( (binary_expression "(iVar8 != 0) && (bVar10)" (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) && (parenthesized_expression "(bVar10)" ( identifier ))) )) (compound_statement "{\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }" { (do_statement "do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);" do (compound_statement "{\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          }" { (expression_statement "iVar8 = *(int *)(iVar8 + 0x10);" (assignment_expression "iVar8 = *(int *)(iVar8 + 0x10)" identifier = (pointer_expression "*(int *)(iVar8 + 0x10)" * (cast_expression "(int *)(iVar8 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "local_58 = FUN_00067ce0();" (assignment_expression "local_58 = FUN_00067ce0()" identifier = (call_expression "FUN_00067ce0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "(local_58 == 0)" ( (binary_expression "local_58 == 0" identifier == number_literal) )) ;) })) (goto_statement "goto LAB_0007c632;" goto statement_identifier ;) })) (labeled_statement "LAB_0007c3bd:\n      uVar7 = local_44[5];" statement_identifier : (expression_statement "uVar7 = local_44[5];" (assignment_expression "uVar7 = local_44[5]" identifier = (subscript_expression "local_44[5]" identifier [ number_literal ])) ;)) (expression_statement "puVar5 = (uint *)FUN_000261b0();" (assignment_expression "puVar5 = (uint *)FUN_000261b0()" identifier = (cast_expression "(uint *)FUN_000261b0()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000261b0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_58 = 7;" (assignment_expression "local_58 = 7" identifier = number_literal) ;) (if_statement "if (puVar5 == (uint *)0x0) goto LAB_0007c632;" if (parenthesized_expression "(puVar5 == (uint *)0x0)" ( (binary_expression "puVar5 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0007c632;" goto statement_identifier ;)) (expression_statement "*puVar5 = uVar7;" (assignment_expression "*puVar5 = uVar7" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "local_60 = *(uint *)(param_1 + 0x4c);" (assignment_expression "local_60 = *(uint *)(param_1 + 0x4c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(param_1 + 0x18) = local_44[5];" (assignment_expression "*(uint *)(param_1 + 0x18) = local_44[5]" (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (subscript_expression "local_44[5]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);" (assignment_expression "*(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc)" (pointer_expression "*(undefined1 *)(param_1 + 0x12)" * (cast_expression "(undefined1 *)(param_1 + 0x12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x12)" ( (binary_expression "param_1 + 0x12" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(param_1 + 0xc)" * (cast_expression "(undefined1 *)(param_1 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "local_64 = *(uint *)(param_1 + 0x48);" (assignment_expression "local_64 = *(uint *)(param_1 + 0x48)" identifier = (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0xd4) == 0)" ( (binary_expression "*(int *)(param_1 + 0xd4) == 0" (pointer_expression "*(int *)(param_1 + 0xd4)" * (cast_expression "(int *)(param_1 + 0xd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd4)" ( (binary_expression "param_1 + 0xd4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }" { (expression_statement "uVar7 = *local_44;" (assignment_expression "uVar7 = *local_44" identifier = (pointer_expression "*local_44" * identifier)) ;) (expression_statement "uVar6 = local_44[1];" (assignment_expression "uVar6 = local_44[1]" identifier = (subscript_expression "local_44[1]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = local_44[2];" (assignment_expression "uVar9 = local_44[2]" identifier = (subscript_expression "local_44[2]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = local_44[3];" (assignment_expression "uVar3 = local_44[3]" identifier = (subscript_expression "local_44[3]" identifier [ number_literal ])) ;) (if_statement "if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }" if (parenthesized_expression "(local_44[3] == 0 && local_44[2] == 0)" ( (binary_expression "local_44[3] == 0 && local_44[2] == 0" (binary_expression "local_44[3] == 0" (subscript_expression "local_44[3]" identifier [ number_literal ]) == number_literal) && (binary_expression "local_44[2] == 0" (subscript_expression "local_44[2]" identifier [ number_literal ]) == number_literal)) )) (compound_statement "{\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }" { (expression_statement "uVar9 = local_64;" (assignment_expression "uVar9 = local_64" identifier = identifier) ;) (expression_statement "uVar3 = local_60;" (assignment_expression "uVar3 = local_60" identifier = identifier) ;) })) (expression_statement "*(uint *)(param_1 + 0x48) = uVar7;" (assignment_expression "*(uint *)(param_1 + 0x48) = uVar7" (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_1 + 0x4c) = uVar6;" (assignment_expression "*(uint *)(param_1 + 0x4c) = uVar6" (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = identifier) ;) (while_statement "while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }" while (parenthesized_expression "((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0)" ( (binary_expression "(SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0" (parenthesized_expression "(SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9)))" ( (binary_expression "SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))" (call_expression "SBORROW4(uVar6,uVar3)" identifier (argument_list "(uVar6,uVar3)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))" identifier (argument_list "(uVar6 - uVar3,(uint)(uVar7 < uVar9))" ( (binary_expression "uVar6 - uVar3" identifier - identifier) , (call_expression "(uint)(uVar7 < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < uVar9)" ( (binary_expression "uVar7 < uVar9" identifier < identifier) ))) )))) )) != (binary_expression "(int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0" (cast_expression "(int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar6 - uVar3) - (uint)(uVar7 < uVar9))" ( (binary_expression "(uVar6 - uVar3) - (uint)(uVar7 < uVar9)" (parenthesized_expression "(uVar6 - uVar3)" ( (binary_expression "uVar6 - uVar3" identifier - identifier) )) - (call_expression "(uint)(uVar7 < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < uVar9)" ( (binary_expression "uVar7 < uVar9" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }" { (expression_statement "local_58 = FUN_0007bf20(1,1);" (assignment_expression "local_58 = FUN_0007bf20(1,1)" identifier = (call_expression "FUN_0007bf20(1,1)" identifier (argument_list "(1,1)" ( number_literal , number_literal )))) ;) (if_statement "if (local_58 != 0) goto LAB_0007c4c8;" if (parenthesized_expression "(local_58 != 0)" ( (binary_expression "local_58 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007c4c8;" goto statement_identifier ;)) (expression_statement "uVar7 = *(uint *)(param_1 + 0x48);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x48)" identifier = (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = *(uint *)(param_1 + 0x4c);" (assignment_expression "uVar6 = *(uint *)(param_1 + 0x4c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) })) (if_statement "if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;" if (parenthesized_expression "((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0)" ( (binary_expression "(SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0" (parenthesized_expression "(SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64)))" ( (binary_expression "SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))" (call_expression "SBORROW4(uVar6,local_60)" identifier (argument_list "(uVar6,local_60)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))" identifier (argument_list "(uVar6 - local_60,(uint)(uVar7 < local_64))" ( (binary_expression "uVar6 - local_60" identifier - identifier) , (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < local_64)" ( (binary_expression "uVar7 < local_64" identifier < identifier) ))) )))) )) != (binary_expression "(int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0" (cast_expression "(int)((uVar6 - local_60) - (uint)(uVar7 < local_64))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar6 - local_60) - (uint)(uVar7 < local_64))" ( (binary_expression "(uVar6 - local_60) - (uint)(uVar7 < local_64)" (parenthesized_expression "(uVar6 - local_60)" ( (binary_expression "uVar6 - local_60" identifier - identifier) )) - (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < local_64)" ( (binary_expression "uVar7 < local_64" identifier < identifier) )))) ))) < number_literal)) )) (goto_statement "goto LAB_0007c431;" goto statement_identifier ;)) (labeled_statement "LAB_0007c5b6:\n        uVar7 = local_44[6];" statement_identifier : (expression_statement "uVar7 = local_44[6];" (assignment_expression "uVar7 = local_44[6]" identifier = (subscript_expression "local_44[6]" identifier [ number_literal ])) ;)) (expression_statement "uVar6 = *(int *)(param_1 + 0x94) + 4;" (assignment_expression "uVar6 = *(int *)(param_1 + 0x94) + 4" identifier = (binary_expression "*(int *)(param_1 + 0x94) + 4" (pointer_expression "*(int *)(param_1 + 0x94)" * (cast_expression "(int *)(param_1 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;" (assignment_expression "lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7" identifier = (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar7" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "local_2c = (undefined4)lVar2;" (assignment_expression "local_2c = (undefined4)lVar2" identifier = (cast_expression "(undefined4)lVar2" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0xd4);" (assignment_expression "iVar8 = *(int *)(param_1 + 0xd4)" identifier = (pointer_expression "*(int *)(param_1 + 0xd4)" * (cast_expression "(int *)(param_1 + 0xd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd4)" ( (binary_expression "param_1 + 0xd4" identifier + number_literal) ))))) ;) (expression_statement "local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;" (assignment_expression "local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7" identifier = (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + (binary_expression "((int)uVar6 >> 0x1f) * uVar7" (parenthesized_expression "((int)uVar6 >> 0x1f)" ( (binary_expression "(int)uVar6 >> 0x1f" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * identifier))) ;) (if_statement "if (iVar8 != 0) goto LAB_0007c4fc;" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007c4fc;" goto statement_identifier ;)) }) (else_clause "else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }" else (compound_statement "{\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }" { (expression_statement "*(undefined4 *)(param_1 + 0x48) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x48) = 0" (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" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = number_literal) ;) (if_statement "if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;" if (parenthesized_expression "((int)(uint)(local_64 != 0) <= (int)-local_60)" ( (binary_expression "(int)(uint)(local_64 != 0) <= (int)-local_60" (cast_expression "(int)(uint)(local_64 != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(local_64 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_64 != 0)" ( (binary_expression "local_64 != 0" identifier != number_literal) )))) <= (cast_expression "(int)-local_60" ( (type_descriptor "int" primitive_type) ) (unary_expression "-local_60" - identifier))) )) (goto_statement "goto LAB_0007c5b6;" goto statement_identifier ;)) (labeled_statement "LAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;" statement_identifier : (labeled_statement "LAB_0007c450:\n        local_30 = 0;" statement_identifier : (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;))) (expression_statement "local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);" (assignment_expression "local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c)" identifier = (call_expression "FUN_0003bf80(local_64,local_60,&local_30,&local_2c)" identifier (argument_list "(local_64,local_60,&local_30,&local_2c)" ( identifier , identifier , (pointer_expression "&local_30" & identifier) , (pointer_expression "&local_2c" & identifier) )))) ;) (if_statement "if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (compound_statement "{\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }" { (if_statement "if (local_58 != 0) goto LAB_0007c4bc;" if (parenthesized_expression "(local_58 != 0)" ( (binary_expression "local_58 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007c4bc;" goto statement_identifier ;)) (expression_statement "uVar7 = *(uint *)(param_1 + 0x48);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x48)" identifier = (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;" statement_identifier : (if_statement "if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;" if (parenthesized_expression "((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0)" ( (binary_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0" (parenthesized_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))" ( (binary_expression "SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))" (call_expression "SBORROW4(iVar8,local_60)" identifier (argument_list "(iVar8,local_60)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))" identifier (argument_list "(iVar8 - local_60,(uint)(uVar7 < local_64))" ( (binary_expression "iVar8 - local_60" identifier - identifier) , (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < local_64)" ( (binary_expression "uVar7 < local_64" identifier < identifier) ))) )))) )) == (binary_expression "(int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0" (cast_expression "(int)((iVar8 - local_60) - (uint)(uVar7 < local_64))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar8 - local_60) - (uint)(uVar7 < local_64))" ( (binary_expression "(iVar8 - local_60) - (uint)(uVar7 < local_64)" (parenthesized_expression "(iVar8 - local_60)" ( (binary_expression "iVar8 - local_60" identifier - identifier) )) - (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < local_64)" ( (binary_expression "uVar7 < local_64" identifier < identifier) )))) ))) < number_literal)) )) (goto_statement "goto LAB_0007c5aa;" goto statement_identifier ;))) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));" do (compound_statement "{\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          }" { (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "local_58 = FUN_0007bf20(1,1);" (assignment_expression "local_58 = FUN_0007bf20(1,1)" identifier = (call_expression "FUN_0007bf20(1,1)" identifier (argument_list "(1,1)" ( number_literal , number_literal )))) ;) (if_statement "if (local_58 != 0) goto LAB_0007c4bc;" if (parenthesized_expression "(local_58 != 0)" ( (binary_expression "local_58 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007c4bc;" goto statement_identifier ;)) (expression_statement "uVar7 = *(uint *)(param_1 + 0x48);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x48)" identifier = (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0))" ( (binary_expression "(uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0)" (parenthesized_expression "(uVar6 < local_30)" ( (binary_expression "uVar6 < local_30" identifier < identifier) )) && (parenthesized_expression "((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0)" ( (binary_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0" (parenthesized_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))" ( (binary_expression "SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))" (call_expression "SBORROW4(iVar8,local_60)" identifier (argument_list "(iVar8,local_60)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))" identifier (argument_list "(iVar8 - local_60,(uint)(uVar7 < local_64))" ( (binary_expression "iVar8 - local_60" identifier - identifier) , (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < local_64)" ( (binary_expression "uVar7 < local_64" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0" (cast_expression "(int)((iVar8 - local_60) - (uint)(uVar7 < local_64))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar8 - local_60) - (uint)(uVar7 < local_64))" ( (binary_expression "(iVar8 - local_60) - (uint)(uVar7 < local_64)" (parenthesized_expression "(iVar8 - local_60)" ( (binary_expression "iVar8 - local_60" identifier - identifier) )) - (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < local_64)" ( (binary_expression "uVar7 < local_64" identifier < identifier) )))) ))) < number_literal)) ))) )) ;) (labeled_statement "LAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;" statement_identifier : (if_statement "if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;" if (parenthesized_expression "((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0)" ( (binary_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0" (parenthesized_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))" ( (binary_expression "SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))" (call_expression "SBORROW4(iVar8,local_60)" identifier (argument_list "(iVar8,local_60)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))" identifier (argument_list "(iVar8 - local_60,(uint)(uVar7 < local_64))" ( (binary_expression "iVar8 - local_60" identifier - identifier) , (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < local_64)" ( (binary_expression "uVar7 < local_64" identifier < identifier) ))) )))) )) == (binary_expression "(int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0" (cast_expression "(int)((iVar8 - local_60) - (uint)(uVar7 < local_64))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar8 - local_60) - (uint)(uVar7 < local_64))" ( (binary_expression "(iVar8 - local_60) - (uint)(uVar7 < local_64)" (parenthesized_expression "(iVar8 - local_60)" ( (binary_expression "iVar8 - local_60" identifier - identifier) )) - (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < local_64)" ( (binary_expression "uVar7 < local_64" identifier < identifier) )))) ))) < number_literal)) )) (goto_statement "goto LAB_0007c5aa;" goto statement_identifier ;))) (goto_statement "goto LAB_0007c450;" goto statement_identifier ;) })) (expression_statement "uVar7 = *(uint *)(param_1 + 0x48);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x48)" identifier = (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7)" ( (binary_expression "*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7" (binary_expression "*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8" (binary_expression "*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50))" (pointer_expression "*(int *)(param_1 + 0x54)" * (cast_expression "(int *)(param_1 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) + (cast_expression "(uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50))" identifier (argument_list "(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50))" ( (pointer_expression "*(uint *)(param_1 + 0x90)" * (cast_expression "(uint *)(param_1 + 0x90)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x90)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) )))) , (pointer_expression "*(uint *)(param_1 + 0x50)" * (cast_expression "(uint *)(param_1 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) ))))) == identifier) && (binary_expression "*(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7" (binary_expression "*(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50)" (pointer_expression "*(uint *)(param_1 + 0x90)" * (cast_expression "(uint *)(param_1 + 0x90)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x90)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) )))) + (pointer_expression "*(uint *)(param_1 + 0x50)" * (cast_expression "(uint *)(param_1 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) == identifier)) )) (compound_statement "{\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }" { (expression_statement "iVar4 = *(int *)(param_1 + 0x94) + 8;" (assignment_expression "iVar4 = *(int *)(param_1 + 0x94) + 8" identifier = (binary_expression "*(int *)(param_1 + 0x94) + 8" (pointer_expression "*(int *)(param_1 + 0x94)" * (cast_expression "(int *)(param_1 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);" (assignment_expression "local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f)" identifier = (call_expression "FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f)" identifier (argument_list "(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f)" ( (binary_expression "local_64 - uVar7" identifier - identifier) , (binary_expression "(local_60 - iVar8) - (uint)(local_64 < uVar7)" (parenthesized_expression "(local_60 - iVar8)" ( (binary_expression "local_60 - iVar8" identifier - identifier) )) - (call_expression "(uint)(local_64 < uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_64 < uVar7)" ( (binary_expression "local_64 < uVar7" identifier < identifier) )))) , identifier , (binary_expression "iVar4 >> 0x1f" identifier >> number_literal) )))) ;) (if_statement "if (local_58 != 0) goto LAB_0007c4bc;" if (parenthesized_expression "(local_58 != 0)" ( (binary_expression "local_58 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007c4bc;" goto statement_identifier ;)) (if_statement "if (local_30 != 0) goto LAB_0007c6f6;" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007c6f6;" goto statement_identifier ;)) (goto_statement "goto LAB_0007c598;" goto statement_identifier ;) })) (if_statement "if (local_58 == 0) goto LAB_0007c598;" if (parenthesized_expression "(local_58 == 0)" ( (binary_expression "local_58 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0007c598;" goto statement_identifier ;)) (labeled_statement "LAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;" statement_identifier : (if_statement "if (local_44 == (uint *)0x0) goto LAB_0007c629;" if (parenthesized_expression "(local_44 == (uint *)0x0)" ( (binary_expression "local_44 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0007c629;" goto statement_identifier ;))) (labeled_statement "LAB_0007c4c8:\n        uVar7 = local_44[6];" statement_identifier : (expression_statement "uVar7 = local_44[6];" (assignment_expression "uVar7 = local_44[6]" identifier = (subscript_expression "local_44[6]" identifier [ number_literal ])) ;)) (expression_statement "uVar6 = *(int *)(param_1 + 0x94) + 4;" (assignment_expression "uVar6 = *(int *)(param_1 + 0x94) + 4" identifier = (binary_expression "*(int *)(param_1 + 0x94) + 4" (pointer_expression "*(int *)(param_1 + 0x94)" * (cast_expression "(int *)(param_1 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;" (assignment_expression "lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7" identifier = (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar7" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "local_2c = (undefined4)lVar2;" (assignment_expression "local_2c = (undefined4)lVar2" identifier = (cast_expression "(undefined4)lVar2" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0xd4);" (assignment_expression "iVar8 = *(int *)(param_1 + 0xd4)" identifier = (pointer_expression "*(int *)(param_1 + 0xd4)" * (cast_expression "(int *)(param_1 + 0xd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd4)" ( (binary_expression "param_1 + 0xd4" identifier + number_literal) ))))) ;) (expression_statement "local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;" (assignment_expression "local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7" identifier = (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + (binary_expression "((int)uVar6 >> 0x1f) * uVar7" (parenthesized_expression "((int)uVar6 >> 0x1f)" ( (binary_expression "(int)uVar6 >> 0x1f" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * identifier))) ;) (if_statement "if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }" { (labeled_statement "LAB_0007c629:\n          FUN_00027250();" statement_identifier : (expression_statement "FUN_00027250();" (call_expression "FUN_00027250()" identifier (argument_list "()" ( ))) ;)) (goto_statement "goto LAB_0007c632;" goto statement_identifier ;) })) (labeled_statement "LAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }" statement_identifier : (if_statement "if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }" if (parenthesized_expression "(local_44[10] == *(uint *)(iVar8 + 0x70))" ( (binary_expression "local_44[10] == *(uint *)(iVar8 + 0x70)" (subscript_expression "local_44[10]" identifier [ number_literal ]) == (pointer_expression "*(uint *)(iVar8 + 0x70)" * (cast_expression "(uint *)(iVar8 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x70)" ( (binary_expression "iVar8 + 0x70" identifier + number_literal) ))))) )) (compound_statement "{\n          uVar6 = local_44[7];\n        }" { (expression_statement "uVar6 = local_44[7];" (assignment_expression "uVar6 = local_44[7]" identifier = (subscript_expression "local_44[7]" identifier [ number_literal ])) ;) }) (else_clause "else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }" else (compound_statement "{\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }" { (expression_statement "local_44[7] = 0;" (assignment_expression "local_44[7] = 0" (subscript_expression "local_44[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_44[10] = *(uint *)(iVar8 + 0x70);" (assignment_expression "local_44[10] = *(uint *)(iVar8 + 0x70)" (subscript_expression "local_44[10]" identifier [ number_literal ]) = (pointer_expression "*(uint *)(iVar8 + 0x70)" * (cast_expression "(uint *)(iVar8 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x70)" ( (binary_expression "iVar8 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) })))) (if_statement "if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }" if (parenthesized_expression "(uVar6 < *(uint *)(iVar8 + 0x44))" ( (binary_expression "uVar6 < *(uint *)(iVar8 + 0x44)" identifier < (pointer_expression "*(uint *)(iVar8 + 0x44)" * (cast_expression "(uint *)(iVar8 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x44)" ( (binary_expression "iVar8 + 0x44" identifier + number_literal) ))))) )) (compound_statement "{\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }" { (expression_statement "*(uint *)(iVar8 + 0x44) = uVar6;" (assignment_expression "*(uint *)(iVar8 + 0x44) = uVar6" (pointer_expression "*(uint *)(iVar8 + 0x44)" * (cast_expression "(uint *)(iVar8 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x44)" ( (binary_expression "iVar8 + 0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(iVar8 + 0x4c) = local_44[8];" (assignment_expression "*(uint *)(iVar8 + 0x4c) = local_44[8]" (pointer_expression "*(uint *)(iVar8 + 0x4c)" * (cast_expression "(uint *)(iVar8 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x4c)" ( (binary_expression "iVar8 + 0x4c" identifier + number_literal) )))) = (subscript_expression "local_44[8]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(iVar8 + 0x50) = local_44[9];" (assignment_expression "*(uint *)(iVar8 + 0x50) = local_44[9]" (pointer_expression "*(uint *)(iVar8 + 0x50)" * (cast_expression "(uint *)(iVar8 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x50)" ( (binary_expression "iVar8 + 0x50" identifier + number_literal) )))) = (subscript_expression "local_44[9]" identifier [ number_literal ])) ;) (expression_statement "FUN_00067d50();" (call_expression "FUN_00067d50()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar7 = local_44[6];" (assignment_expression "uVar7 = local_44[6]" identifier = (subscript_expression "local_44[6]" identifier [ number_literal ])) ;) })) }))) (if_statement "if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }" if (parenthesized_expression "(uVar7 < *(uint *)(param_1 + 0x34))" ( (binary_expression "uVar7 < *(uint *)(param_1 + 0x34)" identifier < (pointer_expression "*(uint *)(param_1 + 0x34)" * (cast_expression "(uint *)(param_1 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) )) (compound_statement "{\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }" { (do_statement "do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));" do (compound_statement "{\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        }" { (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "local_58 = FUN_0007bf20(0,1);" (assignment_expression "local_58 = FUN_0007bf20(0,1)" identifier = (call_expression "FUN_0007bf20(0,1)" identifier (argument_list "(0,1)" ( number_literal , number_literal )))) ;) (if_statement "if (local_58 != 0) goto LAB_0007c629;" if (parenthesized_expression "(local_58 != 0)" ( (binary_expression "local_58 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007c629;" goto statement_identifier ;)) }) while (parenthesized_expression "(uVar7 < *(uint *)(param_1 + 0x34))" ( (binary_expression "uVar7 < *(uint *)(param_1 + 0x34)" identifier < (pointer_expression "*(uint *)(param_1 + 0x34)" * (cast_expression "(uint *)(param_1 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) )) ;) })) (goto_statement "goto LAB_0007c6c0;" goto statement_identifier ;) })) (if_statement "if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }" if (parenthesized_expression "(**(int **)(param_1 + 0x40) != 0)" ( (binary_expression "**(int **)(param_1 + 0x40) != 0" (pointer_expression "**(int **)(param_1 + 0x40)" * (pointer_expression "*(int **)(param_1 + 0x40)" * (cast_expression "(int **)(param_1 + 0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) != number_literal) )) (compound_statement "{\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }" { (if_statement "if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;" if (parenthesized_expression "((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0))" ( (binary_expression "(iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)" (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "(local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)" ( (comma_expression "local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0" (assignment_expression "local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c)" identifier = (cast_expression "(uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c)" ( (binary_expression "*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c" (binary_expression "*(int *)(param_1 + 0x5c) + -0x2c" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) + number_literal) + (binary_expression "iVar4 * 0x2c" identifier * number_literal)) )))) , (binary_expression "local_44 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_0007c3bd;" goto statement_identifier ;)) (expression_statement "local_64 = *(uint *)(param_1 + 0x48);" (assignment_expression "local_64 = *(uint *)(param_1 + 0x48)" identifier = (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "local_44 = (uint *)0x0;" (assignment_expression "local_44 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_60 = *(uint *)(param_1 + 0x4c);" (assignment_expression "local_60 = *(uint *)(param_1 + 0x4c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x48) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x48) = 0" (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" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);" (assignment_expression "*(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c)" (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x1c)" * (cast_expression "(undefined4 *)(param_1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);" (assignment_expression "*(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc)" (pointer_expression "*(undefined1 *)(param_1 + 0x12)" * (cast_expression "(undefined1 *)(param_1 + 0x12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x12)" ( (binary_expression "param_1 + 0x12" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(param_1 + 0xc)" * (cast_expression "(undefined1 *)(param_1 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" * (cast_expression "(undefined4 *)(param_1 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = number_literal) ;) (if_statement "if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;" if (parenthesized_expression "((int)(uint)(local_64 != 0) <= (int)-local_60)" ( (binary_expression "(int)(uint)(local_64 != 0) <= (int)-local_60" (cast_expression "(int)(uint)(local_64 != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(local_64 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_64 != 0)" ( (binary_expression "local_64 != 0" identifier != number_literal) )))) <= (cast_expression "(int)-local_60" ( (type_descriptor "int" primitive_type) ) (unary_expression "-local_60" - identifier))) )) (goto_statement "goto LAB_0007c6c0;" goto statement_identifier ;)) (goto_statement "goto LAB_0007c431;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0007c6d7:\n  local_58 = 0;" statement_identifier : (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_0007c632:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_000f6410();\n  }" { (expression_statement "FUN_000f6410();" (call_expression "FUN_000f6410()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return local_58;" return identifier ;) (labeled_statement "LAB_0007c5aa:\n  if (local_44 != (uint *)0x0) goto LAB_0007c5b6;" statement_identifier : (if_statement "if (local_44 != (uint *)0x0) goto LAB_0007c5b6;" if (parenthesized_expression "(local_44 != (uint *)0x0)" ( (binary_expression "local_44 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0007c5b6;" goto statement_identifier ;))) (labeled_statement "LAB_0007c6c0:\n  FUN_00027250();" statement_identifier : (expression_statement "FUN_00027250();" (call_expression "FUN_00027250()" identifier (argument_list "()" ( ))) ;)) (expression_statement "*(uint *)(param_1 + 0x48) = local_64;" (assignment_expression "*(uint *)(param_1 + 0x48) = local_64" (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_1 + 0x4c) = local_60;" (assignment_expression "*(uint *)(param_1 + 0x4c) = local_60" (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0007c6d7;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * 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 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 ;) (expression_statement (call_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 IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) ))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) while (parenthesized_expression ( (binary_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) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , LIT )))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (binary_expression IDENT * LIT)) )))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (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) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT <= IDENT) && IDENT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (while_statement while (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) )))) = (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) ))))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( IDENT ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (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) ))))) ;) (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 IDENT = (pointer_expression * IDENT)) ;) (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 ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) && (binary_expression (subscript_expression IDENT [ LIT ]) == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (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) ;) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) 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 = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (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 (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) <= (cast_expression ( (type_descriptor TYPE) ) (unary_expression - IDENT))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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 (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) == (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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) ))))) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) ))) )) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) == (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) (goto_statement goto statement_identifier ;))) (goto_statement goto statement_identifier ;) })) (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))))) == IDENT) && (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) == IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) , IDENT , (binary_expression IDENT >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) 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 = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (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) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (binary_expression IDENT * LIT)) )))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 (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) )))) = (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) )))) = (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) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) <= (cast_expression ( (type_descriptor TYPE) ) (unary_expression - IDENT))) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (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) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "int __regparm3 FUN_0007c320(int param_1)\n\n{\n  undefined4 *puVar1;\n  longlong lVar2;\n  uint uVar3;\n  int iVar4;\n  uint *puVar5;\n  uint uVar6;\n  int extraout_ECX;\n  int extraout_EDX;\n  uint uVar7;\n  int iVar8;\n  int unaff_EDI;\n  uint uVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  uint local_64;\n  uint local_60;\n  int local_58;\n  uint *local_44;\n  uint local_30;\n  undefined4 local_2c;\n  int local_28;\n  int local_20;\n  \n  FUN_0001af1a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = (uint)(extraout_EDX != 1) + extraout_ECX;\n  iVar8 = iVar4;\n  if (iVar4 < *(int *)(param_1 + 0x60)) {\n    do {\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    } while (iVar8 < *(int *)(param_1 + 0x60));\n  }\n  *(int *)(param_1 + 0x60) = iVar4;\n  if (extraout_EDX == 1) {\n    if (iVar4 == 0) {\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }\n  }\n  else {\n    iVar8 = *(int *)(param_1 + 0xd4);\n    if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }\n    if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }\n  }\nLAB_0007c6d7:\n  local_58 = 0;\nLAB_0007c632:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return local_58;\nLAB_0007c5aa:\n  if (local_44 != (uint *)0x0) goto LAB_0007c5b6;\nLAB_0007c6c0:\n  FUN_00027250();\n  *(uint *)(param_1 + 0x48) = local_64;\n  *(uint *)(param_1 + 0x4c) = local_60;\n  goto LAB_0007c6d7;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0007c320(int param_1)" (identifier "FUN_0007c320") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  longlong lVar2;\n  uint uVar3;\n  int iVar4;\n  uint *puVar5;\n  uint uVar6;\n  int extraout_ECX;\n  int extraout_EDX;\n  uint uVar7;\n  int iVar8;\n  int unaff_EDI;\n  uint uVar9;\n  int in_GS_OFFSET;\n  bool bVar10;\n  uint local_64;\n  uint local_60;\n  int local_58;\n  uint *local_44;\n  uint local_30;\n  undefined4 local_2c;\n  int local_28;\n  int local_20;\n  \n  FUN_0001af1a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = (uint)(extraout_EDX != 1) + extraout_ECX;\n  iVar8 = iVar4;\n  if (iVar4 < *(int *)(param_1 + 0x60)) {\n    do {\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    } while (iVar8 < *(int *)(param_1 + 0x60));\n  }\n  *(int *)(param_1 + 0x60) = iVar4;\n  if (extraout_EDX == 1) {\n    if (iVar4 == 0) {\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }\n  }\n  else {\n    iVar8 = *(int *)(param_1 + 0xd4);\n    if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }\n    if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }\n  }\nLAB_0007c6d7:\n  local_58 = 0;\nLAB_0007c632:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return local_58;\nLAB_0007c5aa:\n  if (local_44 != (uint *)0x0) goto LAB_0007c5b6;\nLAB_0007c6c0:\n  FUN_00027250();\n  *(uint *)(param_1 + 0x48) = local_64;\n  *(uint *)(param_1 + 0x4c) = local_60;\n  goto LAB_0007c6d7;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "longlong lVar2;" (type_identifier "longlong") (identifier "lVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint *puVar5;" (type_identifier "uint") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int extraout_ECX;" (primitive_type "int") (identifier "extraout_ECX") (; ";")) (declaration "int extraout_EDX;" (primitive_type "int") (identifier "extraout_EDX") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar10;" (primitive_type "bool") (identifier "bVar10") (; ";")) (declaration "uint local_64;" (type_identifier "uint") (identifier "local_64") (; ";")) (declaration "uint local_60;" (type_identifier "uint") (identifier "local_60") (; ";")) (declaration "int local_58;" (primitive_type "int") (identifier "local_58") (; ";")) (declaration "uint *local_44;" (type_identifier "uint") (pointer_declarator "*local_44" (* "*") (identifier "local_44")) (; ";")) (declaration "uint local_30;" (type_identifier "uint") (identifier "local_30") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "FUN_0001af1a();" (call_expression "FUN_0001af1a()" (identifier "FUN_0001af1a") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar4 = (uint)(extraout_EDX != 1) + extraout_ECX;" (assignment_expression "iVar4 = (uint)(extraout_EDX != 1) + extraout_ECX" (identifier "iVar4") (= "=") (binary_expression "(uint)(extraout_EDX != 1) + extraout_ECX" (call_expression "(uint)(extraout_EDX != 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(extraout_EDX != 1)" (( "(") (binary_expression "extraout_EDX != 1" (identifier "extraout_EDX") (!= "!=") (number_literal "1")) () ")"))) (+ "+") (identifier "extraout_ECX"))) (; ";")) (expression_statement "iVar8 = iVar4;" (assignment_expression "iVar8 = iVar4" (identifier "iVar8") (= "=") (identifier "iVar4")) (; ";")) (if_statement "if (iVar4 < *(int *)(param_1 + 0x60)) {\n    do {\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    } while (iVar8 < *(int *)(param_1 + 0x60));\n  }" (if "if") (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x60))" (( "(") (binary_expression "iVar4 < *(int *)(param_1 + 0x60)" (identifier "iVar4") (< "<") (pointer_expression "*(int *)(param_1 + 0x60)" (* "*") (cast_expression "(int *)(param_1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")"))))) () ")")) (compound_statement "{\n    do {\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    } while (iVar8 < *(int *)(param_1 + 0x60));\n  }" ({ "{") (do_statement "do {\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    } while (iVar8 < *(int *)(param_1 + 0x60));" (do "do") (compound_statement "{\n      iVar8 = iVar8 + 1;\n      FUN_00027250();\n    }" ({ "{") (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00027250();" (call_expression "FUN_00027250()" (identifier "FUN_00027250") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar8 < *(int *)(param_1 + 0x60))" (( "(") (binary_expression "iVar8 < *(int *)(param_1 + 0x60)" (identifier "iVar8") (< "<") (pointer_expression "*(int *)(param_1 + 0x60)" (* "*") (cast_expression "(int *)(param_1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")"))))) () ")")) (; ";")) (} "}"))) (expression_statement "*(int *)(param_1 + 0x60) = iVar4;" (assignment_expression "*(int *)(param_1 + 0x60) = iVar4" (pointer_expression "*(int *)(param_1 + 0x60)" (* "*") (cast_expression "(int *)(param_1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (= "=") (identifier "iVar4")) (; ";")) (if_statement "if (extraout_EDX == 1) {\n    if (iVar4 == 0) {\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }\n  }\n  else {\n    iVar8 = *(int *)(param_1 + 0xd4);\n    if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }\n    if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }\n  }" (if "if") (parenthesized_expression "(extraout_EDX == 1)" (( "(") (binary_expression "extraout_EDX == 1" (identifier "extraout_EDX") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    if (iVar4 == 0) {\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }\n  }" ({ "{") (if_statement "if (iVar4 == 0) {\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar8 = **(int **)(param_1 + 0x44);\n      local_58 = 0;\n      if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }\n      goto LAB_0007c632;\n    }" ({ "{") (expression_statement "iVar8 = **(int **)(param_1 + 0x44);" (assignment_expression "iVar8 = **(int **)(param_1 + 0x44)" (identifier "iVar8") (= "=") (pointer_expression "**(int **)(param_1 + 0x44)" (* "*") (pointer_expression "*(int **)(param_1 + 0x44)" (* "*") (cast_expression "(int **)(param_1 + 0x44)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))))) (; ";")) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" (identifier "local_58") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar8 != 0) {\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }\n        *(undefined4 *)(param_1 + 0x34) = 0;\n      }" ({ "{") (if_statement "if (iVar8 == unaff_EDI + 0xce457) {\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }" (if "if") (parenthesized_expression "(iVar8 == unaff_EDI + 0xce457)" (( "(") (binary_expression "iVar8 == unaff_EDI + 0xce457" (identifier "iVar8") (== "==") (binary_expression "unaff_EDI + 0xce457" (identifier "unaff_EDI") (+ "+") (number_literal "0xce457"))) () ")")) (compound_statement "{\n          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);\n        }" ({ "{") (expression_statement "local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);" (assignment_expression "local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0)" (identifier "local_58") (= "=") (call_expression "FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0)" (identifier "FUN_0002e3a0") (argument_list "(*(int **)(param_1 + 0x44),0,0)" (( "(") (pointer_expression "*(int **)(param_1 + 0x44)" (* "*") (cast_expression "(int **)(param_1 + 0x44)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(param_1 + 0x34) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x34) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x34)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (goto_statement "goto LAB_0007c632;" (goto "goto") (statement_identifier "LAB_0007c632") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar8 = *(int *)(param_1 + 0xd4);\n    if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }\n    if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }\n  }" (else "else") (compound_statement "{\n    iVar8 = *(int *)(param_1 + 0xd4);\n    if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }\n    if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }\n  }" ({ "{") (expression_statement "iVar8 = *(int *)(param_1 + 0xd4);" (assignment_expression "iVar8 = *(int *)(param_1 + 0xd4)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0xd4)" (* "*") (cast_expression "(int *)(param_1 + 0xd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd4)" (( "(") (binary_expression "param_1 + 0xd4" (identifier "param_1") (+ "+") (number_literal "0xd4")) () ")"))))) (; ";")) (if_statement "if (iVar8 != 0) {\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }\nLAB_0007c3bd:\n      uVar7 = local_44[5];\n      puVar5 = (uint *)FUN_000261b0();\n      local_58 = 7;\n      if (puVar5 == (uint *)0x0) goto LAB_0007c632;\n      *puVar5 = uVar7;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(uint *)(param_1 + 0x18) = local_44[5];\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      local_64 = *(uint *)(param_1 + 0x48);\n      if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }\n      if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }\n      goto LAB_0007c6c0;\n    }" ({ "{") (if_statement "if ((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)) {\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }" (if "if") (parenthesized_expression "((iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0))" (( "(") (binary_expression "(iVar4 == 0) ||\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)" (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0)" (( "(") (comma_expression "local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 == (uint *)0x0" (assignment_expression "local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c)" (identifier "local_44") (= "=") (cast_expression "(uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c)" (( "(") (binary_expression "*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c" (binary_expression "*(int *)(param_1 + 0x5c) + -0x2c" (pointer_expression "*(int *)(param_1 + 0x5c)" (* "*") (cast_expression "(int *)(param_1 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5c)" (( "(") (binary_expression "param_1 + 0x5c" (identifier "param_1") (+ "+") (number_literal "0x5c")) () ")")))) (+ "+") (number_literal "-0x2c")) (+ "+") (binary_expression "iVar4 * 0x2c" (identifier "iVar4") (* "*") (number_literal "0x2c"))) () ")")))) (, ",") (binary_expression "local_44 == (uint *)0x0" (identifier "local_44") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n        bVar10 = true;\n        local_58 = 0;\n        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n        if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }\n        iVar8 = **(int **)(param_1 + 0xd0);\n        while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }\n        iVar8 = FUN_00025c80();\n        if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }\n        goto LAB_0007c632;\n      }" ({ "{") (expression_statement "bVar10 = true;" (assignment_expression "bVar10 = true" (identifier "bVar10") (= "=") (true "true")) (; ";")) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" (identifier "local_58") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);" (assignment_expression "*(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c)" (pointer_expression "*(undefined4 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);" (assignment_expression "*(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc)" (pointer_expression "*(undefined1 *)(param_1 + 0x12)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x12)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x12)" (( "(") (binary_expression "param_1 + 0x12" (identifier "param_1") (+ "+") (number_literal "0x12")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (*(char *)(iVar8 + 0x2c) != '\0') {\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }" (if "if") (parenthesized_expression "(*(char *)(iVar8 + 0x2c) != '\0')" (( "(") (binary_expression "*(char *)(iVar8 + 0x2c) != '\0'" (pointer_expression "*(char *)(iVar8 + 0x2c)" (* "*") (cast_expression "(char *)(iVar8 + 0x2c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x2c)" (( "(") (binary_expression "iVar8 + 0x2c" (identifier "iVar8") (+ "+") (number_literal "0x2c")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          uVar7 = *(uint *)(iVar8 + 0x44);\n          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);\n          *(undefined4 *)(iVar8 + 0x34) = *puVar1;\n          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];\n          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];\n          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];\n          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];\n          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];\n          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];\n          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];\n          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];\n          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];\n          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];\n          uVar6 = *(uint *)(iVar8 + 0x44);\n          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];\n          if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }\n          if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }\n        }" ({ "{") (expression_statement "uVar7 = *(uint *)(iVar8 + 0x44);" (assignment_expression "uVar7 = *(uint *)(iVar8 + 0x44)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(iVar8 + 0x44)" (* "*") (cast_expression "(uint *)(iVar8 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x44)" (( "(") (binary_expression "iVar8 + 0x44" (identifier "iVar8") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);" (assignment_expression "puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20)" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)**(int **)(iVar8 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(int **)(iVar8 + 0x20)" (* "*") (pointer_expression "*(int **)(iVar8 + 0x20)" (* "*") (cast_expression "(int **)(iVar8 + 0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + 0x20)" (( "(") (binary_expression "iVar8 + 0x20" (identifier "iVar8") (+ "+") (number_literal "0x20")) () ")"))))))) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x34) = *puVar1;" (assignment_expression "*(undefined4 *)(iVar8 + 0x34) = *puVar1" (pointer_expression "*(undefined4 *)(iVar8 + 0x34)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x34)" (( "(") (binary_expression "iVar8 + 0x34" (identifier "iVar8") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x38) = puVar1[1];" (assignment_expression "*(undefined4 *)(iVar8 + 0x38) = puVar1[1]" (pointer_expression "*(undefined4 *)(iVar8 + 0x38)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x38)" (( "(") (binary_expression "iVar8 + 0x38" (identifier "iVar8") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x3c) = puVar1[2];" (assignment_expression "*(undefined4 *)(iVar8 + 0x3c) = puVar1[2]" (pointer_expression "*(undefined4 *)(iVar8 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x3c)" (( "(") (binary_expression "iVar8 + 0x3c" (identifier "iVar8") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x40) = puVar1[3];" (assignment_expression "*(undefined4 *)(iVar8 + 0x40) = puVar1[3]" (pointer_expression "*(undefined4 *)(iVar8 + 0x40)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x40)" (( "(") (binary_expression "iVar8 + 0x40" (identifier "iVar8") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x44) = puVar1[4];" (assignment_expression "*(undefined4 *)(iVar8 + 0x44) = puVar1[4]" (pointer_expression "*(undefined4 *)(iVar8 + 0x44)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x44)" (( "(") (binary_expression "iVar8 + 0x44" (identifier "iVar8") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (subscript_expression "puVar1[4]" (identifier "puVar1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x48) = puVar1[5];" (assignment_expression "*(undefined4 *)(iVar8 + 0x48) = puVar1[5]" (pointer_expression "*(undefined4 *)(iVar8 + 0x48)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x48)" (( "(") (binary_expression "iVar8 + 0x48" (identifier "iVar8") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (subscript_expression "puVar1[5]" (identifier "puVar1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x4c) = puVar1[6];" (assignment_expression "*(undefined4 *)(iVar8 + 0x4c) = puVar1[6]" (pointer_expression "*(undefined4 *)(iVar8 + 0x4c)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x4c)" (( "(") (binary_expression "iVar8 + 0x4c" (identifier "iVar8") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (subscript_expression "puVar1[6]" (identifier "puVar1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x50) = puVar1[7];" (assignment_expression "*(undefined4 *)(iVar8 + 0x50) = puVar1[7]" (pointer_expression "*(undefined4 *)(iVar8 + 0x50)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x50)" (( "(") (binary_expression "iVar8 + 0x50" (identifier "iVar8") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (subscript_expression "puVar1[7]" (identifier "puVar1") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x54) = puVar1[8];" (assignment_expression "*(undefined4 *)(iVar8 + 0x54) = puVar1[8]" (pointer_expression "*(undefined4 *)(iVar8 + 0x54)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x54)" (( "(") (binary_expression "iVar8 + 0x54" (identifier "iVar8") (+ "+") (number_literal "0x54")) () ")")))) (= "=") (subscript_expression "puVar1[8]" (identifier "puVar1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x58) = puVar1[9];" (assignment_expression "*(undefined4 *)(iVar8 + 0x58) = puVar1[9]" (pointer_expression "*(undefined4 *)(iVar8 + 0x58)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x58)" (( "(") (binary_expression "iVar8 + 0x58" (identifier "iVar8") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (subscript_expression "puVar1[9]" (identifier "puVar1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x5c) = puVar1[10];" (assignment_expression "*(undefined4 *)(iVar8 + 0x5c) = puVar1[10]" (pointer_expression "*(undefined4 *)(iVar8 + 0x5c)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x5c)" (( "(") (binary_expression "iVar8 + 0x5c" (identifier "iVar8") (+ "+") (number_literal "0x5c")) () ")")))) (= "=") (subscript_expression "puVar1[10]" (identifier "puVar1") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "uVar6 = *(uint *)(iVar8 + 0x44);" (assignment_expression "uVar6 = *(uint *)(iVar8 + 0x44)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(iVar8 + 0x44)" (* "*") (cast_expression "(uint *)(iVar8 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x44)" (( "(") (binary_expression "iVar8 + 0x44" (identifier "iVar8") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];" (assignment_expression "*(undefined4 *)(iVar8 + 0x60) = puVar1[0xb]" (pointer_expression "*(undefined4 *)(iVar8 + 0x60)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x60)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x60)" (( "(") (binary_expression "iVar8 + 0x60" (identifier "iVar8") (+ "+") (number_literal "0x60")) () ")")))) (= "=") (subscript_expression "puVar1[0xb]" (identifier "puVar1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (if_statement "if (uVar6 + 1 <= uVar7) {\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }" (if "if") (parenthesized_expression "(uVar6 + 1 <= uVar7)" (( "(") (binary_expression "uVar6 + 1 <= uVar7" (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1")) (<= "<=") (identifier "uVar7")) () ")")) (compound_statement "{\n            iVar4 = uVar6 + 0x22;\n            do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);\n            uVar6 = *(uint *)(iVar8 + 0x44);\n          }" ({ "{") (expression_statement "iVar4 = uVar6 + 0x22;" (assignment_expression "iVar4 = uVar6 + 0x22" (identifier "iVar4") (= "=") (binary_expression "uVar6 + 0x22" (identifier "uVar6") (+ "+") (number_literal "0x22"))) (; ";")) (do_statement "do {\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            } while (uVar6 <= uVar7 && bVar10);" (do "do") (compound_statement "{\n              local_58 = FUN_00067ce0();\n              uVar6 = iVar4 - 0x20;\n              bVar10 = local_58 == 0;\n              iVar4 = iVar4 + 1;\n            }" ({ "{") (expression_statement "local_58 = FUN_00067ce0();" (assignment_expression "local_58 = FUN_00067ce0()" (identifier "local_58") (= "=") (call_expression "FUN_00067ce0()" (identifier "FUN_00067ce0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar6 = iVar4 - 0x20;" (assignment_expression "uVar6 = iVar4 - 0x20" (identifier "uVar6") (= "=") (binary_expression "iVar4 - 0x20" (identifier "iVar4") (- "-") (number_literal "0x20"))) (; ";")) (expression_statement "bVar10 = local_58 == 0;" (assignment_expression "bVar10 = local_58 == 0" (identifier "bVar10") (= "=") (binary_expression "local_58 == 0" (identifier "local_58") (== "==") (number_literal "0"))) (; ";")) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar6 <= uVar7 && bVar10)" (( "(") (binary_expression "uVar6 <= uVar7 && bVar10" (binary_expression "uVar6 <= uVar7" (identifier "uVar6") (<= "<=") (identifier "uVar7")) (&& "&&") (identifier "bVar10")) () ")")) (; ";")) (expression_statement "uVar6 = *(uint *)(iVar8 + 0x44);" (assignment_expression "uVar6 = *(uint *)(iVar8 + 0x44)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(iVar8 + 0x44)" (* "*") (cast_expression "(uint *)(iVar8 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x44)" (( "(") (binary_expression "iVar8 + 0x44" (identifier "iVar8") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (uVar7 != uVar6) {\n            FUN_00067d50();\n          }" (if "if") (parenthesized_expression "(uVar7 != uVar6)" (( "(") (binary_expression "uVar7 != uVar6" (identifier "uVar7") (!= "!=") (identifier "uVar6")) () ")")) (compound_statement "{\n            FUN_00067d50();\n          }" ({ "{") (expression_statement "FUN_00067d50();" (call_expression "FUN_00067d50()" (identifier "FUN_00067d50") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar8 = **(int **)(param_1 + 0xd0);" (assignment_expression "iVar8 = **(int **)(param_1 + 0xd0)" (identifier "iVar8") (= "=") (pointer_expression "**(int **)(param_1 + 0xd0)" (* "*") (pointer_expression "*(int **)(param_1 + 0xd0)" (* "*") (cast_expression "(int **)(param_1 + 0xd0)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xd0)" (( "(") (binary_expression "param_1 + 0xd0" (identifier "param_1") (+ "+") (number_literal "0xd0")) () ")")))))) (; ";")) (while_statement "while (iVar8 != 0) {\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }" (while "while") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);\n          iVar8 = *(int *)(iVar8 + 0x20);\n        }" ({ "{") (expression_statement "*(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);" (assignment_expression "*(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20)" (pointer_expression "*(int *)(iVar8 + 0x10)" (* "*") (cast_expression "(int *)(iVar8 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (pointer_expression "*(int *)(iVar8 + 0x20)" (* "*") (cast_expression "(int *)(iVar8 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x20)" (( "(") (binary_expression "iVar8 + 0x20" (identifier "iVar8") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "iVar8 = *(int *)(iVar8 + 0x20);" (assignment_expression "iVar8 = *(int *)(iVar8 + 0x20)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(iVar8 + 0x20)" (* "*") (cast_expression "(int *)(iVar8 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x20)" (( "(") (binary_expression "iVar8 + 0x20" (identifier "iVar8") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (} "}"))) (expression_statement "iVar8 = FUN_00025c80();" (assignment_expression "iVar8 = FUN_00025c80()" (identifier "iVar8") (= "=") (call_expression "FUN_00025c80()" (identifier "FUN_00025c80") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((iVar8 != 0) && (bVar10)) {\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }" (if "if") (parenthesized_expression "((iVar8 != 0) && (bVar10))" (( "(") (binary_expression "(iVar8 != 0) && (bVar10)" (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(bVar10)" (( "(") (identifier "bVar10") () ")"))) () ")")) (compound_statement "{\n          do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);\n        }" ({ "{") (do_statement "do {\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          } while (local_58 == 0);" (do "do") (compound_statement "{\n            iVar8 = *(int *)(iVar8 + 0x10);\n            local_58 = FUN_00067ce0();\n            if (iVar8 == 0) break;\n          }" ({ "{") (expression_statement "iVar8 = *(int *)(iVar8 + 0x10);" (assignment_expression "iVar8 = *(int *)(iVar8 + 0x10)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(iVar8 + 0x10)" (* "*") (cast_expression "(int *)(iVar8 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "local_58 = FUN_00067ce0();" (assignment_expression "local_58 = FUN_00067ce0()" (identifier "local_58") (= "=") (call_expression "FUN_00067ce0()" (identifier "FUN_00067ce0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(local_58 == 0)" (( "(") (binary_expression "local_58 == 0" (identifier "local_58") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_0007c632;" (goto "goto") (statement_identifier "LAB_0007c632") (; ";")) (} "}"))) (labeled_statement "LAB_0007c3bd:\n      uVar7 = local_44[5];" (statement_identifier "LAB_0007c3bd") (: ":") (expression_statement "uVar7 = local_44[5];" (assignment_expression "uVar7 = local_44[5]" (identifier "uVar7") (= "=") (subscript_expression "local_44[5]" (identifier "local_44") ([ "[") (number_literal "5") (] "]"))) (; ";"))) (expression_statement "puVar5 = (uint *)FUN_000261b0();" (assignment_expression "puVar5 = (uint *)FUN_000261b0()" (identifier "puVar5") (= "=") (cast_expression "(uint *)FUN_000261b0()" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000261b0()" (identifier "FUN_000261b0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "local_58 = 7;" (assignment_expression "local_58 = 7" (identifier "local_58") (= "=") (number_literal "7")) (; ";")) (if_statement "if (puVar5 == (uint *)0x0) goto LAB_0007c632;" (if "if") (parenthesized_expression "(puVar5 == (uint *)0x0)" (( "(") (binary_expression "puVar5 == (uint *)0x0" (identifier "puVar5") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0007c632;" (goto "goto") (statement_identifier "LAB_0007c632") (; ";"))) (expression_statement "*puVar5 = uVar7;" (assignment_expression "*puVar5 = uVar7" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "local_60 = *(uint *)(param_1 + 0x4c);" (assignment_expression "local_60 = *(uint *)(param_1 + 0x4c)" (identifier "local_60") (= "=") (pointer_expression "*(uint *)(param_1 + 0x4c)" (* "*") (cast_expression "(uint *)(param_1 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x18) = local_44[5];" (assignment_expression "*(uint *)(param_1 + 0x18) = local_44[5]" (pointer_expression "*(uint *)(param_1 + 0x18)" (* "*") (cast_expression "(uint *)(param_1 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (subscript_expression "local_44[5]" (identifier "local_44") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);" (assignment_expression "*(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc)" (pointer_expression "*(undefined1 *)(param_1 + 0x12)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x12)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x12)" (( "(") (binary_expression "param_1 + 0x12" (identifier "param_1") (+ "+") (number_literal "0x12")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "local_64 = *(uint *)(param_1 + 0x48);" (assignment_expression "local_64 = *(uint *)(param_1 + 0x48)" (identifier "local_64") (= "=") (pointer_expression "*(uint *)(param_1 + 0x48)" (* "*") (cast_expression "(uint *)(param_1 + 0x48)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (if_statement "if (*(int *)(param_1 + 0xd4) == 0) {\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }\n      else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0xd4) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xd4) == 0" (pointer_expression "*(int *)(param_1 + 0xd4)" (* "*") (cast_expression "(int *)(param_1 + 0xd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd4)" (( "(") (binary_expression "param_1 + 0xd4" (identifier "param_1") (+ "+") (number_literal "0xd4")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar7 = *local_44;\n        uVar6 = local_44[1];\n        uVar9 = local_44[2];\n        uVar3 = local_44[3];\n        if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }\n        *(uint *)(param_1 + 0x48) = uVar7;\n        *(uint *)(param_1 + 0x4c) = uVar6;\n        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }\n        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;\nLAB_0007c5b6:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 != 0) goto LAB_0007c4fc;\n      }" ({ "{") (expression_statement "uVar7 = *local_44;" (assignment_expression "uVar7 = *local_44" (identifier "uVar7") (= "=") (pointer_expression "*local_44" (* "*") (identifier "local_44"))) (; ";")) (expression_statement "uVar6 = local_44[1];" (assignment_expression "uVar6 = local_44[1]" (identifier "uVar6") (= "=") (subscript_expression "local_44[1]" (identifier "local_44") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar9 = local_44[2];" (assignment_expression "uVar9 = local_44[2]" (identifier "uVar9") (= "=") (subscript_expression "local_44[2]" (identifier "local_44") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar3 = local_44[3];" (assignment_expression "uVar3 = local_44[3]" (identifier "uVar3") (= "=") (subscript_expression "local_44[3]" (identifier "local_44") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if (local_44[3] == 0 && local_44[2] == 0) {\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }" (if "if") (parenthesized_expression "(local_44[3] == 0 && local_44[2] == 0)" (( "(") (binary_expression "local_44[3] == 0 && local_44[2] == 0" (binary_expression "local_44[3] == 0" (subscript_expression "local_44[3]" (identifier "local_44") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "local_44[2] == 0" (subscript_expression "local_44[2]" (identifier "local_44") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n          uVar9 = local_64;\n          uVar3 = local_60;\n        }" ({ "{") (expression_statement "uVar9 = local_64;" (assignment_expression "uVar9 = local_64" (identifier "uVar9") (= "=") (identifier "local_64")) (; ";")) (expression_statement "uVar3 = local_60;" (assignment_expression "uVar3 = local_60" (identifier "uVar3") (= "=") (identifier "local_60")) (; ";")) (} "}"))) (expression_statement "*(uint *)(param_1 + 0x48) = uVar7;" (assignment_expression "*(uint *)(param_1 + 0x48) = uVar7" (pointer_expression "*(uint *)(param_1 + 0x48)" (* "*") (cast_expression "(uint *)(param_1 + 0x48)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "*(uint *)(param_1 + 0x4c) = uVar6;" (assignment_expression "*(uint *)(param_1 + 0x4c) = uVar6" (pointer_expression "*(uint *)(param_1 + 0x4c)" (* "*") (cast_expression "(uint *)(param_1 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (while_statement "while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }" (while "while") (parenthesized_expression "((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0)" (( "(") (binary_expression "(SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=\n               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0" (parenthesized_expression "(SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9)))" (( "(") (binary_expression "SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))" (call_expression "SBORROW4(uVar6,uVar3)" (identifier "SBORROW4") (argument_list "(uVar6,uVar3)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar3") () ")"))) (!= "!=") (call_expression "SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))" (identifier "SBORROW4") (argument_list "(uVar6 - uVar3,(uint)(uVar7 < uVar9))" (( "(") (binary_expression "uVar6 - uVar3" (identifier "uVar6") (- "-") (identifier "uVar3")) (, ",") (call_expression "(uint)(uVar7 < uVar9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < uVar9)" (( "(") (binary_expression "uVar7 < uVar9" (identifier "uVar7") (< "<") (identifier "uVar9")) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0" (cast_expression "(int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uVar6 - uVar3) - (uint)(uVar7 < uVar9))" (( "(") (binary_expression "(uVar6 - uVar3) - (uint)(uVar7 < uVar9)" (parenthesized_expression "(uVar6 - uVar3)" (( "(") (binary_expression "uVar6 - uVar3" (identifier "uVar6") (- "-") (identifier "uVar3")) () ")")) (- "-") (call_expression "(uint)(uVar7 < uVar9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < uVar9)" (( "(") (binary_expression "uVar7 < uVar9" (identifier "uVar7") (< "<") (identifier "uVar9")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n          local_58 = FUN_0007bf20(1,1);\n          if (local_58 != 0) goto LAB_0007c4c8;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          uVar6 = *(uint *)(param_1 + 0x4c);\n        }" ({ "{") (expression_statement "local_58 = FUN_0007bf20(1,1);" (assignment_expression "local_58 = FUN_0007bf20(1,1)" (identifier "local_58") (= "=") (call_expression "FUN_0007bf20(1,1)" (identifier "FUN_0007bf20") (argument_list "(1,1)" (( "(") (number_literal "1") (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if (local_58 != 0) goto LAB_0007c4c8;" (if "if") (parenthesized_expression "(local_58 != 0)" (( "(") (binary_expression "local_58 != 0" (identifier "local_58") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0007c4c8;" (goto "goto") (statement_identifier "LAB_0007c4c8") (; ";"))) (expression_statement "uVar7 = *(uint *)(param_1 + 0x48);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x48)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(param_1 + 0x48)" (* "*") (cast_expression "(uint *)(param_1 + 0x48)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "uVar6 = *(uint *)(param_1 + 0x4c);" (assignment_expression "uVar6 = *(uint *)(param_1 + 0x4c)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(param_1 + 0x4c)" (* "*") (cast_expression "(uint *)(param_1 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (} "}"))) (if_statement "if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;" (if "if") (parenthesized_expression "((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0)" (( "(") (binary_expression "(SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=\n            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0" (parenthesized_expression "(SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64)))" (( "(") (binary_expression "SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))" (call_expression "SBORROW4(uVar6,local_60)" (identifier "SBORROW4") (argument_list "(uVar6,local_60)" (( "(") (identifier "uVar6") (, ",") (identifier "local_60") () ")"))) (!= "!=") (call_expression "SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))" (identifier "SBORROW4") (argument_list "(uVar6 - local_60,(uint)(uVar7 < local_64))" (( "(") (binary_expression "uVar6 - local_60" (identifier "uVar6") (- "-") (identifier "local_60")) (, ",") (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < local_64)" (( "(") (binary_expression "uVar7 < local_64" (identifier "uVar7") (< "<") (identifier "local_64")) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0" (cast_expression "(int)((uVar6 - local_60) - (uint)(uVar7 < local_64))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uVar6 - local_60) - (uint)(uVar7 < local_64))" (( "(") (binary_expression "(uVar6 - local_60) - (uint)(uVar7 < local_64)" (parenthesized_expression "(uVar6 - local_60)" (( "(") (binary_expression "uVar6 - local_60" (identifier "uVar6") (- "-") (identifier "local_60")) () ")")) (- "-") (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < local_64)" (( "(") (binary_expression "uVar7 < local_64" (identifier "uVar7") (< "<") (identifier "local_64")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (goto_statement "goto LAB_0007c431;" (goto "goto") (statement_identifier "LAB_0007c431") (; ";"))) (labeled_statement "LAB_0007c5b6:\n        uVar7 = local_44[6];" (statement_identifier "LAB_0007c5b6") (: ":") (expression_statement "uVar7 = local_44[6];" (assignment_expression "uVar7 = local_44[6]" (identifier "uVar7") (= "=") (subscript_expression "local_44[6]" (identifier "local_44") ([ "[") (number_literal "6") (] "]"))) (; ";"))) (expression_statement "uVar6 = *(int *)(param_1 + 0x94) + 4;" (assignment_expression "uVar6 = *(int *)(param_1 + 0x94) + 4" (identifier "uVar6") (= "=") (binary_expression "*(int *)(param_1 + 0x94) + 4" (pointer_expression "*(int *)(param_1 + 0x94)" (* "*") (cast_expression "(int *)(param_1 + 0x94)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x94)" (( "(") (binary_expression "param_1 + 0x94" (identifier "param_1") (+ "+") (number_literal "0x94")) () ")")))) (+ "+") (number_literal "4"))) (; ";")) (expression_statement "lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;" (assignment_expression "lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7" (identifier "lVar2") (= "=") (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar7" (cast_expression "(ulonglong)uVar6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar6")) (* "*") (cast_expression "(ulonglong)uVar7" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar7")))) (; ";")) (expression_statement "local_2c = (undefined4)lVar2;" (assignment_expression "local_2c = (undefined4)lVar2" (identifier "local_2c") (= "=") (cast_expression "(undefined4)lVar2" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "lVar2"))) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0xd4);" (assignment_expression "iVar8 = *(int *)(param_1 + 0xd4)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0xd4)" (* "*") (cast_expression "(int *)(param_1 + 0xd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd4)" (( "(") (binary_expression "param_1 + 0xd4" (identifier "param_1") (+ "+") (number_literal "0xd4")) () ")"))))) (; ";")) (expression_statement "local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;" (assignment_expression "local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7" (identifier "local_28") (= "=") (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x20")) () ")"))) (+ "+") (binary_expression "((int)uVar6 >> 0x1f) * uVar7" (parenthesized_expression "((int)uVar6 >> 0x1f)" (( "(") (binary_expression "(int)uVar6 >> 0x1f" (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "0x1f")) () ")")) (* "*") (identifier "uVar7")))) (; ";")) (if_statement "if (iVar8 != 0) goto LAB_0007c4fc;" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0007c4fc;" (goto "goto") (statement_identifier "LAB_0007c4fc") (; ";"))) (} "}")) (else_clause "else {\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }" (else "else") (compound_statement "{\n        *(undefined4 *)(param_1 + 0x48) = 0;\n        *(undefined4 *)(param_1 + 0x4c) = 0;\n        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;\nLAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;\n        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);\n        if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }\n        uVar7 = *(uint *)(param_1 + 0x48);\n        iVar8 = *(int *)(param_1 + 0x4c);\n        if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }\n        if (local_58 == 0) goto LAB_0007c598;\nLAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;\nLAB_0007c4c8:\n        uVar7 = local_44[6];\n        uVar6 = *(int *)(param_1 + 0x94) + 4;\n        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;\n        local_2c = (undefined4)lVar2;\n        iVar8 = *(int *)(param_1 + 0xd4);\n        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;\n        if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }\nLAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }\n        if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }\n      }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x48) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x48) = 0" (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" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;" (if "if") (parenthesized_expression "((int)(uint)(local_64 != 0) <= (int)-local_60)" (( "(") (binary_expression "(int)(uint)(local_64 != 0) <= (int)-local_60" (cast_expression "(int)(uint)(local_64 != 0)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(local_64 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_64 != 0)" (( "(") (binary_expression "local_64 != 0" (identifier "local_64") (!= "!=") (number_literal "0")) () ")")))) (<= "<=") (cast_expression "(int)-local_60" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (unary_expression "-local_60" (- "-") (identifier "local_60")))) () ")")) (goto_statement "goto LAB_0007c5b6;" (goto "goto") (statement_identifier "LAB_0007c5b6") (; ";"))) (labeled_statement "LAB_0007c431:\nLAB_0007c450:\n        local_30 = 0;" (statement_identifier "LAB_0007c431") (: ":") (labeled_statement "LAB_0007c450:\n        local_30 = 0;" (statement_identifier "LAB_0007c450") (: ":") (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")))) (expression_statement "local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);" (assignment_expression "local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c)" (identifier "local_58") (= "=") (call_expression "FUN_0003bf80(local_64,local_60,&local_30,&local_2c)" (identifier "FUN_0003bf80") (argument_list "(local_64,local_60,&local_30,&local_2c)" (( "(") (identifier "local_64") (, ",") (identifier "local_60") (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) () ")")))) (; ";")) (if_statement "if (local_30 != 0) {\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }" (if "if") (parenthesized_expression "(local_30 != 0)" (( "(") (binary_expression "local_30 != 0" (identifier "local_30") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          if (local_58 != 0) goto LAB_0007c4bc;\n          uVar7 = *(uint *)(param_1 + 0x48);\n          iVar8 = *(int *)(param_1 + 0x4c);\nLAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          uVar6 = 0;\n          do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));\nLAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;\n          goto LAB_0007c450;\n        }" ({ "{") (if_statement "if (local_58 != 0) goto LAB_0007c4bc;" (if "if") (parenthesized_expression "(local_58 != 0)" (( "(") (binary_expression "local_58 != 0" (identifier "local_58") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0007c4bc;" (goto "goto") (statement_identifier "LAB_0007c4bc") (; ";"))) (expression_statement "uVar7 = *(uint *)(param_1 + 0x48);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x48)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(param_1 + 0x48)" (* "*") (cast_expression "(uint *)(param_1 + 0x48)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x4c)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (labeled_statement "LAB_0007c6f6:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;" (statement_identifier "LAB_0007c6f6") (: ":") (if_statement "if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;" (if "if") (parenthesized_expression "((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0)" (( "(") (binary_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0" (parenthesized_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))" (( "(") (binary_expression "SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))" (call_expression "SBORROW4(iVar8,local_60)" (identifier "SBORROW4") (argument_list "(iVar8,local_60)" (( "(") (identifier "iVar8") (, ",") (identifier "local_60") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))" (identifier "SBORROW4") (argument_list "(iVar8 - local_60,(uint)(uVar7 < local_64))" (( "(") (binary_expression "iVar8 - local_60" (identifier "iVar8") (- "-") (identifier "local_60")) (, ",") (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < local_64)" (( "(") (binary_expression "uVar7 < local_64" (identifier "uVar7") (< "<") (identifier "local_64")) () ")"))) () ")")))) () ")")) (== "==") (binary_expression "(int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0" (cast_expression "(int)((iVar8 - local_60) - (uint)(uVar7 < local_64))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((iVar8 - local_60) - (uint)(uVar7 < local_64))" (( "(") (binary_expression "(iVar8 - local_60) - (uint)(uVar7 < local_64)" (parenthesized_expression "(iVar8 - local_60)" (( "(") (binary_expression "iVar8 - local_60" (identifier "iVar8") (- "-") (identifier "local_60")) () ")")) (- "-") (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < local_64)" (( "(") (binary_expression "uVar7 < local_64" (identifier "uVar7") (< "<") (identifier "local_64")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (goto_statement "goto LAB_0007c5aa;" (goto "goto") (statement_identifier "LAB_0007c5aa") (; ";")))) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          } while ((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));" (do "do") (compound_statement "{\n            uVar6 = uVar6 + 1;\n            local_58 = FUN_0007bf20(1,1);\n            if (local_58 != 0) goto LAB_0007c4bc;\n            uVar7 = *(uint *)(param_1 + 0x48);\n            iVar8 = *(int *)(param_1 + 0x4c);\n          }" ({ "{") (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_58 = FUN_0007bf20(1,1);" (assignment_expression "local_58 = FUN_0007bf20(1,1)" (identifier "local_58") (= "=") (call_expression "FUN_0007bf20(1,1)" (identifier "FUN_0007bf20") (argument_list "(1,1)" (( "(") (number_literal "1") (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if (local_58 != 0) goto LAB_0007c4bc;" (if "if") (parenthesized_expression "(local_58 != 0)" (( "(") (binary_expression "local_58 != 0" (identifier "local_58") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0007c4bc;" (goto "goto") (statement_identifier "LAB_0007c4bc") (; ";"))) (expression_statement "uVar7 = *(uint *)(param_1 + 0x48);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x48)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(param_1 + 0x48)" (* "*") (cast_expression "(uint *)(param_1 + 0x48)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x4c)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0))" (( "(") (binary_expression "(uVar6 < local_30) &&\n                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0)" (parenthesized_expression "(uVar6 < local_30)" (( "(") (binary_expression "uVar6 < local_30" (identifier "uVar6") (< "<") (identifier "local_30")) () ")")) (&& "&&") (parenthesized_expression "((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0)" (( "(") (binary_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))\n                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0" (parenthesized_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))" (( "(") (binary_expression "SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))" (call_expression "SBORROW4(iVar8,local_60)" (identifier "SBORROW4") (argument_list "(iVar8,local_60)" (( "(") (identifier "iVar8") (, ",") (identifier "local_60") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))" (identifier "SBORROW4") (argument_list "(iVar8 - local_60,(uint)(uVar7 < local_64))" (( "(") (binary_expression "iVar8 - local_60" (identifier "iVar8") (- "-") (identifier "local_60")) (, ",") (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < local_64)" (( "(") (binary_expression "uVar7 < local_64" (identifier "uVar7") (< "<") (identifier "local_64")) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0" (cast_expression "(int)((iVar8 - local_60) - (uint)(uVar7 < local_64))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((iVar8 - local_60) - (uint)(uVar7 < local_64))" (( "(") (binary_expression "(iVar8 - local_60) - (uint)(uVar7 < local_64)" (parenthesized_expression "(iVar8 - local_60)" (( "(") (binary_expression "iVar8 - local_60" (identifier "iVar8") (- "-") (identifier "local_60")) () ")")) (- "-") (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < local_64)" (( "(") (binary_expression "uVar7 < local_64" (identifier "uVar7") (< "<") (identifier "local_64")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")"))) () ")")) (; ";")) (labeled_statement "LAB_0007c598:\n          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;" (statement_identifier "LAB_0007c598") (: ":") (if_statement "if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;" (if "if") (parenthesized_expression "((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0)" (( "(") (binary_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==\n              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0" (parenthesized_expression "(SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))" (( "(") (binary_expression "SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))" (call_expression "SBORROW4(iVar8,local_60)" (identifier "SBORROW4") (argument_list "(iVar8,local_60)" (( "(") (identifier "iVar8") (, ",") (identifier "local_60") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))" (identifier "SBORROW4") (argument_list "(iVar8 - local_60,(uint)(uVar7 < local_64))" (( "(") (binary_expression "iVar8 - local_60" (identifier "iVar8") (- "-") (identifier "local_60")) (, ",") (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < local_64)" (( "(") (binary_expression "uVar7 < local_64" (identifier "uVar7") (< "<") (identifier "local_64")) () ")"))) () ")")))) () ")")) (== "==") (binary_expression "(int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0" (cast_expression "(int)((iVar8 - local_60) - (uint)(uVar7 < local_64))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((iVar8 - local_60) - (uint)(uVar7 < local_64))" (( "(") (binary_expression "(iVar8 - local_60) - (uint)(uVar7 < local_64)" (parenthesized_expression "(iVar8 - local_60)" (( "(") (binary_expression "iVar8 - local_60" (identifier "iVar8") (- "-") (identifier "local_60")) () ")")) (- "-") (call_expression "(uint)(uVar7 < local_64)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < local_64)" (( "(") (binary_expression "uVar7 < local_64" (identifier "uVar7") (< "<") (identifier "local_64")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (goto_statement "goto LAB_0007c5aa;" (goto "goto") (statement_identifier "LAB_0007c5aa") (; ";")))) (goto_statement "goto LAB_0007c450;" (goto "goto") (statement_identifier "LAB_0007c450") (; ";")) (} "}"))) (expression_statement "uVar7 = *(uint *)(param_1 + 0x48);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x48)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(param_1 + 0x48)" (* "*") (cast_expression "(uint *)(param_1 + 0x48)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x4c)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7)" (( "(") (binary_expression "*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&\n            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7" (binary_expression "*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8" (binary_expression "*(int *)(param_1 + 0x54) +\n            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50))" (pointer_expression "*(int *)(param_1 + 0x54)" (* "*") (cast_expression "(int *)(param_1 + 0x54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x54)" (( "(") (binary_expression "param_1 + 0x54" (identifier "param_1") (+ "+") (number_literal "0x54")) () ")")))) (+ "+") (cast_expression "(uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50))" (identifier "CARRY4") (argument_list "(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50))" (( "(") (pointer_expression "*(uint *)(param_1 + 0x90)" (* "*") (cast_expression "(uint *)(param_1 + 0x90)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x90)" (( "(") (binary_expression "param_1 + 0x90" (identifier "param_1") (+ "+") (number_literal "0x90")) () ")")))) (, ",") (pointer_expression "*(uint *)(param_1 + 0x50)" (* "*") (cast_expression "(uint *)(param_1 + 0x50)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) () ")"))))) (== "==") (identifier "iVar8")) (&& "&&") (binary_expression "*(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7" (binary_expression "*(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50)" (pointer_expression "*(uint *)(param_1 + 0x90)" (* "*") (cast_expression "(uint *)(param_1 + 0x90)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x90)" (( "(") (binary_expression "param_1 + 0x90" (identifier "param_1") (+ "+") (number_literal "0x90")) () ")")))) (+ "+") (pointer_expression "*(uint *)(param_1 + 0x50)" (* "*") (cast_expression "(uint *)(param_1 + 0x50)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")"))))) (== "==") (identifier "uVar7"))) () ")")) (compound_statement "{\n          iVar4 = *(int *)(param_1 + 0x94) + 8;\n          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);\n          if (local_58 != 0) goto LAB_0007c4bc;\n          if (local_30 != 0) goto LAB_0007c6f6;\n          goto LAB_0007c598;\n        }" ({ "{") (expression_statement "iVar4 = *(int *)(param_1 + 0x94) + 8;" (assignment_expression "iVar4 = *(int *)(param_1 + 0x94) + 8" (identifier "iVar4") (= "=") (binary_expression "*(int *)(param_1 + 0x94) + 8" (pointer_expression "*(int *)(param_1 + 0x94)" (* "*") (cast_expression "(int *)(param_1 + 0x94)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x94)" (( "(") (binary_expression "param_1 + 0x94" (identifier "param_1") (+ "+") (number_literal "0x94")) () ")")))) (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f);" (assignment_expression "local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f)" (identifier "local_30") (= "=") (call_expression "FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f)" (identifier "FUN_000f5a10") (argument_list "(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),\n                                  iVar4,iVar4 >> 0x1f)" (( "(") (binary_expression "local_64 - uVar7" (identifier "local_64") (- "-") (identifier "uVar7")) (, ",") (binary_expression "(local_60 - iVar8) - (uint)(local_64 < uVar7)" (parenthesized_expression "(local_60 - iVar8)" (( "(") (binary_expression "local_60 - iVar8" (identifier "local_60") (- "-") (identifier "iVar8")) () ")")) (- "-") (call_expression "(uint)(local_64 < uVar7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_64 < uVar7)" (( "(") (binary_expression "local_64 < uVar7" (identifier "local_64") (< "<") (identifier "uVar7")) () ")")))) (, ",") (identifier "iVar4") (, ",") (binary_expression "iVar4 >> 0x1f" (identifier "iVar4") (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if (local_58 != 0) goto LAB_0007c4bc;" (if "if") (parenthesized_expression "(local_58 != 0)" (( "(") (binary_expression "local_58 != 0" (identifier "local_58") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0007c4bc;" (goto "goto") (statement_identifier "LAB_0007c4bc") (; ";"))) (if_statement "if (local_30 != 0) goto LAB_0007c6f6;" (if "if") (parenthesized_expression "(local_30 != 0)" (( "(") (binary_expression "local_30 != 0" (identifier "local_30") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0007c6f6;" (goto "goto") (statement_identifier "LAB_0007c6f6") (; ";"))) (goto_statement "goto LAB_0007c598;" (goto "goto") (statement_identifier "LAB_0007c598") (; ";")) (} "}"))) (if_statement "if (local_58 == 0) goto LAB_0007c598;" (if "if") (parenthesized_expression "(local_58 == 0)" (( "(") (binary_expression "local_58 == 0" (identifier "local_58") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0007c598;" (goto "goto") (statement_identifier "LAB_0007c598") (; ";"))) (labeled_statement "LAB_0007c4bc:\n        if (local_44 == (uint *)0x0) goto LAB_0007c629;" (statement_identifier "LAB_0007c4bc") (: ":") (if_statement "if (local_44 == (uint *)0x0) goto LAB_0007c629;" (if "if") (parenthesized_expression "(local_44 == (uint *)0x0)" (( "(") (binary_expression "local_44 == (uint *)0x0" (identifier "local_44") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0007c629;" (goto "goto") (statement_identifier "LAB_0007c629") (; ";")))) (labeled_statement "LAB_0007c4c8:\n        uVar7 = local_44[6];" (statement_identifier "LAB_0007c4c8") (: ":") (expression_statement "uVar7 = local_44[6];" (assignment_expression "uVar7 = local_44[6]" (identifier "uVar7") (= "=") (subscript_expression "local_44[6]" (identifier "local_44") ([ "[") (number_literal "6") (] "]"))) (; ";"))) (expression_statement "uVar6 = *(int *)(param_1 + 0x94) + 4;" (assignment_expression "uVar6 = *(int *)(param_1 + 0x94) + 4" (identifier "uVar6") (= "=") (binary_expression "*(int *)(param_1 + 0x94) + 4" (pointer_expression "*(int *)(param_1 + 0x94)" (* "*") (cast_expression "(int *)(param_1 + 0x94)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x94)" (( "(") (binary_expression "param_1 + 0x94" (identifier "param_1") (+ "+") (number_literal "0x94")) () ")")))) (+ "+") (number_literal "4"))) (; ";")) (expression_statement "lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;" (assignment_expression "lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7" (identifier "lVar2") (= "=") (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar7" (cast_expression "(ulonglong)uVar6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar6")) (* "*") (cast_expression "(ulonglong)uVar7" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar7")))) (; ";")) (expression_statement "local_2c = (undefined4)lVar2;" (assignment_expression "local_2c = (undefined4)lVar2" (identifier "local_2c") (= "=") (cast_expression "(undefined4)lVar2" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "lVar2"))) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0xd4);" (assignment_expression "iVar8 = *(int *)(param_1 + 0xd4)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0xd4)" (* "*") (cast_expression "(int *)(param_1 + 0xd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd4)" (( "(") (binary_expression "param_1 + 0xd4" (identifier "param_1") (+ "+") (number_literal "0xd4")) () ")"))))) (; ";")) (expression_statement "local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;" (assignment_expression "local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7" (identifier "local_28") (= "=") (binary_expression "(int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x20")) () ")"))) (+ "+") (binary_expression "((int)uVar6 >> 0x1f) * uVar7" (parenthesized_expression "((int)uVar6 >> 0x1f)" (( "(") (binary_expression "(int)uVar6 >> 0x1f" (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "0x1f")) () ")")) (* "*") (identifier "uVar7")))) (; ";")) (if_statement "if (iVar8 == 0) {\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0007c629:\n          FUN_00027250();\n          goto LAB_0007c632;\n        }" ({ "{") (labeled_statement "LAB_0007c629:\n          FUN_00027250();" (statement_identifier "LAB_0007c629") (: ":") (expression_statement "FUN_00027250();" (call_expression "FUN_00027250()" (identifier "FUN_00027250") (argument_list "()" (( "(") () ")"))) (; ";"))) (goto_statement "goto LAB_0007c632;" (goto "goto") (statement_identifier "LAB_0007c632") (; ";")) (} "}"))) (labeled_statement "LAB_0007c4fc:\n        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }" (statement_identifier "LAB_0007c4fc") (: ":") (if_statement "if (local_44[10] == *(uint *)(iVar8 + 0x70)) {\n          uVar6 = local_44[7];\n        }\n        else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }" (if "if") (parenthesized_expression "(local_44[10] == *(uint *)(iVar8 + 0x70))" (( "(") (binary_expression "local_44[10] == *(uint *)(iVar8 + 0x70)" (subscript_expression "local_44[10]" (identifier "local_44") ([ "[") (number_literal "10") (] "]")) (== "==") (pointer_expression "*(uint *)(iVar8 + 0x70)" (* "*") (cast_expression "(uint *)(iVar8 + 0x70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x70)" (( "(") (binary_expression "iVar8 + 0x70" (identifier "iVar8") (+ "+") (number_literal "0x70")) () ")"))))) () ")")) (compound_statement "{\n          uVar6 = local_44[7];\n        }" ({ "{") (expression_statement "uVar6 = local_44[7];" (assignment_expression "uVar6 = local_44[7]" (identifier "uVar6") (= "=") (subscript_expression "local_44[7]" (identifier "local_44") ([ "[") (number_literal "7") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }" (else "else") (compound_statement "{\n          local_44[7] = 0;\n          local_44[10] = *(uint *)(iVar8 + 0x70);\n          uVar6 = 0;\n        }" ({ "{") (expression_statement "local_44[7] = 0;" (assignment_expression "local_44[7] = 0" (subscript_expression "local_44[7]" (identifier "local_44") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_44[10] = *(uint *)(iVar8 + 0x70);" (assignment_expression "local_44[10] = *(uint *)(iVar8 + 0x70)" (subscript_expression "local_44[10]" (identifier "local_44") ([ "[") (number_literal "10") (] "]")) (= "=") (pointer_expression "*(uint *)(iVar8 + 0x70)" (* "*") (cast_expression "(uint *)(iVar8 + 0x70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x70)" (( "(") (binary_expression "iVar8 + 0x70" (identifier "iVar8") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (} "}"))))) (if_statement "if (uVar6 < *(uint *)(iVar8 + 0x44)) {\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }" (if "if") (parenthesized_expression "(uVar6 < *(uint *)(iVar8 + 0x44))" (( "(") (binary_expression "uVar6 < *(uint *)(iVar8 + 0x44)" (identifier "uVar6") (< "<") (pointer_expression "*(uint *)(iVar8 + 0x44)" (* "*") (cast_expression "(uint *)(iVar8 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x44)" (( "(") (binary_expression "iVar8 + 0x44" (identifier "iVar8") (+ "+") (number_literal "0x44")) () ")"))))) () ")")) (compound_statement "{\n          *(uint *)(iVar8 + 0x44) = uVar6;\n          *(uint *)(iVar8 + 0x4c) = local_44[8];\n          *(uint *)(iVar8 + 0x50) = local_44[9];\n          FUN_00067d50();\n          uVar7 = local_44[6];\n        }" ({ "{") (expression_statement "*(uint *)(iVar8 + 0x44) = uVar6;" (assignment_expression "*(uint *)(iVar8 + 0x44) = uVar6" (pointer_expression "*(uint *)(iVar8 + 0x44)" (* "*") (cast_expression "(uint *)(iVar8 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x44)" (( "(") (binary_expression "iVar8 + 0x44" (identifier "iVar8") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "*(uint *)(iVar8 + 0x4c) = local_44[8];" (assignment_expression "*(uint *)(iVar8 + 0x4c) = local_44[8]" (pointer_expression "*(uint *)(iVar8 + 0x4c)" (* "*") (cast_expression "(uint *)(iVar8 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x4c)" (( "(") (binary_expression "iVar8 + 0x4c" (identifier "iVar8") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (subscript_expression "local_44[8]" (identifier "local_44") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "*(uint *)(iVar8 + 0x50) = local_44[9];" (assignment_expression "*(uint *)(iVar8 + 0x50) = local_44[9]" (pointer_expression "*(uint *)(iVar8 + 0x50)" (* "*") (cast_expression "(uint *)(iVar8 + 0x50)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x50)" (( "(") (binary_expression "iVar8 + 0x50" (identifier "iVar8") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (subscript_expression "local_44[9]" (identifier "local_44") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "FUN_00067d50();" (call_expression "FUN_00067d50()" (identifier "FUN_00067d50") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar7 = local_44[6];" (assignment_expression "uVar7 = local_44[6]" (identifier "uVar7") (= "=") (subscript_expression "local_44[6]" (identifier "local_44") ([ "[") (number_literal "6") (] "]"))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (uVar7 < *(uint *)(param_1 + 0x34)) {\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }" (if "if") (parenthesized_expression "(uVar7 < *(uint *)(param_1 + 0x34))" (( "(") (binary_expression "uVar7 < *(uint *)(param_1 + 0x34)" (identifier "uVar7") (< "<") (pointer_expression "*(uint *)(param_1 + 0x34)" (* "*") (cast_expression "(uint *)(param_1 + 0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")"))))) () ")")) (compound_statement "{\n        do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));\n      }" ({ "{") (do_statement "do {\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        } while (uVar7 < *(uint *)(param_1 + 0x34));" (do "do") (compound_statement "{\n          uVar7 = uVar7 + 1;\n          local_58 = FUN_0007bf20(0,1);\n          if (local_58 != 0) goto LAB_0007c629;\n        }" ({ "{") (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_58 = FUN_0007bf20(0,1);" (assignment_expression "local_58 = FUN_0007bf20(0,1)" (identifier "local_58") (= "=") (call_expression "FUN_0007bf20(0,1)" (identifier "FUN_0007bf20") (argument_list "(0,1)" (( "(") (number_literal "0") (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if (local_58 != 0) goto LAB_0007c629;" (if "if") (parenthesized_expression "(local_58 != 0)" (( "(") (binary_expression "local_58 != 0" (identifier "local_58") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0007c629;" (goto "goto") (statement_identifier "LAB_0007c629") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(uVar7 < *(uint *)(param_1 + 0x34))" (( "(") (binary_expression "uVar7 < *(uint *)(param_1 + 0x34)" (identifier "uVar7") (< "<") (pointer_expression "*(uint *)(param_1 + 0x34)" (* "*") (cast_expression "(uint *)(param_1 + 0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")"))))) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_0007c6c0;" (goto "goto") (statement_identifier "LAB_0007c6c0") (; ";")) (} "}"))) (if_statement "if (**(int **)(param_1 + 0x40) != 0) {\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }" (if "if") (parenthesized_expression "(**(int **)(param_1 + 0x40) != 0)" (( "(") (binary_expression "**(int **)(param_1 + 0x40) != 0" (pointer_expression "**(int **)(param_1 + 0x40)" (* "*") (pointer_expression "*(int **)(param_1 + 0x40)" (* "*") (cast_expression "(int **)(param_1 + 0x40)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")"))))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;\n      local_64 = *(uint *)(param_1 + 0x48);\n      local_44 = (uint *)0x0;\n      local_60 = *(uint *)(param_1 + 0x4c);\n      *(undefined4 *)(param_1 + 0x48) = 0;\n      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);\n      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);\n      *(undefined4 *)(param_1 + 0x4c) = 0;\n      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;\n      goto LAB_0007c431;\n    }" ({ "{") (if_statement "if ((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)) goto LAB_0007c3bd;" (if "if") (parenthesized_expression "((iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0))" (( "(") (binary_expression "(iVar4 != 0) &&\n         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)" (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0)" (( "(") (comma_expression "local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),\n         local_44 != (uint *)0x0" (assignment_expression "local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c)" (identifier "local_44") (= "=") (cast_expression "(uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c)" (( "(") (binary_expression "*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c" (binary_expression "*(int *)(param_1 + 0x5c) + -0x2c" (pointer_expression "*(int *)(param_1 + 0x5c)" (* "*") (cast_expression "(int *)(param_1 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5c)" (( "(") (binary_expression "param_1 + 0x5c" (identifier "param_1") (+ "+") (number_literal "0x5c")) () ")")))) (+ "+") (number_literal "-0x2c")) (+ "+") (binary_expression "iVar4 * 0x2c" (identifier "iVar4") (* "*") (number_literal "0x2c"))) () ")")))) (, ",") (binary_expression "local_44 != (uint *)0x0" (identifier "local_44") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (goto_statement "goto LAB_0007c3bd;" (goto "goto") (statement_identifier "LAB_0007c3bd") (; ";"))) (expression_statement "local_64 = *(uint *)(param_1 + 0x48);" (assignment_expression "local_64 = *(uint *)(param_1 + 0x48)" (identifier "local_64") (= "=") (pointer_expression "*(uint *)(param_1 + 0x48)" (* "*") (cast_expression "(uint *)(param_1 + 0x48)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "local_44 = (uint *)0x0;" (assignment_expression "local_44 = (uint *)0x0" (identifier "local_44") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_60 = *(uint *)(param_1 + 0x4c);" (assignment_expression "local_60 = *(uint *)(param_1 + 0x4c)" (identifier "local_60") (= "=") (pointer_expression "*(uint *)(param_1 + 0x4c)" (* "*") (cast_expression "(uint *)(param_1 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x48) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x48) = 0" (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" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);" (assignment_expression "*(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c)" (pointer_expression "*(undefined4 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);" (assignment_expression "*(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc)" (pointer_expression "*(undefined1 *)(param_1 + 0x12)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x12)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x12)" (( "(") (binary_expression "param_1 + 0x12" (identifier "param_1") (+ "+") (number_literal "0x12")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x4c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x4c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x4c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;" (if "if") (parenthesized_expression "((int)(uint)(local_64 != 0) <= (int)-local_60)" (( "(") (binary_expression "(int)(uint)(local_64 != 0) <= (int)-local_60" (cast_expression "(int)(uint)(local_64 != 0)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(local_64 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_64 != 0)" (( "(") (binary_expression "local_64 != 0" (identifier "local_64") (!= "!=") (number_literal "0")) () ")")))) (<= "<=") (cast_expression "(int)-local_60" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (unary_expression "-local_60" (- "-") (identifier "local_60")))) () ")")) (goto_statement "goto LAB_0007c6c0;" (goto "goto") (statement_identifier "LAB_0007c6c0") (; ";"))) (goto_statement "goto LAB_0007c431;" (goto "goto") (statement_identifier "LAB_0007c431") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_0007c6d7:\n  local_58 = 0;" (statement_identifier "LAB_0007c6d7") (: ":") (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" (identifier "local_58") (= "=") (number_literal "0")) (; ";"))) (labeled_statement "LAB_0007c632:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }" (statement_identifier "LAB_0007c632") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_000f6410();\n  }" ({ "{") (expression_statement "FUN_000f6410();" (call_expression "FUN_000f6410()" (identifier "FUN_000f6410") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return local_58;" (return "return") (identifier "local_58") (; ";")) (labeled_statement "LAB_0007c5aa:\n  if (local_44 != (uint *)0x0) goto LAB_0007c5b6;" (statement_identifier "LAB_0007c5aa") (: ":") (if_statement "if (local_44 != (uint *)0x0) goto LAB_0007c5b6;" (if "if") (parenthesized_expression "(local_44 != (uint *)0x0)" (( "(") (binary_expression "local_44 != (uint *)0x0" (identifier "local_44") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0007c5b6;" (goto "goto") (statement_identifier "LAB_0007c5b6") (; ";")))) (labeled_statement "LAB_0007c6c0:\n  FUN_00027250();" (statement_identifier "LAB_0007c6c0") (: ":") (expression_statement "FUN_00027250();" (call_expression "FUN_00027250()" (identifier "FUN_00027250") (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "*(uint *)(param_1 + 0x48) = local_64;" (assignment_expression "*(uint *)(param_1 + 0x48) = local_64" (pointer_expression "*(uint *)(param_1 + 0x48)" (* "*") (cast_expression "(uint *)(param_1 + 0x48)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (identifier "local_64")) (; ";")) (expression_statement "*(uint *)(param_1 + 0x4c) = local_60;" (assignment_expression "*(uint *)(param_1 + 0x4c) = local_60" (pointer_expression "*(uint *)(param_1 + 0x4c)" (* "*") (cast_expression "(uint *)(param_1 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (identifier "local_60")) (; ";")) (goto_statement "goto LAB_0007c6d7;" (goto "goto") (statement_identifier "LAB_0007c6d7") (; ";")) (} "}")))

int __regparm3 function_1(type_1 *pPager,int op,int iSavepoint)

{
  type_2 var_17;
  type_3 *var_34;
  type_4 *pPVar3;
  type_5 *var_20;
  type_6 *puVar5;
  type_7 lVar6;
  int var_9;
  int var_5;
  type_2 var_13;
  type_8 *var_10;
  type_5 *var_19;
  type_6 **ppuVar12;
  int var_4;
  int var_3;
  type_6 var_12;
  type_9 var_33;
  type_2 var_14;
  int var_6;
  int var_35;
  int var_7;
  int var_2;
  bool bVar18;
  type_6 *in_stack_ffffff8c;
  type_10 in_stack_ffffff94;
  type_2 var_27;
  int var_26;
  type_11 *var_23;
  int var_16;
  type_12 *var_11;
  type_6 var_30;
  type_6 dummy;
  int local_28;
  int var_37;
  
  var_1();
  var_37 = *(int *)(var_2 + 0x14);
  var_5 = (type_2)(var_3 != 1) + var_4;
  if (var_5 < pPager->nSavepoint) {
    var_7 = var_5 * 0x2c;
    var_6 = var_5;
    do {
      var_6 = var_6 + 1;
      var_9 = var_7 + -0xc;
      var_7 = var_7 + 0x2c;
      var_8(*(type_11 **)((int)pPager->aSavepoint->aWalData + var_9));
    } while (var_6 < pPager->nSavepoint);
  }
  pPager->nSavepoint = var_5;
  if (var_3 != 1) {
    var_10 = pPager->pWal;
    if (var_10 != (type_8 *)0x0) {
      if ((var_5 == 0) ||
         (var_11 = pPager->aSavepoint + var_5 + -1, var_11 == (type_12 *)0x0)) {
        bVar18 = true;
        var_16 = 0;
        pPager->dbSize = pPager->dbOrigSize;
        pPager->changeCountDone = pPager->tempFile;
        if (var_10->writeLock != '\0') {
          ppuVar12 = var_10->apWiData;
          var_13 = (var_10->hdr).mxFrame;
          puVar5 = *ppuVar12;
          (var_10->hdr).iVersion = *puVar5;
          (var_10->hdr).unused = puVar5[1];
          (var_10->hdr).iChange = puVar5[2];
          var_12 = puVar5[3];
          (var_10->hdr).isInit = (char)var_12;
          (var_10->hdr).bigEndCksum = (char)(var_12 >> 8);
          (var_10->hdr).szPage = (short)(var_12 >> 0x10);
          (var_10->hdr).mxFrame = puVar5[4];
          (var_10->hdr).nPage = puVar5[5];
          (var_10->hdr).aFrameCksum[0] = puVar5[6];
          (var_10->hdr).aFrameCksum[1] = puVar5[7];
          (var_10->hdr).aSalt[0] = puVar5[8];
          (var_10->hdr).aSalt[1] = puVar5[9];
          (var_10->hdr).aCksum[0] = puVar5[10];
          var_12 = (var_10->hdr).mxFrame;
          (var_10->hdr).aCksum[1] = puVar5[0xb];
          if (var_12 + 1 <= var_13) {
            var_14 = var_12 + 0x22;
            while( true ) {
              if (var_14 < 0x1000) {
                var_12 = (*ppuVar12)[var_14];
              }
              else {
                var_12 = ppuVar12[var_14 >> 0xc][var_14 & 0xfff];
              }
              var_16 = var_15(pPager,var_12);
              var_17 = var_14 - 0x20;
              bVar18 = var_16 == 0;
              var_14 = var_14 + 1;
              if (var_13 < var_17 || !bVar18) break;
              ppuVar12 = var_10->apWiData;
            }
            var_12 = (var_10->hdr).mxFrame;
          }
          if (var_13 != var_12) {
            var_18(var_10);
          }
        }
        pPVar3 = pPager->pPCache;
        var_19 = pPVar3->pDirty;
        if (var_19 != (type_5 *)0x0) {
          do {
            var_20 = var_19->pDirtyNext;
            var_19->pDirty = var_20;
            var_19 = var_20;
          } while (var_20 != (type_5 *)0x0);
          var_19 = pPVar3->pDirty;
        }
        var_19 = var_21(var_19);
        if ((var_19 != (type_5 *)0x0) && (bVar18)) {
          do {
            var_20 = var_19->pDirty;
            var_16 = var_15(pPager,var_19->pgno);
            if (var_20 == (type_5 *)0x0) break;
            var_19 = var_20;
          } while (var_16 == 0);
        }
        goto LAB_0007c632;
      }
LAB_0007c3bd:
      var_33 = var_11->nOrig;
      var_23 = (type_11 *)var_22(in_stack_ffffff94);
      var_16 = 7;
      if (var_23 == (type_11 *)0x0) goto LAB_0007c632;
      var_23->iSize = var_33;
      var_26 = *(int *)((int)&pPager->journalOff + 4);
      pPager->dbSize = var_11->nOrig;
      pPager->changeCountDone = pPager->tempFile;
      var_27 = (type_2)pPager->journalOff;
      if (pPager->pWal == (type_8 *)0x0) {
        var_5 = *(int *)((int)&var_11->iHdrOffset + 4);
        var_13 = (type_2)var_11->iHdrOffset;
        var_14 = (type_2)var_11->iOffset;
        var_6 = *(int *)((int)&var_11->iOffset + 4);
        if (var_5 == 0 && var_13 == 0) {
          var_13 = var_27;
          var_5 = var_26;
        }
        *(type_2 *)&pPager->journalOff = var_14;
        *(int *)((int)&pPager->journalOff + 4) = var_6;
        while ((var_24(var_6,var_5) != var_24(var_6 - var_5,(type_2)(var_14 < var_13))) !=
               (int)((var_6 - var_5) - (type_2)(var_14 < var_13)) < 0) {
          var_16 = var_25
                               (pPager,&pPager->journalOff,(type_11 *)0x1,1,(int)in_stack_ffffff8c);
          if (var_16 != 0) goto LAB_0007c4c8;
          var_14 = (type_2)pPager->journalOff;
          var_6 = *(int *)((int)&pPager->journalOff + 4);
        }
        if ((var_24(var_6,var_26) != var_24(var_6 - var_26,(type_2)(var_14 < var_27))) !=
            (int)((var_6 - var_26) - (type_2)(var_14 < var_27)) < 0) goto LAB_0007c431;
      }
      else {
        *(type_13 *)&pPager->journalOff = 0;
        *(type_13 *)((int)&pPager->journalOff + 4) = 0;
        if (-var_26 < (int)(type_2)(var_27 != 0)) {
LAB_0007c431:
          do {
            var_30 = 0;
            in_stack_ffffff8c = &var_30;
            var_16 = var_28(pPager,0,var_29(var_26,var_27),&var_30,&dummy);
            if (var_30 != 0) {
              if (var_16 != 0) {
LAB_0007c4bc:
                if (var_11 != (type_12 *)0x0) goto LAB_0007c4c8;
                goto LAB_0007c629;
              }
              var_13 = (type_2)pPager->journalOff;
              var_5 = *(int *)((int)&pPager->journalOff + 4);
LAB_0007c6f6:
              if ((var_24(var_5,var_26) != var_24(var_5 - var_26,(type_2)(var_13 < var_27)))
                  != (int)((var_5 - var_26) - (type_2)(var_13 < var_27)) < 0) {
                var_14 = 0;
                do {
                  var_14 = var_14 + 1;
                  var_16 = var_25
                                       (pPager,&pPager->journalOff,(type_11 *)0x1,1,
                                        (int)in_stack_ffffff8c);
                  if (var_16 != 0) goto LAB_0007c4bc;
                  var_13 = (type_2)pPager->journalOff;
                  var_5 = *(int *)((int)&pPager->journalOff + 4);
                } while ((var_14 < var_30) &&
                        ((var_24(var_5,var_26) !=
                         var_24(var_5 - var_26,(type_2)(var_13 < var_27))) !=
                         (int)((var_5 - var_26) - (type_2)(var_13 < var_27)) < 0));
                goto LAB_0007c598;
              }
              break;
            }
            var_13 = (type_2)pPager->journalOff;
            var_5 = *(int *)((int)&pPager->journalOff + 4);
            if (*(int *)((int)&pPager->journalHdr + 4) +
                (type_2)var_31(pPager->sectorSize,(type_2)pPager->journalHdr) == var_5 &&
                pPager->sectorSize + (int)pPager->journalHdr == var_13) {
              in_stack_ffffff8c = (type_6 *)(pPager->pageSize + 8);
              var_30 = var_32(var_27 - var_13,(var_26 - var_5) - (type_2)(var_27 < var_13),
                               in_stack_ffffff8c,(int)in_stack_ffffff8c >> 0x1f);
              if (var_16 == 0) {
                if (var_30 != 0) goto LAB_0007c6f6;
                goto LAB_0007c598;
              }
              goto LAB_0007c4bc;
            }
            if (var_16 != 0) goto LAB_0007c4bc;
LAB_0007c598:
          } while ((var_24(var_5,var_26) != var_24(var_5 - var_26,(type_2)(var_13 < var_27)))
                   != (int)((var_5 - var_26) - (type_2)(var_13 < var_27)) < 0);
          if (var_11 == (type_12 *)0x0) goto LAB_0007c6c0;
        }
      }
      var_33 = var_11->iSubRec;
      var_13 = pPager->pageSize + 4;
      lVar6 = (type_14)var_13 * (type_14)var_33;
      dummy = (type_6)lVar6;
      var_10 = pPager->pWal;
      local_28 = (int)((type_14)lVar6 >> 0x20) + ((int)var_13 >> 0x1f) * var_33;
      if (var_10 != (type_8 *)0x0) goto LAB_0007c4fc;
      goto LAB_0007c5ea;
    }
    if (pPager->jfd->pMethods == (type_3 *)0x0) goto LAB_0007c6d7;
    if ((var_5 != 0) &&
       (var_11 = pPager->aSavepoint + var_5 + -1, var_11 != (type_12 *)0x0))
    goto LAB_0007c3bd;
    var_27 = (type_2)pPager->journalOff;
    var_11 = (type_12 *)0x0;
    var_26 = *(int *)((int)&pPager->journalOff + 4);
    *(type_13 *)&pPager->journalOff = 0;
    pPager->dbSize = pPager->dbOrigSize;
    pPager->changeCountDone = pPager->tempFile;
    *(type_13 *)((int)&pPager->journalOff + 4) = 0;
    var_23 = (type_11 *)0x0;
    if (-var_26 < (int)(type_2)(var_27 != 0)) goto LAB_0007c431;
    goto LAB_0007c6c0;
  }
  if (var_5 == 0) {
    var_34 = pPager->sjfd->pMethods;
    var_16 = 0;
    if (var_34 != (type_3 *)0x0) {
      if (var_34 == (type_3 *)(var_35 + 0xce457)) {
        var_16 = var_36(pPager->sjfd,0);
      }
      pPager->nSubRec = 0;
    }
    goto LAB_0007c632;
  }
LAB_0007c6d7:
  var_16 = 0;
LAB_0007c632:
  if (var_37 == *(int *)(var_2 + 0x14)) {
    return var_16;
  }
                    /* WARNING: Subroutine does not return */
  var_38();
LAB_0007c4c8:
  var_33 = var_11->iSubRec;
  var_13 = pPager->pageSize + 4;
  lVar6 = (type_14)var_13 * (type_14)var_33;
  dummy = (type_6)lVar6;
  var_10 = pPager->pWal;
  local_28 = (int)((type_14)lVar6 >> 0x20) + ((int)var_13 >> 0x1f) * var_33;
  if (var_10 == (type_8 *)0x0) {
LAB_0007c629:
    var_8(var_23);
    goto LAB_0007c632;
  }
LAB_0007c4fc:
  if (var_11->aWalData[3] == var_10->nCkpt) {
    var_12 = var_11->aWalData[0];
  }
  else {
    var_11->aWalData[0] = 0;
    var_11->aWalData[3] = var_10->nCkpt;
    var_12 = 0;
  }
  if (var_12 < (var_10->hdr).mxFrame) {
    (var_10->hdr).mxFrame = var_12;
    (var_10->hdr).aFrameCksum[0] = var_11->aWalData[1];
    (var_10->hdr).aFrameCksum[1] = var_11->aWalData[2];
    var_18(var_10);
    var_33 = var_11->iSubRec;
  }
LAB_0007c5ea:
  if (var_33 < pPager->nSubRec) {
    do {
      var_33 = var_33 + 1;
      var_16 = var_25
                           (pPager,(type_15 *)&dummy,(type_11 *)0x0,1,(int)in_stack_ffffff8c);
      if (var_16 != 0) goto LAB_0007c629;
    } while (var_33 < pPager->nSubRec);
  }
LAB_0007c6c0:
  var_8(var_23);
  *(type_2 *)&pPager->journalOff = var_27;
  *(int *)((int)&pPager->journalOff + 4) = var_26;
  goto LAB_0007c6d7;
}


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

int __regparm3 MASKED(int param_1)

{
  undefined4 *puVar1;
  longlong lVar2;
  uint uVar3;
  int iVar4;
  uint *puVar5;
  uint uVar6;
  int extraout_ECX;
  int extraout_EDX;
  uint uVar7;
  int iVar8;
  int unaff_EDI;
  uint uVar9;
  int in_GS_OFFSET;
  bool bVar10;
  uint local_64;
  uint local_60;
  int local_58;
  uint *local_44;
  uint local_30;
  undefined4 local_2c;
  int local_28;
  int local_20;
  
  FUN_0001af1a();
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar4 = (uint)(extraout_EDX != 1) + extraout_ECX;
  iVar8 = iVar4;
  if (iVar4 < *(int *)(param_1 + 0x60)) {
    do {
      iVar8 = iVar8 + 1;
      FUN_00027250();
    } while (iVar8 < *(int *)(param_1 + 0x60));
  }
  *(int *)(param_1 + 0x60) = iVar4;
  if (extraout_EDX == 1) {
    if (iVar4 == 0) {
      iVar8 = **(int **)(param_1 + 0x44);
      local_58 = 0;
      if (iVar8 != 0) {
        if (iVar8 == unaff_EDI + 0xce457) {
          local_58 = FUN_0002e3a0(*(int **)(param_1 + 0x44),0,0);
        }
        *(undefined4 *)(param_1 + 0x34) = 0;
      }
      goto LAB_0007c632;
    }
  }
  else {
    iVar8 = *(int *)(param_1 + 0xd4);
    if (iVar8 != 0) {
      if ((iVar4 == 0) ||
         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),
         local_44 == (uint *)0x0)) {
        bVar10 = true;
        local_58 = 0;
        *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);
        *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);
        if (*(char *)(iVar8 + 0x2c) != '\0') {
          uVar7 = *(uint *)(iVar8 + 0x44);
          puVar1 = (undefined4 *)**(int **)(iVar8 + 0x20);
          *(undefined4 *)(iVar8 + 0x34) = *puVar1;
          *(undefined4 *)(iVar8 + 0x38) = puVar1[1];
          *(undefined4 *)(iVar8 + 0x3c) = puVar1[2];
          *(undefined4 *)(iVar8 + 0x40) = puVar1[3];
          *(undefined4 *)(iVar8 + 0x44) = puVar1[4];
          *(undefined4 *)(iVar8 + 0x48) = puVar1[5];
          *(undefined4 *)(iVar8 + 0x4c) = puVar1[6];
          *(undefined4 *)(iVar8 + 0x50) = puVar1[7];
          *(undefined4 *)(iVar8 + 0x54) = puVar1[8];
          *(undefined4 *)(iVar8 + 0x58) = puVar1[9];
          *(undefined4 *)(iVar8 + 0x5c) = puVar1[10];
          uVar6 = *(uint *)(iVar8 + 0x44);
          *(undefined4 *)(iVar8 + 0x60) = puVar1[0xb];
          if (uVar6 + 1 <= uVar7) {
            iVar4 = uVar6 + 0x22;
            do {
              local_58 = FUN_00067ce0();
              uVar6 = iVar4 - 0x20;
              bVar10 = local_58 == 0;
              iVar4 = iVar4 + 1;
            } while (uVar6 <= uVar7 && bVar10);
            uVar6 = *(uint *)(iVar8 + 0x44);
          }
          if (uVar7 != uVar6) {
            FUN_00067d50();
          }
        }
        iVar8 = **(int **)(param_1 + 0xd0);
        while (iVar8 != 0) {
          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x20);
          iVar8 = *(int *)(iVar8 + 0x20);
        }
        iVar8 = FUN_00025c80();
        if ((iVar8 != 0) && (bVar10)) {
          do {
            iVar8 = *(int *)(iVar8 + 0x10);
            local_58 = FUN_00067ce0();
            if (iVar8 == 0) break;
          } while (local_58 == 0);
        }
        goto LAB_0007c632;
      }
LAB_0007c3bd:
      uVar7 = local_44[5];
      puVar5 = (uint *)FUN_000261b0();
      local_58 = 7;
      if (puVar5 == (uint *)0x0) goto LAB_0007c632;
      *puVar5 = uVar7;
      local_60 = *(uint *)(param_1 + 0x4c);
      *(uint *)(param_1 + 0x18) = local_44[5];
      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);
      local_64 = *(uint *)(param_1 + 0x48);
      if (*(int *)(param_1 + 0xd4) == 0) {
        uVar7 = *local_44;
        uVar6 = local_44[1];
        uVar9 = local_44[2];
        uVar3 = local_44[3];
        if (local_44[3] == 0 && local_44[2] == 0) {
          uVar9 = local_64;
          uVar3 = local_60;
        }
        *(uint *)(param_1 + 0x48) = uVar7;
        *(uint *)(param_1 + 0x4c) = uVar6;
        while ((SBORROW4(uVar6,uVar3) != SBORROW4(uVar6 - uVar3,(uint)(uVar7 < uVar9))) !=
               (int)((uVar6 - uVar3) - (uint)(uVar7 < uVar9)) < 0) {
          local_58 = FUN_0007bf20(1,1);
          if (local_58 != 0) goto LAB_0007c4c8;
          uVar7 = *(uint *)(param_1 + 0x48);
          uVar6 = *(uint *)(param_1 + 0x4c);
        }
        if ((SBORROW4(uVar6,local_60) != SBORROW4(uVar6 - local_60,(uint)(uVar7 < local_64))) !=
            (int)((uVar6 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c431;
LAB_0007c5b6:
        uVar7 = local_44[6];
        uVar6 = *(int *)(param_1 + 0x94) + 4;
        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;
        local_2c = (undefined4)lVar2;
        iVar8 = *(int *)(param_1 + 0xd4);
        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;
        if (iVar8 != 0) goto LAB_0007c4fc;
      }
      else {
        *(undefined4 *)(param_1 + 0x48) = 0;
        *(undefined4 *)(param_1 + 0x4c) = 0;
        if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c5b6;
LAB_0007c431:
LAB_0007c450:
        local_30 = 0;
        local_58 = FUN_0003bf80(local_64,local_60,&local_30,&local_2c);
        if (local_30 != 0) {
          if (local_58 != 0) goto LAB_0007c4bc;
          uVar7 = *(uint *)(param_1 + 0x48);
          iVar8 = *(int *)(param_1 + 0x4c);
LAB_0007c6f6:
          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==
              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;
          uVar6 = 0;
          do {
            uVar6 = uVar6 + 1;
            local_58 = FUN_0007bf20(1,1);
            if (local_58 != 0) goto LAB_0007c4bc;
            uVar7 = *(uint *)(param_1 + 0x48);
            iVar8 = *(int *)(param_1 + 0x4c);
          } while ((uVar6 < local_30) &&
                  ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64)))
                   != (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0));
LAB_0007c598:
          if ((SBORROW4(iVar8,local_60) != SBORROW4(iVar8 - local_60,(uint)(uVar7 < local_64))) ==
              (int)((iVar8 - local_60) - (uint)(uVar7 < local_64)) < 0) goto LAB_0007c5aa;
          goto LAB_0007c450;
        }
        uVar7 = *(uint *)(param_1 + 0x48);
        iVar8 = *(int *)(param_1 + 0x4c);
        if (*(int *)(param_1 + 0x54) +
            (uint)CARRY4(*(uint *)(param_1 + 0x90),*(uint *)(param_1 + 0x50)) == iVar8 &&
            *(uint *)(param_1 + 0x90) + *(uint *)(param_1 + 0x50) == uVar7) {
          iVar4 = *(int *)(param_1 + 0x94) + 8;
          local_30 = FUN_000f5a10(local_64 - uVar7,(local_60 - iVar8) - (uint)(local_64 < uVar7),
                                  iVar4,iVar4 >> 0x1f);
          if (local_58 != 0) goto LAB_0007c4bc;
          if (local_30 != 0) goto LAB_0007c6f6;
          goto LAB_0007c598;
        }
        if (local_58 == 0) goto LAB_0007c598;
LAB_0007c4bc:
        if (local_44 == (uint *)0x0) goto LAB_0007c629;
LAB_0007c4c8:
        uVar7 = local_44[6];
        uVar6 = *(int *)(param_1 + 0x94) + 4;
        lVar2 = (ulonglong)uVar6 * (ulonglong)uVar7;
        local_2c = (undefined4)lVar2;
        iVar8 = *(int *)(param_1 + 0xd4);
        local_28 = (int)((ulonglong)lVar2 >> 0x20) + ((int)uVar6 >> 0x1f) * uVar7;
        if (iVar8 == 0) {
LAB_0007c629:
          FUN_00027250();
          goto LAB_0007c632;
        }
LAB_0007c4fc:
        if (local_44[10] == *(uint *)(iVar8 + 0x70)) {
          uVar6 = local_44[7];
        }
        else {
          local_44[7] = 0;
          local_44[10] = *(uint *)(iVar8 + 0x70);
          uVar6 = 0;
        }
        if (uVar6 < *(uint *)(iVar8 + 0x44)) {
          *(uint *)(iVar8 + 0x44) = uVar6;
          *(uint *)(iVar8 + 0x4c) = local_44[8];
          *(uint *)(iVar8 + 0x50) = local_44[9];
          FUN_00067d50();
          uVar7 = local_44[6];
        }
      }
      if (uVar7 < *(uint *)(param_1 + 0x34)) {
        do {
          uVar7 = uVar7 + 1;
          local_58 = FUN_0007bf20(0,1);
          if (local_58 != 0) goto LAB_0007c629;
        } while (uVar7 < *(uint *)(param_1 + 0x34));
      }
      goto LAB_0007c6c0;
    }
    if (**(int **)(param_1 + 0x40) != 0) {
      if ((iVar4 != 0) &&
         (local_44 = (uint *)(*(int *)(param_1 + 0x5c) + -0x2c + iVar4 * 0x2c),
         local_44 != (uint *)0x0)) goto LAB_0007c3bd;
      local_64 = *(uint *)(param_1 + 0x48);
      local_44 = (uint *)0x0;
      local_60 = *(uint *)(param_1 + 0x4c);
      *(undefined4 *)(param_1 + 0x48) = 0;
      *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x1c);
      *(undefined1 *)(param_1 + 0x12) = *(undefined1 *)(param_1 + 0xc);
      *(undefined4 *)(param_1 + 0x4c) = 0;
      if ((int)(uint)(local_64 != 0) <= (int)-local_60) goto LAB_0007c6c0;
      goto LAB_0007c431;
    }
  }
LAB_0007c6d7:
  local_58 = 0;
LAB_0007c632:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000f6410();
  }
  return local_58;
LAB_0007c5aa:
  if (local_44 != (uint *)0x0) goto LAB_0007c5b6;
LAB_0007c6c0:
  FUN_00027250();
  *(uint *)(param_1 + 0x48) = local_64;
  *(uint *)(param_1 + 0x4c) = local_60;
  goto LAB_0007c6d7;
}

