
/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */
/* WARNING: Unknown calling convention */

int sqlite3_backup_step(sqlite3_backup *p,int nPage)

{
  int *piVar1;
  u8 uVar2;
  sqlite3_file *psVar3;
  longlong lVar4;
  longlong lVar5;
  int iVar6;
  Pager *pPVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  Btree *p_00;
  BtShared *pBVar11;
  BtShared *pBVar12;
  int iVar13;
  u8 *zSrcData;
  Btree *pBVar14;
  DbPage *pDVar15;
  int iVar16;
  int in_GS_OFFSET;
  bool bVar17;
  DbPage **ppDVar18;
  int iVar19;
  BtShared *in_stack_ffffff94;
  Pager *local_5c;
  u32 local_50;
  int local_4c;
  u32 local_48;
  DbPage *local_3c;
  int local_38;
  Pager *local_34;
  DbPage *pSrcPg;
  int local_28;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  sqlite3_mutex_enter(p->pSrcDb->mutex);
  if (p->pSrc->sharable != '\0') {
    sqlite3BtreeEnter(p->pSrc);
  }
  if (p->pDestDb == (sqlite3 *)0x0) {
    iVar6 = p->rc;
    if ((1 < iVar6 - 5U) && (iVar6 != 0)) goto LAB_00085244;
    p_00 = p->pSrc;
    pBVar14 = p->pDest;
    pBVar12 = p_00->pBt;
    local_5c = pBVar12->pPager;
    pBVar11 = pBVar14->pBt;
    local_34 = pBVar11->pPager;
    if (p_00->inTrans != '\0') goto LAB_00084fef;
LAB_000852b9:
    iVar6 = sqlite3BtreeBeginTrans(p_00,0,(int *)0x0);
    pBVar14 = p->pDest;
    if (iVar6 == 0 && p->bDestLocked == 0) {
      local_4c = 1;
      pBVar12 = p->pSrc->pBt;
      goto LAB_00084ffe;
    }
    if (iVar6 != 0) {
      pBVar11 = pBVar14->pBt;
      local_4c = 1;
      pBVar12 = p->pSrc->pBt;
      pPVar7 = pBVar11->pPager;
      goto LAB_00085051;
    }
    local_4c = 1;
LAB_0008501f:
    if (p->bDestLocked == 0) {
      iVar6 = sqlite3BtreeBeginTrans(pBVar14,2,(int *)&p->iDestSchema);
      if (iVar6 == 0) {
        p_00 = p->pSrc;
        p->bDestLocked = 1;
        pBVar11 = p->pDest->pBt;
        pBVar12 = p_00->pBt;
        pPVar7 = pBVar11->pPager;
        goto LAB_0008518c;
      }
LAB_00085043:
      pBVar12 = p->pSrc->pBt;
      pBVar11 = p->pDest->pBt;
      pPVar7 = pBVar11->pPager;
LAB_00085051:
      uVar2 = pPVar7->journalMode;
      local_50 = pBVar12->pageSize;
      local_48 = pBVar11->pageSize;
      local_3c = (DbPage *)pBVar12->nPage;
LAB_0008506e:
      if (iVar6 != 0x65) goto LAB_000851f0;
LAB_00085077:
      pBVar14 = p->pDest;
      if (local_3c == (DbPage *)0x0) {
        if (pBVar14->sharable != '\0') {
          sqlite3BtreeEnter(pBVar14);
        }
        pBVar14->pBt->nPage = 0;
        if (pBVar14->pBt->nPage == 0) {
          iVar6 = newDatabase(in_stack_ffffff94);
          if (pBVar14->sharable == '\0') {
            bVar17 = iVar6 == 0 || iVar6 == 0x65;
          }
          else {
            iVar13 = pBVar14->wantToLock + -1;
            pBVar14->wantToLock = iVar13;
            bVar17 = iVar6 == 0x65 || iVar6 == 0;
            if (iVar13 == 0) {
              sqlite3BtreeLeave(pBVar14);
            }
          }
          if (!bVar17) goto LAB_000851f0;
        }
        else if (pBVar14->sharable != '\0') {
          piVar1 = &pBVar14->wantToLock;
          *piVar1 = *piVar1 + -1;
          if (*piVar1 == 0) {
            sqlite3BtreeLeave(pBVar14);
          }
        }
        pBVar14 = p->pDest;
        local_3c = (DbPage *)0x1;
      }
      iVar6 = sqlite3BtreeUpdateMeta(pBVar14,1,p->iDestSchema + 1);
      if (iVar6 == 0) {
        if (p->pDestDb != (sqlite3 *)0x0) {
          sqlite3ResetAllSchemasOfConnection(p->pDestDb);
        }
        if ((uVar2 != '\x05') || (iVar6 = sqlite3BtreeSetVersion(p->pDest,2), iVar6 == 0)) {
          if ((int)local_48 <= (int)local_50) {
            local_34->dbSize = ((int)local_50 / (int)local_48) * (int)local_3c;
            iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,0);
            goto LAB_000855f2;
          }
          uVar8 = (int)((int)local_3c + (int)local_48 / (int)local_50 + -1) /
                  ((int)local_48 / (int)local_50);
          uVar9 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;
          if (uVar9 + 1 == uVar8) {
            uVar8 = uVar9;
          }
          lVar4 = (longlong)(int)local_3c * (longlong)(int)local_50;
          psVar3 = local_34->fd;
          uVar9 = local_34->dbSize;
          do {
            if ((uVar9 < uVar8) ||
               ((uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&
                (uVar8 = uVar10 + 2, uVar9 < uVar8)))) {
              iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1);
              pDVar15 = (DbPage *)(local_48 + sqlite3PendingByte);
              local_3c = (DbPage *)lVar4;
              local_38 = (int)((ulonglong)lVar4 >> 0x20);
              iVar13 = local_38 - ((int)pDVar15 >> 0x1f);
              lVar5 = (longlong)(int)pDVar15;
              if ((SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=
                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=
                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0) {
                lVar5 = lVar4;
              }
              iVar16 = (int)((ulonglong)lVar5 >> 0x20);
              uVar8 = sqlite3PendingByte + local_50;
              iVar13 = (int)uVar8 >> 0x1f;
              if ((iVar6 != 0) ||
                 (uVar9 = (uint)(uVar8 < (uint)lVar5),
                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==
                 (int)((iVar13 - iVar16) - uVar9) < 0)) goto LAB_000853a0;
              goto LAB_00085660;
            }
            iVar6 = (*local_34->xGet)(local_34,uVar8,&pSrcPg,0);
            if (iVar6 != 0) break;
            iVar6 = sqlite3PagerWrite(pSrcPg);
            if (pSrcPg != (DbPage *)0x0) {
              sqlite3PagerUnrefNotNull(pSrcPg);
            }
            uVar8 = uVar8 + 1;
          } while (iVar6 == 0);
        }
      }
      goto LAB_000851f0;
    }
    p_00 = p->pSrc;
    pBVar11 = pBVar14->pBt;
    pBVar12 = p_00->pBt;
    pPVar7 = pBVar11->pPager;
LAB_0008518c:
    local_50 = pBVar12->pageSize;
    local_48 = pBVar11->pageSize;
    uVar2 = pPVar7->journalMode;
    local_3c = (DbPage *)pBVar12->nPage;
    if ((uVar2 != '\x05') || (local_48 == local_50)) {
      if (nPage == 0) {
LAB_0008551a:
        zSrcData = (u8 *)p->iNext;
      }
      else {
        zSrcData = (u8 *)p->iNext;
        if (zSrcData <= local_3c) {
          iVar13 = 0;
          while( true ) {
            iVar6 = 0;
            if ((((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&
                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)) &&
               (iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,
                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),
               pSrcPg != (DbPage *)0x0)) {
              sqlite3PagerUnrefNotNull(pSrcPg);
            }
            iVar13 = iVar13 + 1;
            zSrcData = (u8 *)(p->iNext + 1);
            p->iNext = (Pgno)zSrcData;
            if (((nPage <= iVar13) && (-1 < nPage)) || (local_3c < zSrcData)) break;
            if (iVar6 != 0) goto LAB_0008506e;
            p_00 = p->pSrc;
          }
          if (iVar6 == 0) goto LAB_0008551a;
          goto LAB_0008506e;
        }
      }
      p->nPagecount = (Pgno)local_3c;
      p->nRemaining = (Pgno)((int)local_3c + (1 - (int)zSrcData));
      if (local_3c < zSrcData) goto LAB_00085077;
      if (p->isAttached == 0) {
        pPVar7 = p->pSrc->pBt->pPager;
        p->pNext = pPVar7->pBackup;
        pPVar7->pBackup = p;
        p->isAttached = 1;
      }
      iVar6 = 0;
      goto joined_r0x0008561f;
    }
    if (nPage == 0) {
      iVar6 = 8;
      if (local_4c == 0) goto LAB_0008522b;
      goto LAB_000851fb;
    }
    iVar6 = 8;
    if (local_3c < (u8 *)p->iNext) {
      iVar6 = 8;
      goto LAB_000851f0;
    }
    if (local_4c != 0) goto LAB_000851fb;
    goto LAB_0008522b;
  }
  sqlite3_mutex_enter(p->pDestDb->mutex);
  iVar6 = p->rc;
  if ((iVar6 - 5U < 2) || (iVar6 == 0)) {
    p_00 = p->pSrc;
    pBVar14 = p->pDest;
    pBVar12 = p_00->pBt;
    local_5c = pBVar12->pPager;
    pBVar11 = pBVar14->pBt;
    pPVar7 = pBVar11->pPager;
    local_34 = pPVar7;
    if ((p->pDestDb != (sqlite3 *)0x0) && (pBVar12->inTransaction == '\x02')) {
      local_4c = 0;
      iVar6 = 5;
      goto LAB_00085051;
    }
    if (p_00->inTrans == '\0') goto LAB_000852b9;
LAB_00084fef:
    local_4c = p->bDestLocked;
    if (local_4c == 0) {
LAB_00084ffe:
      iVar6 = sqlite3BtreeSetPageSize(pBVar14,pBVar12->pageSize,-1,0);
      if (iVar6 != 7) {
        pBVar14 = p->pDest;
        goto LAB_0008501f;
      }
      goto LAB_00085043;
    }
    local_4c = 0;
    pPVar7 = local_34;
    goto LAB_0008518c;
  }
  goto LAB_0008522e;
  while( true ) {
    bVar17 = CARRY4(uVar8,local_50);
    uVar8 = uVar8 + local_50;
    iVar13 = iVar13 + ((int)local_50 >> 0x1f) + (uint)bVar17;
    if ((iVar6 != 0) ||
       (uVar9 = (uint)(uVar8 < (uint)lVar5),
       (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==
       (int)((iVar13 - iVar16) - uVar9) < 0)) break;
LAB_00085660:
    pSrcPg = (DbPage *)0x0;
    iVar19 = 0;
    ppDVar18 = &pSrcPg;
    iVar6 = __divdi3(uVar8,iVar13,local_50,(int)local_50 >> 0x1f);
    iVar6 = (*local_5c->xGet)(local_5c,iVar6 + 1,ppDVar18,iVar19);
    if (iVar6 == 0) {
      iVar6 = (*psVar3->pMethods->xWrite)(psVar3,pSrcPg->pData,local_50,CONCAT44(iVar13,uVar8));
      if (pSrcPg != (DbPage *)0x0) goto LAB_000856f0;
    }
    else {
      if (pSrcPg == (DbPage *)0x0) goto LAB_000851f0;
LAB_000856f0:
      sqlite3PagerUnrefNotNull(pSrcPg);
    }
  }
LAB_000853a0:
  if (((iVar6 == 0) &&
      (iVar6 = (*psVar3->pMethods->xFileSize)(psVar3,(sqlite3_int64 *)&pSrcPg), iVar6 == 0)) &&
     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < pSrcPg))) ==
       (int)((local_38 - local_28) - (uint)(local_3c < pSrcPg)) < 0 ||
      (iVar6 = (*psVar3->pMethods->xTruncate)(psVar3,lVar4), iVar6 == 0)))) {
    iVar6 = sqlite3PagerSync(local_34,(char *)0x0);
LAB_000855f2:
    if ((iVar6 != 0) ||
       ((p->pDest->inTrans != '\0' && (iVar6 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar6 != 0)))
       ) goto LAB_000851f0;
    iVar6 = 0x65;
joined_r0x0008561f:
    if (local_4c == 0) goto LAB_0008522b;
LAB_000851f8:
    p_00 = p->pSrc;
LAB_000851fb:
    uVar2 = p_00->inTrans;
    if (uVar2 == '\x02') {
      sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0);
      p_00 = p->pSrc;
      uVar2 = p_00->inTrans;
    }
    if (uVar2 != '\0') {
      sqlite3BtreeCommitPhaseTwo(p_00,0);
    }
  }
  else {
LAB_000851f0:
    if (local_4c != 0) goto LAB_000851f8;
  }
  if (iVar6 == 0xc0a) {
    iVar6 = 7;
  }
LAB_0008522b:
  p->rc = iVar6;
LAB_0008522e:
  if (p->pDestDb != (sqlite3 *)0x0) {
    sqlite3_mutex_leave(p->pDestDb->mutex);
  }
LAB_00085244:
  pBVar14 = p->pSrc;
  if (pBVar14->sharable != '\0') {
    piVar1 = &pBVar14->wantToLock;
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      sqlite3BtreeLeave(pBVar14);
    }
  }
  sqlite3_mutex_leave(p->pSrcDb->mutex);
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return iVar6;
}



int FUN_00084f50(int *param_1,int param_2)

{
  longlong lVar1;
  longlong lVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  int *piVar8;
  char cVar9;
  int *piVar10;
  int iVar11;
  int unaff_EBP;
  int in_GS_OFFSET;
  bool bVar12;
  uint *puVar13;
  undefined4 uVar14;
  int local_5c;
  uint local_50;
  int local_4c;
  uint local_48;
  uint local_3c;
  int local_38;
  int local_34;
  uint local_2c;
  int local_28;
  int local_20;
  
  FUN_00019701();
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  FUN_000197c0(*(undefined4 *)(param_1[5] + 0xc));
  if (*(char *)(param_1[6] + 9) != '\0') {
    FUN_0002b330();
  }
  if (*param_1 == 0) {
    iVar3 = param_1[7];
    if ((1 < iVar3 - 5U) && (iVar3 != 0)) goto LAB_00085244;
    iVar11 = param_1[6];
    piVar10 = *(int **)(iVar11 + 4);
    local_5c = *piVar10;
    piVar8 = *(int **)(param_1[1] + 4);
    local_34 = *piVar8;
    if (*(char *)(iVar11 + 8) != '\0') goto LAB_00084fef;
LAB_000852b9:
    iVar3 = FUN_0007cba0();
    iVar7 = param_1[1];
    if (iVar3 == 0 && param_1[3] == 0) {
      local_4c = 1;
      goto LAB_00084ffe;
    }
    if (iVar3 != 0) {
      piVar8 = *(int **)(iVar7 + 4);
      local_4c = 1;
      piVar10 = *(int **)(param_1[6] + 4);
      iVar7 = *piVar8;
      goto LAB_00085051;
    }
    local_4c = 1;
LAB_0008501f:
    if (param_1[3] == 0) {
      iVar3 = FUN_0007cba0();
      if (iVar3 == 0) {
        iVar11 = param_1[6];
        param_1[3] = 1;
        piVar8 = *(int **)(param_1[1] + 4);
        piVar10 = *(int **)(iVar11 + 4);
        iVar3 = *piVar8;
        goto LAB_0008518c;
      }
LAB_00085043:
      piVar10 = *(int **)(param_1[6] + 4);
      piVar8 = *(int **)(param_1[1] + 4);
      iVar7 = *piVar8;
LAB_00085051:
      cVar9 = *(char *)(iVar7 + 5);
      local_50 = piVar10[8];
      local_48 = piVar8[8];
      local_3c = piVar10[0xb];
LAB_0008506e:
      if (iVar3 != 0x65) goto LAB_000851f0;
LAB_00085077:
      iVar11 = param_1[1];
      if (local_3c == 0) {
        if (*(char *)(iVar11 + 9) != '\0') {
          FUN_0002b330();
        }
        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;
        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {
          iVar3 = FUN_0007cac0();
          if (*(char *)(iVar11 + 9) == '\0') {
            bVar12 = iVar3 == 0 || iVar3 == 0x65;
          }
          else {
            iVar7 = *(int *)(iVar11 + 0xc) + -1;
            *(int *)(iVar11 + 0xc) = iVar7;
            bVar12 = iVar3 == 0x65 || iVar3 == 0;
            if (iVar7 == 0) {
              FUN_0002b3c0();
            }
          }
          if (!bVar12) goto LAB_000851f0;
        }
        else if (*(char *)(iVar11 + 9) != '\0') {
          piVar8 = (int *)(iVar11 + 0xc);
          *piVar8 = *piVar8 + -1;
          if (*piVar8 == 0) {
            FUN_0002b3c0();
          }
        }
        local_3c = 1;
      }
      iVar3 = FUN_0007d3e0();
      if (iVar3 == 0) {
        if (*param_1 != 0) {
          FUN_00039e00();
        }
        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {
          if ((int)local_48 <= (int)local_50) {
            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;
            iVar3 = FUN_000846f0();
            goto LAB_000855f2;
          }
          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /
                  ((int)local_48 / (int)local_50);
          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);
          if (uVar5 + 1 == uVar4) {
            uVar4 = uVar5;
          }
          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;
          piVar8 = *(int **)(local_34 + 0x3c);
          uVar5 = *(uint *)(local_34 + 0x18);
          do {
            if ((uVar5 < uVar4) ||
               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)
                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {
              iVar3 = FUN_000846f0();
              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);
              local_3c = (uint)lVar1;
              local_38 = (int)((ulonglong)lVar1 >> 0x20);
              iVar11 = local_38 - ((int)local_48 >> 0x1f);
              lVar2 = (longlong)(int)local_48;
              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=
                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=
                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {
                lVar2 = lVar1;
              }
              iVar7 = (int)((ulonglong)lVar2 >> 0x20);
              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;
              iVar11 = (int)uVar4 >> 0x1f;
              if ((iVar3 != 0) ||
                 (uVar5 = (uint)(uVar4 < (uint)lVar2),
                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==
                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;
              goto LAB_00085660;
            }
            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);
            if (iVar3 != 0) break;
            iVar3 = FUN_00079770();
            if (local_2c != 0) {
              FUN_0001b1a0();
            }
            uVar4 = uVar4 + 1;
          } while (iVar3 == 0);
        }
      }
      goto LAB_000851f0;
    }
    iVar11 = param_1[6];
    piVar8 = *(int **)(iVar7 + 4);
    piVar10 = *(int **)(iVar11 + 4);
    iVar3 = *piVar8;
LAB_0008518c:
    local_50 = piVar10[8];
    local_48 = piVar8[8];
    cVar9 = *(char *)(iVar3 + 5);
    local_3c = piVar10[0xb];
    if ((cVar9 != '\x05') || (local_48 == local_50)) {
      if (param_2 == 0) {
LAB_0008551a:
        uVar4 = param_1[4];
      }
      else {
        uVar4 = param_1[4];
        if (uVar4 <= local_3c) {
          iVar7 = 0;
          while( true ) {
            iVar3 = 0;
            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=
                  uVar4) &&
                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&
               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {
              FUN_0001b1a0();
            }
            iVar7 = iVar7 + 1;
            uVar4 = param_1[4] + 1;
            param_1[4] = uVar4;
            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;
            if (iVar3 != 0) goto LAB_0008506e;
            iVar11 = param_1[6];
          }
          if (iVar3 == 0) goto LAB_0008551a;
          goto LAB_0008506e;
        }
      }
      param_1[9] = local_3c;
      param_1[8] = (local_3c - uVar4) + 1;
      if (local_3c < uVar4) goto LAB_00085077;
      if (param_1[10] == 0) {
        iVar3 = **(int **)(param_1[6] + 4);
        param_1[0xb] = *(int *)(iVar3 + 0x58);
        *(int **)(iVar3 + 0x58) = param_1;
        param_1[10] = 1;
      }
      iVar3 = 0;
      goto joined_r0x0008561f;
    }
    if (param_2 == 0) {
      iVar3 = 8;
      if (local_4c == 0) goto LAB_0008522b;
      goto LAB_000851fb;
    }
    iVar3 = 8;
    if (local_3c < (uint)param_1[4]) {
      iVar3 = 8;
      goto LAB_000851f0;
    }
    if (local_4c != 0) goto LAB_000851fb;
    goto LAB_0008522b;
  }
  FUN_000197c0(*(undefined4 *)(*param_1 + 0xc));
  iVar3 = param_1[7];
  if ((iVar3 - 5U < 2) || (iVar3 == 0)) {
    iVar11 = param_1[6];
    piVar10 = *(int **)(iVar11 + 4);
    local_5c = *piVar10;
    piVar8 = *(int **)(param_1[1] + 4);
    iVar7 = *piVar8;
    local_34 = iVar7;
    if ((*param_1 != 0) && ((char)piVar10[5] == '\x02')) {
      local_4c = 0;
      iVar3 = 5;
      goto LAB_00085051;
    }
    if (*(char *)(iVar11 + 8) == '\0') goto LAB_000852b9;
LAB_00084fef:
    local_4c = param_1[3];
    if (local_4c == 0) {
LAB_00084ffe:
      iVar3 = FUN_0003a660(0);
      if (iVar3 != 7) {
        iVar7 = param_1[1];
        goto LAB_0008501f;
      }
      goto LAB_00085043;
    }
    local_4c = 0;
    iVar3 = local_34;
    goto LAB_0008518c;
  }
  goto LAB_0008522e;
  while( true ) {
    bVar12 = CARRY4(uVar4,local_50);
    uVar4 = uVar4 + local_50;
    iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12;
    if ((iVar3 != 0) ||
       (uVar5 = (uint)(uVar4 < (uint)lVar2),
       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==
       (int)((iVar11 - iVar7) - uVar5) < 0)) break;
LAB_00085660:
    local_2c = 0;
    uVar14 = 0;
    puVar13 = &local_2c;
    iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f);
    iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14);
    if (iVar3 == 0) {
      iVar3 = (**(code **)(*piVar8 + 0xc))
                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);
      if (local_2c != 0) goto LAB_000856f0;
    }
    else {
      if (local_2c == 0) goto LAB_000851f0;
LAB_000856f0:
      FUN_0001b1a0();
    }
  }
LAB_000853a0:
  if (((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&
     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==
       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||
      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))) {
    iVar3 = FUN_0002a940();
LAB_000855f2:
    if ((iVar3 != 0) ||
       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))
    goto LAB_000851f0;
    iVar3 = 0x65;
joined_r0x0008561f:
    if (local_4c == 0) goto LAB_0008522b;
LAB_000851f8:
    iVar11 = param_1[6];
LAB_000851fb:
    cVar9 = *(char *)(iVar11 + 8);
    if (cVar9 == '\x02') {
      FUN_00084c70();
      cVar9 = *(char *)(param_1[6] + 8);
    }
    if (cVar9 != '\0') {
      FUN_0007c140();
    }
  }
  else {
LAB_000851f0:
    if (local_4c != 0) goto LAB_000851f8;
  }
  if (iVar3 == 0xc0a) {
    iVar3 = 7;
  }
LAB_0008522b:
  param_1[7] = iVar3;
LAB_0008522e:
  if (*param_1 != 0) {
    FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));
  }
LAB_00085244:
  if (*(char *)(param_1[6] + 9) != '\0') {
    piVar8 = (int *)(param_1[6] + 0xc);
    *piVar8 = *piVar8 + -1;
    if (*piVar8 == 0) {
      FUN_0002b3c0();
    }
  }
  FUN_000197f0(*(undefined4 *)(param_1[5] + 0xc));
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000f4bf0();
  }
  return iVar3;
}


PUSH EBP
CALL 0x00019701
ADD EBP,0xc3f7e
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x68
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x58],EAX
XOR EAX,EAX
MOV EDI,dword ptr [ESP + 0x7c]
MOV EBX,EBP
MOV EAX,dword ptr [EDI + 0x14]
PUSH dword ptr [EAX + 0xc]
CALL 0x000197c0
MOV EAX,dword ptr [EDI + 0x18]
ADD ESP,0x10
CMP byte ptr [EAX + 0x9],0x0
JZ 0x00084f90
CALL 0x0002b330
MOV EAX,dword ptr [EDI]
TEST EAX,EAX
JZ 0x00085288
SUB ESP,0xc
PUSH dword ptr [EAX + 0xc]
MOV EBX,EBP
CALL 0x000197c0
MOV ESI,dword ptr [EDI + 0x1c]
ADD ESP,0x10
LEA EAX,[ESI + -0x5]
CMP EAX,0x1
JBE 0x00084fbd
TEST ESI,ESI
JNZ 0x0008522e
MOV EAX,dword ptr [EDI + 0x18]
MOV EBX,dword ptr [EDI + 0x4]
MOV EDX,dword ptr [EAX + 0x4]
MOV ECX,dword ptr [EDX]
MOV dword ptr [ESP + 0x10],ECX
MOV ECX,dword ptr [EBX + 0x4]
MOV ESI,dword ptr [ECX]
MOV dword ptr [ESP + 0x38],ESI
MOV ESI,dword ptr [EDI]
TEST ESI,ESI
JZ 0x00084fe5
CMP byte ptr [EDX + 0x14],0x2
JZ 0x00085420
CMP byte ptr [EAX + 0x8],0x0
JZ 0x000852b9
MOV ESI,dword ptr [EDI + 0xc]
MOV dword ptr [ESP + 0x20],ESI
TEST ESI,ESI
JNZ 0x00085180
SUB ESP,0xc
MOV EDX,dword ptr [EDX + 0x20]
MOV ECX,0xffffffff
MOV EAX,EBX
PUSH 0x0
CALL 0x0003a660
ADD ESP,0x10
MOV ESI,EAX
CMP EAX,0x7
JZ 0x00085043
MOV EBX,dword ptr [EDI + 0x4]
MOV EAX,dword ptr [EDI + 0xc]
TEST EAX,EAX
JNZ 0x0008572d
LEA ECX,[EDI + 0x8]
MOV EDX,0x2
MOV EAX,EBX
CALL 0x0007cba0
MOV ESI,EAX
TEST EAX,EAX
JZ 0x00085713
MOV EAX,dword ptr [EDI + 0x18]
MOV EDX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [EDI + 0x4]
MOV ECX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [ECX]
MOVZX EAX,byte ptr [EAX + 0x5]
MOV EBX,dword ptr [EDX + 0x20]
MOV ECX,dword ptr [ECX + 0x20]
MOV dword ptr [ESP + 0x3c],EAX
MOV EAX,dword ptr [EDX + 0x2c]
MOV dword ptr [ESP + 0x1c],EBX
MOV dword ptr [ESP + 0x24],ECX
MOV dword ptr [ESP + 0x30],EAX
CMP ESI,0x65
JNZ 0x000851f0
MOV ECX,dword ptr [ESP + 0x30]
MOV EBX,dword ptr [EDI + 0x4]
TEST ECX,ECX
JZ 0x00085580
MOV EAX,dword ptr [EDI + 0x8]
MOV EDX,0x1
LEA ECX,[EAX + 0x1]
MOV EAX,EBX
CALL 0x0007d3e0
MOV ESI,EAX
TEST EAX,EAX
JNZ 0x000851f0
MOV EAX,dword ptr [EDI]
TEST EAX,EAX
JZ 0x000850ad
CALL 0x00039e00
CMP dword ptr [ESP + 0x3c],0x5
JZ 0x0008573d
MOV ECX,dword ptr [ESP + 0x24]
CMP dword ptr [ESP + 0x1c],ECX
JGE 0x000855d0
MOV EAX,dword ptr [ESP + 0x24]
MOV ECX,dword ptr [ESP + 0x1c]
CDQ
MOV dword ptr [ESP + 0x8],ECX
IDIV ECX
MOV EBX,EAX
MOV EAX,dword ptr [ESP + 0x30]
LEA EAX,[EAX + EBX*0x1 + -0x1]
CDQ
IDIV EBX
XOR EDX,EDX
MOV EBX,EAX
MOV EAX,dword ptr [EDI + 0x4]
MOV ESI,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [EBP + 0x290]
DIV dword ptr [ESI + 0x20]
LEA EDX,[EAX + 0x1]
CMP EDX,EBX
MOV EDX,ECX
CMOVZ EBX,EAX
MOV EAX,dword ptr [ESP + 0x30]
SAR EDX,0x1f
MOV dword ptr [ESP + 0xc],EDX
IMUL ECX
MOV ESI,EBX
MOV dword ptr [ESP + 0x30],EAX
MOV EAX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x34],EDX
MOV ECX,dword ptr [EAX + 0x3c]
MOV EBX,EAX
MOV dword ptr [ESP + 0x28],ECX
MOV ECX,dword ptr [EAX + 0x18]
MOV dword ptr [ESP + 0x14],ECX
LEA ECX,[ESP + 0x40]
MOV dword ptr [ESP + 0x18],ECX
LEA ESI,[ESI]
CMP dword ptr [ESP + 0x14],ESI
JC 0x00085335
MOV EAX,dword ptr [EDI + 0x4]
XOR EDX,EDX
MOV ECX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [EBP + 0x290]
DIV dword ptr [ECX + 0x20]
LEA EDX,[EAX + 0x1]
CMP EDX,ESI
JZ 0x00085328
PUSH 0x0
PUSH dword ptr [ESP + 0x1c]
PUSH ESI
PUSH EBX
CALL dword ptr [EBX + 0xc8]
MOV EDX,EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000852f0
MOV ESI,EDX
JMP 0x000851f0
MOV dword ptr [ESP + 0x20],0x0
MOV EBX,dword ptr [ESP + 0x38]
MOV ESI,dword ptr [EDX + 0x20]
MOV ECX,dword ptr [ECX + 0x20]
MOV dword ptr [ESP + 0x1c],ESI
MOV ESI,dword ptr [ESP + 0x74]
MOV dword ptr [ESP + 0x24],ECX
MOVZX ECX,byte ptr [EBX + 0x5]
MOV EBX,dword ptr [EDX + 0x2c]
SHR ESI,0x1f
MOV dword ptr [ESP + 0x3c],ECX
MOV dword ptr [ESP + 0x8],EBX
MOV dword ptr [ESP + 0x18],ESI
MOV dword ptr [ESP + 0x30],EBX
CMP ECX,0x5
JNZ 0x00085440
MOV ESI,dword ptr [ESP + 0x1c]
CMP dword ptr [ESP + 0x24],ESI
JZ 0x00085440
MOV ECX,dword ptr [ESP + 0x74]
TEST ECX,ECX
JZ 0x00085771
MOV ECX,dword ptr [ESP + 0x8]
MOV ESI,0x8
CMP dword ptr [EDI + 0x10],ECX
JBE 0x00085760
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x20]
TEST EAX,EAX
JZ 0x0008521d
MOV EAX,dword ptr [EDI + 0x18]
MOVZX EDX,byte ptr [EAX + 0x8]
CMP DL,0x2
JNZ 0x00085212
XOR EDX,EDX
CALL 0x00084c70
MOV EAX,dword ptr [EDI + 0x18]
MOVZX EDX,byte ptr [EAX + 0x8]
TEST DL,DL
JZ 0x0008521d
XOR EDX,EDX
CALL 0x0007c140
CMP ESI,0xc0a
MOV EAX,0x7
CMOVZ ESI,EAX
MOV dword ptr [EDI + 0x1c],ESI
MOV EAX,dword ptr [EDI]
TEST EAX,EAX
JZ 0x00085244
SUB ESP,0xc
PUSH dword ptr [EAX + 0xc]
MOV EBX,EBP
CALL 0x000197f0
ADD ESP,0x10
MOV EAX,dword ptr [EDI + 0x18]
CMP byte ptr [EAX + 0x9],0x0
JZ 0x00085257
SUB dword ptr [EAX + 0xc],0x1
JZ 0x00085410
MOV EAX,dword ptr [EDI + 0x14]
SUB ESP,0xc
MOV EBX,EBP
PUSH dword ptr [EAX + 0xc]
CALL 0x000197f0
ADD ESP,0x10
MOV EAX,ESI
MOV ECX,dword ptr [ESP + 0x4c]
XOR ECX,dword ptr GS:[0x14]
JNZ 0x00085787
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ESI,dword ptr [EDI + 0x1c]
LEA EAX,[ESI + -0x5]
CMP EAX,0x1
JBE 0x00085297
TEST ESI,ESI
JNZ 0x00085244
MOV EAX,dword ptr [EDI + 0x18]
MOV EBX,dword ptr [EDI + 0x4]
MOV EDX,dword ptr [EAX + 0x4]
CMP byte ptr [EAX + 0x8],0x0
MOV ECX,dword ptr [EDX]
MOV dword ptr [ESP + 0x10],ECX
MOV ECX,dword ptr [EBX + 0x4]
MOV ESI,dword ptr [ECX]
MOV dword ptr [ESP + 0x38],ESI
JNZ 0x00084fef
XOR ECX,ECX
XOR EDX,EDX
CALL 0x0007cba0
MOV EBX,dword ptr [EDI + 0x4]
MOV ESI,EAX
OR EAX,dword ptr [EDI + 0xc]
JZ 0x000857cc
TEST ESI,ESI
JZ 0x000857bf
MOV EAX,dword ptr [EDI + 0x18]
MOV ECX,dword ptr [EBX + 0x4]
MOV dword ptr [ESP + 0x20],0x1
MOV EDX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [ECX]
JMP 0x00085051
MOV EAX,dword ptr [ESP + 0x40]
CALL 0x00079770
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x40]
TEST EAX,EAX
JZ 0x00085310
MOV dword ptr [ESP + 0x2c],EDX
CALL 0x0001b1a0
MOV EDX,dword ptr [ESP + 0x2c]
ADD ESI,0x1
TEST EDX,EDX
JZ 0x00085138
MOV ESI,EDX
JMP 0x000851f0
LEA ESI,[EAX + 0x2]
CMP dword ptr [ESP + 0x14],ESI
JNC 0x0008515e
MOV EAX,dword ptr [ESP + 0x38]
XOR EDX,EDX
MOV ECX,0x1
CALL 0x000846f0
MOV EBX,dword ptr [ESP + 0x24]
MOV ESI,EAX
MOV EAX,dword ptr [EBP + 0x290]
ADD EBX,EAX
MOV dword ptr [ESP + 0x24],EAX
MOV EAX,EBX
CDQ
MOV EAX,dword ptr [ESP + 0x30]
MOV dword ptr [ESP + 0x14],EDX
MOV EDX,dword ptr [ESP + 0x34]
CMP EAX,EBX
MOV ECX,EDX
SBB ECX,dword ptr [ESP + 0x14]
MOV ECX,dword ptr [ESP + 0x24]
CMOVL EBX,EAX
MOV dword ptr [ESP + 0x18],EBX
MOV EBX,dword ptr [ESP + 0x14]
CMOVL EBX,EDX
ADD ECX,dword ptr [ESP + 0x1c]
MOV EAX,ECX
MOV dword ptr [ESP + 0x14],EBX
CDQ
TEST ESI,ESI
JNZ 0x000853a0
CMP ECX,dword ptr [ESP + 0x18]
MOV ECX,EDX
SBB ECX,EBX
JL 0x00085650
LEA ESI,[ESI]
TEST ESI,ESI
JNZ 0x000851f0
SUB ESP,0x8
MOV ECX,dword ptr [ESP + 0x30]
LEA EDX,[ESP + 0x48]
MOV EAX,dword ptr [ECX]
PUSH EDX
MOV dword ptr [ESP + 0x34],ECX
PUSH ECX
CALL dword ptr [EAX + 0x18]
MOV ESI,EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000851f0
MOV EBX,dword ptr [ESP + 0x34]
MOV ECX,dword ptr [ESP + 0x30]
CMP ECX,dword ptr [ESP + 0x40]
MOV EAX,EBX
SBB EAX,dword ptr [ESP + 0x44]
JGE 0x000853fb
SUB ESP,0x4
MOV EDX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [EDX]
PUSH EBX
PUSH ECX
PUSH EDX
CALL dword ptr [EAX + 0x10]
MOV ESI,EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000851f0
MOV EAX,dword ptr [ESP + 0x38]
XOR EDX,EDX
CALL 0x0002a940
MOV ESI,EAX
JMP 0x000855f2
CALL 0x0002b3c0
JMP 0x00085257
MOV EAX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x20],0x0
MOV ESI,0x5
JMP 0x00085051
MOV EBX,dword ptr [ESP + 0x74]
TEST EBX,EBX
JZ 0x0008551a
MOV ECX,dword ptr [EDI + 0x10]
MOV EDX,ECX
CMP ECX,dword ptr [ESP + 0x8]
JA 0x0008551d
LEA EDX,[ESP + 0x40]
XOR EBX,EBX
MOV ESI,ECX
MOV dword ptr [ESP + 0x14],EDX
LEA EDX,[EDI + 0x18]
MOV dword ptr [ESP + 0x28],EDX
JMP 0x0008549e
MOV EAX,dword ptr [EDI + 0x10]
ADD EBX,0x1
LEA ESI,[EAX + 0x1]
MOV dword ptr [EDI + 0x10],ESI
CMP dword ptr [ESP + 0x74],EBX
JG 0x0008548d
CMP byte ptr [ESP + 0x18],0x0
JZ 0x00085510
CMP ESI,dword ptr [ESP + 0x8]
JA 0x00085510
TEST EDX,EDX
JNZ 0x00085570
MOV EAX,dword ptr [EDI + 0x18]
MOV ECX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [EBP + 0x290]
XOR EDX,EDX
DIV dword ptr [ECX + 0x20]
XOR EDX,EDX
ADD EAX,0x1
CMP EAX,ESI
JZ 0x00085470
PUSH 0x2
PUSH dword ptr [ESP + 0x18]
PUSH ESI
MOV EAX,dword ptr [ESP + 0x1c]
PUSH EAX
CALL dword ptr [EAX + 0xc8]
MOV EDX,EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00085470
SUB ESP,0x8
LEA EAX,[EDI + 0x4]
MOV ECX,ESI
PUSH 0x0
MOV EDX,dword ptr [ESP + 0x4c]
PUSH dword ptr [EDX + 0x4]
MOV EDX,dword ptr [ESP + 0x38]
CALL 0x000797c0
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x50]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00085470
MOV dword ptr [ESP + 0x2c],EDX
CALL 0x0001b1a0
MOV EDX,dword ptr [ESP + 0x2c]
JMP 0x00085470
MOV ESI,EDX
TEST EDX,EDX
JNZ 0x0008506e
MOV EDX,dword ptr [EDI + 0x10]
MOV ECX,dword ptr [ESP + 0x8]
MOV EAX,ECX
MOV dword ptr [EDI + 0x24],ECX
SUB EAX,EDX
ADD EAX,0x1
MOV dword ptr [EDI + 0x20],EAX
CMP EDX,ECX
JA 0x00085077
MOV ESI,dword ptr [EDI + 0x28]
TEST ESI,ESI
JNZ 0x00085555
MOV EAX,dword ptr [EDI + 0x18]
MOV EAX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [EAX]
MOV EDX,dword ptr [EAX + 0x58]
MOV dword ptr [EDI + 0x2c],EDX
MOV dword ptr [EAX + 0x58],EDI
MOV dword ptr [EDI + 0x28],0x1
MOV EAX,dword ptr [ESP + 0x20]
XOR ESI,ESI
TEST EAX,EAX
JNZ 0x000851f8
JMP 0x0008522b
MOV ESI,EDX
JMP 0x0008506e
CMP byte ptr [EBX + 0x9],0x0
JZ 0x0008558d
MOV EAX,EBX
CALL 0x0002b330
MOV EAX,dword ptr [EBX + 0x4]
MOV dword ptr [EAX + 0x2c],0x0
MOV EAX,dword ptr [EBX + 0x4]
MOV EDX,dword ptr [EAX + 0x2c]
TEST EDX,EDX
JNZ 0x0008562a
CALL 0x0007cac0
CMP byte ptr [EBX + 0x9],0x0
MOV ESI,EAX
JNZ 0x0008578c
TEST EAX,EAX
SETZ DL
CMP EAX,0x65
SETZ AL
OR EDX,EAX
TEST DL,DL
JZ 0x000851f0
JMP 0x0008563d
MOV EAX,dword ptr [ESP + 0x1c]
MOV EBX,dword ptr [ESP + 0x38]
XOR ECX,ECX
CDQ
IDIV dword ptr [ESP + 0x24]
XOR EDX,EDX
IMUL EAX,dword ptr [ESP + 0x30]
MOV dword ptr [EBX + 0x18],EAX
MOV EAX,EBX
CALL 0x000846f0
MOV ESI,EAX
TEST ESI,ESI
JNZ 0x000851f0
MOV EAX,dword ptr [EDI + 0x4]
CMP byte ptr [EAX + 0x8],0x0
JZ 0x00085614
XOR EDX,EDX
CALL 0x0007c140
MOV ESI,EAX
TEST EAX,EAX
JNZ 0x000851f0
MOV EAX,dword ptr [ESP + 0x20]
MOV ESI,0x65
TEST EAX,EAX
JNZ 0x000851f8
JMP 0x0008522b
CMP byte ptr [EBX + 0x9],0x0
JZ 0x0008563d
SUB dword ptr [EBX + 0xc],0x1
JNZ 0x0008563d
MOV EAX,EBX
CALL 0x0002b3c0
MOV EBX,dword ptr [EDI + 0x4]
MOV dword ptr [ESP + 0x30],0x1
JMP 0x00085086
LEA EBX,[ESP + 0x40]
MOV dword ptr [ESP + 0x2c],EDI
MOV ESI,EAX
MOV EDI,EDX
MOV dword ptr [ESP + 0x24],EBX
MOV dword ptr [ESP + 0x40],0x0
MOV EBX,EBP
PUSH 0x0
PUSH dword ptr [ESP + 0x28]
SUB ESP,0x8
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x1c]
PUSH EDI
PUSH ESI
CALL 0x000f41f0
ADD ESP,0x18
ADD EAX,0x1
PUSH EAX
MOV EAX,dword ptr [ESP + 0x1c]
PUSH EAX
CALL dword ptr [EAX + 0xc8]
MOV EBX,EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00085700
SUB ESP,0xc
MOV ECX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [ECX]
PUSH EDI
PUSH ESI
PUSH dword ptr [ESP + 0x30]
MOV EDX,dword ptr [ESP + 0x58]
PUSH dword ptr [EDX + 0x4]
PUSH ECX
CALL dword ptr [EAX + 0xc]
MOV EBX,EAX
MOV EAX,dword ptr [ESP + 0x60]
ADD ESP,0x20
TEST EAX,EAX
JNZ 0x000856f0
ADD ESI,dword ptr [ESP + 0x8]
ADC EDI,dword ptr [ESP + 0xc]
TEST EBX,EBX
JNZ 0x000856dc
CMP ESI,dword ptr [ESP + 0x18]
MOV EAX,EDI
SBB EAX,dword ptr [ESP + 0x14]
JL 0x00085660
MOV ESI,EBX
MOV EDI,dword ptr [ESP + 0x2c]
JMP 0x000853a0
CALL 0x0001b1a0
JMP 0x000856c4
MOV EAX,dword ptr [ESP + 0x40]
TEST EAX,EAX
JNZ 0x000856f0
MOV ESI,EBX
MOV EDI,dword ptr [ESP + 0x2c]
JMP 0x000851f0
MOV ECX,dword ptr [EDI + 0x4]
MOV EAX,dword ptr [EDI + 0x18]
MOV dword ptr [EDI + 0xc],0x1
MOV ECX,dword ptr [ECX + 0x4]
MOV EDX,dword ptr [EAX + 0x4]
MOV EBX,dword ptr [ECX]
JMP 0x0008518c
MOV EAX,dword ptr [EDI + 0x18]
MOV ECX,dword ptr [EBX + 0x4]
MOV EDX,dword ptr [EAX + 0x4]
MOV EBX,dword ptr [ECX]
JMP 0x0008518c
MOV EAX,dword ptr [EDI + 0x4]
MOV EDX,0x2
CALL 0x0007d450
MOV ESI,EAX
TEST EAX,EAX
JZ 0x000850b8
JMP 0x000851f0
MOV EDX,dword ptr [ESP + 0x20]
TEST EDX,EDX
JZ 0x0008522b
JMP 0x000851fb
MOV EBX,dword ptr [ESP + 0x20]
MOV ESI,0x8
TEST EBX,EBX
JNZ 0x000851fb
JMP 0x0008522b
CALL 0x000f4bf0
MOV EAX,dword ptr [EBX + 0xc]
SUB EAX,0x1
TEST ESI,ESI
SETZ CL
CMP ESI,0x65
MOV dword ptr [EBX + 0xc],EAX
SETZ DL
OR EDX,ECX
TEST EAX,EAX
JNZ 0x000855c3
MOV EAX,EBX
MOV byte ptr [ESP + 0x8],DL
CALL 0x0002b3c0
MOVZX EDX,byte ptr [ESP + 0x8]
JMP 0x000855c3
MOV dword ptr [ESP + 0x20],0x1
JMP 0x0008501f
MOV EAX,dword ptr [EDI + 0x18]
MOV dword ptr [ESP + 0x20],0x1
MOV EDX,dword ptr [EAX + 0x4]
JMP 0x00084ffe
(translation_unit "int FUN_00084f50(int *param_1,int param_2)\n\n{\n  longlong lVar1;\n  longlong lVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int *piVar8;\n  char cVar9;\n  int *piVar10;\n  int iVar11;\n  int unaff_EBP;\n  int in_GS_OFFSET;\n  bool bVar12;\n  uint *puVar13;\n  undefined4 uVar14;\n  int local_5c;\n  uint local_50;\n  int local_4c;\n  uint local_48;\n  uint local_3c;\n  int local_38;\n  int local_34;\n  uint local_2c;\n  int local_28;\n  int local_20;\n  \n  FUN_00019701();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  FUN_000197c0(*(undefined4 *)(param_1[5] + 0xc));\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    FUN_0002b330();\n  }\n  if (*param_1 == 0) {\n    iVar3 = param_1[7];\n    if ((1 < iVar3 - 5U) && (iVar3 != 0)) goto LAB_00085244;\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    local_34 = *piVar8;\n    if (*(char *)(iVar11 + 8) != '\0') goto LAB_00084fef;\nLAB_000852b9:\n    iVar3 = FUN_0007cba0();\n    iVar7 = param_1[1];\n    if (iVar3 == 0 && param_1[3] == 0) {\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }\n    if (iVar3 != 0) {\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }\n    local_4c = 1;\nLAB_0008501f:\n    if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }\n    iVar11 = param_1[6];\n    piVar8 = *(int **)(iVar7 + 4);\n    piVar10 = *(int **)(iVar11 + 4);\n    iVar3 = *piVar8;\nLAB_0008518c:\n    local_50 = piVar10[8];\n    local_48 = piVar8[8];\n    cVar9 = *(char *)(iVar3 + 5);\n    local_3c = piVar10[0xb];\n    if ((cVar9 != '\x05') || (local_48 == local_50)) {\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }\n    if (param_2 == 0) {\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }\n    iVar3 = 8;\n    if (local_3c < (uint)param_1[4]) {\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }\n    if (local_4c != 0) goto LAB_000851fb;\n    goto LAB_0008522b;\n  }\n  FUN_000197c0(*(undefined4 *)(*param_1 + 0xc));\n  iVar3 = param_1[7];\n  if ((iVar3 - 5U < 2) || (iVar3 == 0)) {\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    iVar7 = *piVar8;\n    local_34 = iVar7;\n    if ((*param_1 != 0) && ((char)piVar10[5] == '\x02')) {\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }\n    if (*(char *)(iVar11 + 8) == '\0') goto LAB_000852b9;\nLAB_00084fef:\n    local_4c = param_1[3];\n    if (local_4c == 0) {\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }\n    local_4c = 0;\n    iVar3 = local_34;\n    goto LAB_0008518c;\n  }\n  goto LAB_0008522e;\n  while( true ) {\n    bVar12 = CARRY4(uVar4,local_50);\n    uVar4 = uVar4 + local_50;\n    iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12;\n    if ((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)) break;\nLAB_00085660:\n    local_2c = 0;\n    uVar14 = 0;\n    puVar13 = &local_2c;\n    iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f);\n    iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14);\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }\n  }\nLAB_000853a0:\n  if (((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))) {\n    iVar3 = FUN_0002a940();\nLAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;\n    iVar3 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    iVar11 = param_1[6];\nLAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);\n    if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar9 != '\0') {\n      FUN_0007c140();\n    }\n  }\n  else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }\n  if (iVar3 == 0xc0a) {\n    iVar3 = 7;\n  }\nLAB_0008522b:\n  param_1[7] = iVar3;\nLAB_0008522e:\n  if (*param_1 != 0) {\n    FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));\n  }\nLAB_00085244:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar8 = (int *)(param_1[6] + 0xc);\n    *piVar8 = *piVar8 + -1;\n    if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }\n  }\n  FUN_000197f0(*(undefined4 *)(param_1[5] + 0xc));\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f4bf0();\n  }\n  return iVar3;\n}\n\n" (function_definition "int FUN_00084f50(int *param_1,int param_2)\n\n{\n  longlong lVar1;\n  longlong lVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int *piVar8;\n  char cVar9;\n  int *piVar10;\n  int iVar11;\n  int unaff_EBP;\n  int in_GS_OFFSET;\n  bool bVar12;\n  uint *puVar13;\n  undefined4 uVar14;\n  int local_5c;\n  uint local_50;\n  int local_4c;\n  uint local_48;\n  uint local_3c;\n  int local_38;\n  int local_34;\n  uint local_2c;\n  int local_28;\n  int local_20;\n  \n  FUN_00019701();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  FUN_000197c0(*(undefined4 *)(param_1[5] + 0xc));\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    FUN_0002b330();\n  }\n  if (*param_1 == 0) {\n    iVar3 = param_1[7];\n    if ((1 < iVar3 - 5U) && (iVar3 != 0)) goto LAB_00085244;\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    local_34 = *piVar8;\n    if (*(char *)(iVar11 + 8) != '\0') goto LAB_00084fef;\nLAB_000852b9:\n    iVar3 = FUN_0007cba0();\n    iVar7 = param_1[1];\n    if (iVar3 == 0 && param_1[3] == 0) {\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }\n    if (iVar3 != 0) {\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }\n    local_4c = 1;\nLAB_0008501f:\n    if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }\n    iVar11 = param_1[6];\n    piVar8 = *(int **)(iVar7 + 4);\n    piVar10 = *(int **)(iVar11 + 4);\n    iVar3 = *piVar8;\nLAB_0008518c:\n    local_50 = piVar10[8];\n    local_48 = piVar8[8];\n    cVar9 = *(char *)(iVar3 + 5);\n    local_3c = piVar10[0xb];\n    if ((cVar9 != '\x05') || (local_48 == local_50)) {\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }\n    if (param_2 == 0) {\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }\n    iVar3 = 8;\n    if (local_3c < (uint)param_1[4]) {\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }\n    if (local_4c != 0) goto LAB_000851fb;\n    goto LAB_0008522b;\n  }\n  FUN_000197c0(*(undefined4 *)(*param_1 + 0xc));\n  iVar3 = param_1[7];\n  if ((iVar3 - 5U < 2) || (iVar3 == 0)) {\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    iVar7 = *piVar8;\n    local_34 = iVar7;\n    if ((*param_1 != 0) && ((char)piVar10[5] == '\x02')) {\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }\n    if (*(char *)(iVar11 + 8) == '\0') goto LAB_000852b9;\nLAB_00084fef:\n    local_4c = param_1[3];\n    if (local_4c == 0) {\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }\n    local_4c = 0;\n    iVar3 = local_34;\n    goto LAB_0008518c;\n  }\n  goto LAB_0008522e;\n  while( true ) {\n    bVar12 = CARRY4(uVar4,local_50);\n    uVar4 = uVar4 + local_50;\n    iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12;\n    if ((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)) break;\nLAB_00085660:\n    local_2c = 0;\n    uVar14 = 0;\n    puVar13 = &local_2c;\n    iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f);\n    iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14);\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }\n  }\nLAB_000853a0:\n  if (((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))) {\n    iVar3 = FUN_0002a940();\nLAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;\n    iVar3 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    iVar11 = param_1[6];\nLAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);\n    if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar9 != '\0') {\n      FUN_0007c140();\n    }\n  }\n  else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }\n  if (iVar3 == 0xc0a) {\n    iVar3 = 7;\n  }\nLAB_0008522b:\n  param_1[7] = iVar3;\nLAB_0008522e:\n  if (*param_1 != 0) {\n    FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));\n  }\nLAB_00085244:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar8 = (int *)(param_1[6] + 0xc);\n    *piVar8 = *piVar8 + -1;\n    if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }\n  }\n  FUN_000197f0(*(undefined4 *)(param_1[5] + 0xc));\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f4bf0();\n  }\n  return iVar3;\n}" primitive_type (function_declarator "FUN_00084f50(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  longlong lVar1;\n  longlong lVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int *piVar8;\n  char cVar9;\n  int *piVar10;\n  int iVar11;\n  int unaff_EBP;\n  int in_GS_OFFSET;\n  bool bVar12;\n  uint *puVar13;\n  undefined4 uVar14;\n  int local_5c;\n  uint local_50;\n  int local_4c;\n  uint local_48;\n  uint local_3c;\n  int local_38;\n  int local_34;\n  uint local_2c;\n  int local_28;\n  int local_20;\n  \n  FUN_00019701();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  FUN_000197c0(*(undefined4 *)(param_1[5] + 0xc));\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    FUN_0002b330();\n  }\n  if (*param_1 == 0) {\n    iVar3 = param_1[7];\n    if ((1 < iVar3 - 5U) && (iVar3 != 0)) goto LAB_00085244;\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    local_34 = *piVar8;\n    if (*(char *)(iVar11 + 8) != '\0') goto LAB_00084fef;\nLAB_000852b9:\n    iVar3 = FUN_0007cba0();\n    iVar7 = param_1[1];\n    if (iVar3 == 0 && param_1[3] == 0) {\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }\n    if (iVar3 != 0) {\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }\n    local_4c = 1;\nLAB_0008501f:\n    if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }\n    iVar11 = param_1[6];\n    piVar8 = *(int **)(iVar7 + 4);\n    piVar10 = *(int **)(iVar11 + 4);\n    iVar3 = *piVar8;\nLAB_0008518c:\n    local_50 = piVar10[8];\n    local_48 = piVar8[8];\n    cVar9 = *(char *)(iVar3 + 5);\n    local_3c = piVar10[0xb];\n    if ((cVar9 != '\x05') || (local_48 == local_50)) {\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }\n    if (param_2 == 0) {\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }\n    iVar3 = 8;\n    if (local_3c < (uint)param_1[4]) {\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }\n    if (local_4c != 0) goto LAB_000851fb;\n    goto LAB_0008522b;\n  }\n  FUN_000197c0(*(undefined4 *)(*param_1 + 0xc));\n  iVar3 = param_1[7];\n  if ((iVar3 - 5U < 2) || (iVar3 == 0)) {\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    iVar7 = *piVar8;\n    local_34 = iVar7;\n    if ((*param_1 != 0) && ((char)piVar10[5] == '\x02')) {\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }\n    if (*(char *)(iVar11 + 8) == '\0') goto LAB_000852b9;\nLAB_00084fef:\n    local_4c = param_1[3];\n    if (local_4c == 0) {\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }\n    local_4c = 0;\n    iVar3 = local_34;\n    goto LAB_0008518c;\n  }\n  goto LAB_0008522e;\n  while( true ) {\n    bVar12 = CARRY4(uVar4,local_50);\n    uVar4 = uVar4 + local_50;\n    iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12;\n    if ((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)) break;\nLAB_00085660:\n    local_2c = 0;\n    uVar14 = 0;\n    puVar13 = &local_2c;\n    iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f);\n    iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14);\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }\n  }\nLAB_000853a0:\n  if (((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))) {\n    iVar3 = FUN_0002a940();\nLAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;\n    iVar3 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    iVar11 = param_1[6];\nLAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);\n    if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar9 != '\0') {\n      FUN_0007c140();\n    }\n  }\n  else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }\n  if (iVar3 == 0xc0a) {\n    iVar3 = 7;\n  }\nLAB_0008522b:\n  param_1[7] = iVar3;\nLAB_0008522e:\n  if (*param_1 != 0) {\n    FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));\n  }\nLAB_00085244:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar8 = (int *)(param_1[6] + 0xc);\n    *piVar8 = *piVar8 + -1;\n    if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }\n  }\n  FUN_000197f0(*(undefined4 *)(param_1[5] + 0xc));\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f4bf0();\n  }\n  return iVar3;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "longlong lVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "char cVar9;" primitive_type identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "uint *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined4 uVar14;" type_identifier identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "uint local_50;" type_identifier identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "FUN_00019701();" (call_expression "FUN_00019701()" 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 "FUN_000197c0(*(undefined4 *)(param_1[5] + 0xc));" (call_expression "FUN_000197c0(*(undefined4 *)(param_1[5] + 0xc))" identifier (argument_list "(*(undefined4 *)(param_1[5] + 0xc))" ( (pointer_expression "*(undefined4 *)(param_1[5] + 0xc)" * (cast_expression "(undefined4 *)(param_1[5] + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[5] + 0xc)" ( (binary_expression "param_1[5] + 0xc" (subscript_expression "param_1[5]" identifier [ number_literal ]) + number_literal) )))) ))) ;) (if_statement "if (*(char *)(param_1[6] + 9) != '\0') {\n    FUN_0002b330();\n  }" if (parenthesized_expression "(*(char *)(param_1[6] + 9) != '\0')" ( (binary_expression "*(char *)(param_1[6] + 9) != '\0'" (pointer_expression "*(char *)(param_1[6] + 9)" * (cast_expression "(char *)(param_1[6] + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + 9)" ( (binary_expression "param_1[6] + 9" (subscript_expression "param_1[6]" identifier [ number_literal ]) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_0002b330();\n  }" { (expression_statement "FUN_0002b330();" (call_expression "FUN_0002b330()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (*param_1 == 0) {\n    iVar3 = param_1[7];\n    if ((1 < iVar3 - 5U) && (iVar3 != 0)) goto LAB_00085244;\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    local_34 = *piVar8;\n    if (*(char *)(iVar11 + 8) != '\0') goto LAB_00084fef;\nLAB_000852b9:\n    iVar3 = FUN_0007cba0();\n    iVar7 = param_1[1];\n    if (iVar3 == 0 && param_1[3] == 0) {\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }\n    if (iVar3 != 0) {\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }\n    local_4c = 1;\nLAB_0008501f:\n    if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }\n    iVar11 = param_1[6];\n    piVar8 = *(int **)(iVar7 + 4);\n    piVar10 = *(int **)(iVar11 + 4);\n    iVar3 = *piVar8;\nLAB_0008518c:\n    local_50 = piVar10[8];\n    local_48 = piVar8[8];\n    cVar9 = *(char *)(iVar3 + 5);\n    local_3c = piVar10[0xb];\n    if ((cVar9 != '\x05') || (local_48 == local_50)) {\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }\n    if (param_2 == 0) {\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }\n    iVar3 = 8;\n    if (local_3c < (uint)param_1[4]) {\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }\n    if (local_4c != 0) goto LAB_000851fb;\n    goto LAB_0008522b;\n  }" if (parenthesized_expression "(*param_1 == 0)" ( (binary_expression "*param_1 == 0" (pointer_expression "*param_1" * identifier) == number_literal) )) (compound_statement "{\n    iVar3 = param_1[7];\n    if ((1 < iVar3 - 5U) && (iVar3 != 0)) goto LAB_00085244;\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    local_34 = *piVar8;\n    if (*(char *)(iVar11 + 8) != '\0') goto LAB_00084fef;\nLAB_000852b9:\n    iVar3 = FUN_0007cba0();\n    iVar7 = param_1[1];\n    if (iVar3 == 0 && param_1[3] == 0) {\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }\n    if (iVar3 != 0) {\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }\n    local_4c = 1;\nLAB_0008501f:\n    if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }\n    iVar11 = param_1[6];\n    piVar8 = *(int **)(iVar7 + 4);\n    piVar10 = *(int **)(iVar11 + 4);\n    iVar3 = *piVar8;\nLAB_0008518c:\n    local_50 = piVar10[8];\n    local_48 = piVar8[8];\n    cVar9 = *(char *)(iVar3 + 5);\n    local_3c = piVar10[0xb];\n    if ((cVar9 != '\x05') || (local_48 == local_50)) {\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }\n    if (param_2 == 0) {\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }\n    iVar3 = 8;\n    if (local_3c < (uint)param_1[4]) {\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }\n    if (local_4c != 0) goto LAB_000851fb;\n    goto LAB_0008522b;\n  }" { (expression_statement "iVar3 = param_1[7];" (assignment_expression "iVar3 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (if_statement "if ((1 < iVar3 - 5U) && (iVar3 != 0)) goto LAB_00085244;" if (parenthesized_expression "((1 < iVar3 - 5U) && (iVar3 != 0))" ( (binary_expression "(1 < iVar3 - 5U) && (iVar3 != 0)" (parenthesized_expression "(1 < iVar3 - 5U)" ( (binary_expression "1 < iVar3 - 5U" number_literal < (binary_expression "iVar3 - 5U" identifier - number_literal)) )) && (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_00085244;" goto statement_identifier ;)) (expression_statement "iVar11 = param_1[6];" (assignment_expression "iVar11 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "piVar10 = *(int **)(iVar11 + 4);" (assignment_expression "piVar10 = *(int **)(iVar11 + 4)" identifier = (pointer_expression "*(int **)(iVar11 + 4)" * (cast_expression "(int **)(iVar11 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_5c = *piVar10;" (assignment_expression "local_5c = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "piVar8 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar8 = *(int **)(param_1[1] + 4)" identifier = (pointer_expression "*(int **)(param_1[1] + 4)" * (cast_expression "(int **)(param_1[1] + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[1] + 4)" ( (binary_expression "param_1[1] + 4" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "local_34 = *piVar8;" (assignment_expression "local_34 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (if_statement "if (*(char *)(iVar11 + 8) != '\0') goto LAB_00084fef;" if (parenthesized_expression "(*(char *)(iVar11 + 8) != '\0')" ( (binary_expression "*(char *)(iVar11 + 8) != '\0'" (pointer_expression "*(char *)(iVar11 + 8)" * (cast_expression "(char *)(iVar11 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 8)" ( (binary_expression "iVar11 + 8" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00084fef;" goto statement_identifier ;)) (labeled_statement "LAB_000852b9:\n    iVar3 = FUN_0007cba0();" statement_identifier : (expression_statement "iVar3 = FUN_0007cba0();" (assignment_expression "iVar3 = FUN_0007cba0()" identifier = (call_expression "FUN_0007cba0()" identifier (argument_list "()" ( )))) ;)) (expression_statement "iVar7 = param_1[1];" (assignment_expression "iVar7 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 == 0 && param_1[3] == 0) {\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }" if (parenthesized_expression "(iVar3 == 0 && param_1[3] == 0)" ( (binary_expression "iVar3 == 0 && param_1[3] == 0" (binary_expression "iVar3 == 0" identifier == number_literal) && (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) == number_literal)) )) (compound_statement "{\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }" { (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00084ffe;" goto statement_identifier ;) })) (if_statement "if (iVar3 != 0) {\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }" { (expression_statement "piVar8 = *(int **)(iVar7 + 4);" (assignment_expression "piVar8 = *(int **)(iVar7 + 4)" identifier = (pointer_expression "*(int **)(iVar7 + 4)" * (cast_expression "(int **)(iVar7 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" identifier = number_literal) ;) (expression_statement "piVar10 = *(int **)(param_1[6] + 4);" (assignment_expression "piVar10 = *(int **)(param_1[6] + 4)" identifier = (pointer_expression "*(int **)(param_1[6] + 4)" * (cast_expression "(int **)(param_1[6] + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[6] + 4)" ( (binary_expression "param_1[6] + 4" (subscript_expression "param_1[6]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "iVar7 = *piVar8;" (assignment_expression "iVar7 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (goto_statement "goto LAB_00085051;" goto statement_identifier ;) })) (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" identifier = number_literal) ;) (labeled_statement "LAB_0008501f:\n    if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }" statement_identifier : (if_statement "if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }" if (parenthesized_expression "(param_1[3] == 0)" ( (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }" { (expression_statement "iVar3 = FUN_0007cba0();" (assignment_expression "iVar3 = FUN_0007cba0()" identifier = (call_expression "FUN_0007cba0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }" { (expression_statement "iVar11 = param_1[6];" (assignment_expression "iVar11 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "param_1[3] = 1;" (assignment_expression "param_1[3] = 1" (subscript_expression "param_1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar8 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar8 = *(int **)(param_1[1] + 4)" identifier = (pointer_expression "*(int **)(param_1[1] + 4)" * (cast_expression "(int **)(param_1[1] + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[1] + 4)" ( (binary_expression "param_1[1] + 4" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "piVar10 = *(int **)(iVar11 + 4);" (assignment_expression "piVar10 = *(int **)(iVar11 + 4)" identifier = (pointer_expression "*(int **)(iVar11 + 4)" * (cast_expression "(int **)(iVar11 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *piVar8;" (assignment_expression "iVar3 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (goto_statement "goto LAB_0008518c;" goto statement_identifier ;) })) (labeled_statement "LAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);" statement_identifier : (expression_statement "piVar10 = *(int **)(param_1[6] + 4);" (assignment_expression "piVar10 = *(int **)(param_1[6] + 4)" identifier = (pointer_expression "*(int **)(param_1[6] + 4)" * (cast_expression "(int **)(param_1[6] + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[6] + 4)" ( (binary_expression "param_1[6] + 4" (subscript_expression "param_1[6]" identifier [ number_literal ]) + number_literal) ))))) ;)) (expression_statement "piVar8 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar8 = *(int **)(param_1[1] + 4)" identifier = (pointer_expression "*(int **)(param_1[1] + 4)" * (cast_expression "(int **)(param_1[1] + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[1] + 4)" ( (binary_expression "param_1[1] + 4" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "iVar7 = *piVar8;" (assignment_expression "iVar7 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (labeled_statement "LAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);" statement_identifier : (expression_statement "cVar9 = *(char *)(iVar7 + 5);" (assignment_expression "cVar9 = *(char *)(iVar7 + 5)" identifier = (pointer_expression "*(char *)(iVar7 + 5)" * (cast_expression "(char *)(iVar7 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 5)" ( (binary_expression "iVar7 + 5" identifier + number_literal) ))))) ;)) (expression_statement "local_50 = piVar10[8];" (assignment_expression "local_50 = piVar10[8]" identifier = (subscript_expression "piVar10[8]" identifier [ number_literal ])) ;) (expression_statement "local_48 = piVar8[8];" (assignment_expression "local_48 = piVar8[8]" identifier = (subscript_expression "piVar8[8]" identifier [ number_literal ])) ;) (expression_statement "local_3c = piVar10[0xb];" (assignment_expression "local_3c = piVar10[0xb]" identifier = (subscript_expression "piVar10[0xb]" identifier [ number_literal ])) ;) (labeled_statement "LAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;" statement_identifier : (if_statement "if (iVar3 != 0x65) goto LAB_000851f0;" if (parenthesized_expression "(iVar3 != 0x65)" ( (binary_expression "iVar3 != 0x65" identifier != number_literal) )) (goto_statement "goto LAB_000851f0;" goto statement_identifier ;))) (labeled_statement "LAB_00085077:\n      iVar11 = param_1[1];" statement_identifier : (expression_statement "iVar11 = param_1[1];" (assignment_expression "iVar11 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;)) (if_statement "if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }" if (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) )) (compound_statement "{\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }" { (if_statement "if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }" if (parenthesized_expression "(*(char *)(iVar11 + 9) != '\0')" ( (binary_expression "*(char *)(iVar11 + 9) != '\0'" (pointer_expression "*(char *)(iVar11 + 9)" * (cast_expression "(char *)(iVar11 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 9)" ( (binary_expression "iVar11 + 9" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          FUN_0002b330();\n        }" { (expression_statement "FUN_0002b330();" (call_expression "FUN_0002b330()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0" (pointer_expression "*(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c)" * (cast_expression "(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar11 + 4) + 0x2c)" ( (binary_expression "*(int *)(iVar11 + 4) + 0x2c" (pointer_expression "*(int *)(iVar11 + 4)" * (cast_expression "(int *)(iVar11 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) (if_statement "if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }" if (parenthesized_expression "(*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0)" ( (binary_expression "*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0" (pointer_expression "*(int *)(*(int *)(iVar11 + 4) + 0x2c)" * (cast_expression "(int *)(*(int *)(iVar11 + 4) + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar11 + 4) + 0x2c)" ( (binary_expression "*(int *)(iVar11 + 4) + 0x2c" (pointer_expression "*(int *)(iVar11 + 4)" * (cast_expression "(int *)(iVar11 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }" { (expression_statement "iVar3 = FUN_0007cac0();" (assignment_expression "iVar3 = FUN_0007cac0()" identifier = (call_expression "FUN_0007cac0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }" if (parenthesized_expression "(*(char *)(iVar11 + 9) == '\0')" ( (binary_expression "*(char *)(iVar11 + 9) == '\0'" (pointer_expression "*(char *)(iVar11 + 9)" * (cast_expression "(char *)(iVar11 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 9)" ( (binary_expression "iVar11 + 9" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }" { (expression_statement "bVar12 = iVar3 == 0 || iVar3 == 0x65;" (assignment_expression "bVar12 = iVar3 == 0 || iVar3 == 0x65" identifier = (binary_expression "iVar3 == 0 || iVar3 == 0x65" (binary_expression "iVar3 == 0" identifier == number_literal) || (binary_expression "iVar3 == 0x65" identifier == number_literal))) ;) }) (else_clause "else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }" else (compound_statement "{\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }" { (expression_statement "iVar7 = *(int *)(iVar11 + 0xc) + -1;" (assignment_expression "iVar7 = *(int *)(iVar11 + 0xc) + -1" identifier = (binary_expression "*(int *)(iVar11 + 0xc) + -1" (pointer_expression "*(int *)(iVar11 + 0xc)" * (cast_expression "(int *)(iVar11 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0xc)" ( (binary_expression "iVar11 + 0xc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(iVar11 + 0xc) = iVar7;" (assignment_expression "*(int *)(iVar11 + 0xc) = iVar7" (pointer_expression "*(int *)(iVar11 + 0xc)" * (cast_expression "(int *)(iVar11 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0xc)" ( (binary_expression "iVar11 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "bVar12 = iVar3 == 0x65 || iVar3 == 0;" (assignment_expression "bVar12 = iVar3 == 0x65 || iVar3 == 0" identifier = (binary_expression "iVar3 == 0x65 || iVar3 == 0" (binary_expression "iVar3 == 0x65" identifier == number_literal) || (binary_expression "iVar3 == 0" identifier == number_literal))) ;) (if_statement "if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n              FUN_0002b3c0();\n            }" { (expression_statement "FUN_0002b3c0();" (call_expression "FUN_0002b3c0()" identifier (argument_list "()" ( ))) ;) })) }))) (if_statement "if (!bVar12) goto LAB_000851f0;" if (parenthesized_expression "(!bVar12)" ( (unary_expression "!bVar12" ! identifier) )) (goto_statement "goto LAB_000851f0;" goto statement_identifier ;)) }) (else_clause "else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }" else (if_statement "if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }" if (parenthesized_expression "(*(char *)(iVar11 + 9) != '\0')" ( (binary_expression "*(char *)(iVar11 + 9) != '\0'" (pointer_expression "*(char *)(iVar11 + 9)" * (cast_expression "(char *)(iVar11 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 9)" ( (binary_expression "iVar11 + 9" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }" { (expression_statement "piVar8 = (int *)(iVar11 + 0xc);" (assignment_expression "piVar8 = (int *)(iVar11 + 0xc)" identifier = (cast_expression "(int *)(iVar11 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0xc)" ( (binary_expression "iVar11 + 0xc" identifier + number_literal) )))) ;) (expression_statement "*piVar8 = *piVar8 + -1;" (assignment_expression "*piVar8 = *piVar8 + -1" (pointer_expression "*piVar8" * identifier) = (binary_expression "*piVar8 + -1" (pointer_expression "*piVar8" * identifier) + number_literal)) ;) (if_statement "if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }" if (parenthesized_expression "(*piVar8 == 0)" ( (binary_expression "*piVar8 == 0" (pointer_expression "*piVar8" * identifier) == number_literal) )) (compound_statement "{\n            FUN_0002b3c0();\n          }" { (expression_statement "FUN_0002b3c0();" (call_expression "FUN_0002b3c0()" identifier (argument_list "()" ( ))) ;) })) })))) (expression_statement "local_3c = 1;" (assignment_expression "local_3c = 1" identifier = number_literal) ;) })) (expression_statement "iVar3 = FUN_0007d3e0();" (assignment_expression "iVar3 = FUN_0007d3e0()" identifier = (call_expression "FUN_0007d3e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }" { (if_statement "if (*param_1 != 0) {\n          FUN_00039e00();\n        }" if (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n          FUN_00039e00();\n        }" { (expression_statement "FUN_00039e00();" (call_expression "FUN_00039e00()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }" if (parenthesized_expression "((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0))" ( (binary_expression "(cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)" (parenthesized_expression "(cVar9 != '\x05')" ( (binary_expression "cVar9 != '\x05'" identifier != (char_literal "'\x05'" ' escape_sequence ')) )) || (parenthesized_expression "(iVar3 = FUN_0007d450(), iVar3 == 0)" ( (comma_expression "iVar3 = FUN_0007d450(), iVar3 == 0" (assignment_expression "iVar3 = FUN_0007d450()" identifier = (call_expression "FUN_0007d450()" identifier (argument_list "()" ( )))) , (binary_expression "iVar3 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }" { (if_statement "if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }" if (parenthesized_expression "((int)local_48 <= (int)local_50)" ( (binary_expression "(int)local_48 <= (int)local_50" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }" { (expression_statement "*(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;" (assignment_expression "*(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c" (pointer_expression "*(uint *)(local_34 + 0x18)" * (cast_expression "(uint *)(local_34 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_34 + 0x18)" ( (binary_expression "local_34 + 0x18" identifier + number_literal) )))) = (binary_expression "((int)local_50 / (int)local_48) * local_3c" (parenthesized_expression "((int)local_50 / (int)local_48)" ( (binary_expression "(int)local_50 / (int)local_48" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) / (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier)) )) * identifier)) ;) (expression_statement "iVar3 = FUN_000846f0();" (assignment_expression "iVar3 = FUN_000846f0()" identifier = (call_expression "FUN_000846f0()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_000855f2;" goto statement_identifier ;) })) (expression_statement "uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);" (assignment_expression "uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50)" identifier = (binary_expression "(int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50)" (cast_expression "(int)((local_3c - 1) + (int)local_48 / (int)local_50)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((local_3c - 1) + (int)local_48 / (int)local_50)" ( (binary_expression "(local_3c - 1) + (int)local_48 / (int)local_50" (parenthesized_expression "(local_3c - 1)" ( (binary_expression "local_3c - 1" identifier - number_literal) )) + (binary_expression "(int)local_48 / (int)local_50" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) / (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier))) ))) / (parenthesized_expression "((int)local_48 / (int)local_50)" ( (binary_expression "(int)local_48 / (int)local_50" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) / (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);" (assignment_expression "uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)" identifier = (binary_expression "*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)" (pointer_expression "*(uint *)(unaff_EBP + 0xc420e)" * (cast_expression "(uint *)(unaff_EBP + 0xc420e)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0xc420e)" ( (binary_expression "unaff_EBP + 0xc420e" identifier + number_literal) )))) / (pointer_expression "*(uint *)(*(int *)(param_1[1] + 4) + 0x20)" * (cast_expression "(uint *)(*(int *)(param_1[1] + 4) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1[1] + 4) + 0x20)" ( (binary_expression "*(int *)(param_1[1] + 4) + 0x20" (pointer_expression "*(int *)(param_1[1] + 4)" * (cast_expression "(int *)(param_1[1] + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 4)" ( (binary_expression "param_1[1] + 4" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) + number_literal) )))))) ;) (if_statement "if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }" if (parenthesized_expression "(uVar5 + 1 == uVar4)" ( (binary_expression "uVar5 + 1 == uVar4" (binary_expression "uVar5 + 1" identifier + number_literal) == identifier) )) (compound_statement "{\n            uVar4 = uVar5;\n          }" { (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" identifier = identifier) ;) })) (expression_statement "lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;" (assignment_expression "lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50" identifier = (binary_expression "(longlong)(int)local_3c * (longlong)(int)local_50" (cast_expression "(longlong)(int)local_3c" ( (type_descriptor "longlong" type_identifier) ) (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier)) * (cast_expression "(longlong)(int)local_50" ( (type_descriptor "longlong" type_identifier) ) (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "piVar8 = *(int **)(local_34 + 0x3c);" (assignment_expression "piVar8 = *(int **)(local_34 + 0x3c)" identifier = (pointer_expression "*(int **)(local_34 + 0x3c)" * (cast_expression "(int **)(local_34 + 0x3c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_34 + 0x3c)" ( (binary_expression "local_34 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(uint *)(local_34 + 0x18);" (assignment_expression "uVar5 = *(uint *)(local_34 + 0x18)" identifier = (pointer_expression "*(uint *)(local_34 + 0x18)" * (cast_expression "(uint *)(local_34 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_34 + 0x18)" ( (binary_expression "local_34 + 0x18" identifier + number_literal) ))))) ;) (do_statement "do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);" do (compound_statement "{\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          }" { (if_statement "if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }" if (parenthesized_expression "((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4))))" ( (binary_expression "(uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))" (parenthesized_expression "(uVar5 < uVar4)" ( (binary_expression "uVar5 < uVar4" identifier < identifier) )) || (parenthesized_expression "((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))" ( (parenthesized_expression "(uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4))" ( (comma_expression "uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)" (assignment_expression "uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)" identifier = (binary_expression "*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)" (pointer_expression "*(uint *)(unaff_EBP + 0xc420e)" * (cast_expression "(uint *)(unaff_EBP + 0xc420e)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0xc420e)" ( (binary_expression "unaff_EBP + 0xc420e" identifier + number_literal) )))) / (pointer_expression "*(uint *)(*(int *)(param_1[1] + 4) + 0x20)" * (cast_expression "(uint *)(*(int *)(param_1[1] + 4) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1[1] + 4) + 0x20)" ( (binary_expression "*(int *)(param_1[1] + 4) + 0x20" (pointer_expression "*(int *)(param_1[1] + 4)" * (cast_expression "(int *)(param_1[1] + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 4)" ( (binary_expression "param_1[1] + 4" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) + number_literal) )))))) , (binary_expression "uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)" (binary_expression "uVar6 + 1 == uVar4" (binary_expression "uVar6 + 1" identifier + number_literal) == identifier) && (parenthesized_expression "(uVar4 = uVar6 + 2, uVar5 < uVar4)" ( (comma_expression "uVar4 = uVar6 + 2, uVar5 < uVar4" (assignment_expression "uVar4 = uVar6 + 2" identifier = (binary_expression "uVar6 + 2" identifier + number_literal)) , (binary_expression "uVar5 < uVar4" identifier < identifier)) )))) )) ))) )) (compound_statement "{\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }" { (expression_statement "iVar3 = FUN_000846f0();" (assignment_expression "iVar3 = FUN_000846f0()" identifier = (call_expression "FUN_000846f0()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);" (assignment_expression "local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e)" identifier = (binary_expression "local_48 + *(int *)(unaff_EBP + 0xc420e)" identifier + (pointer_expression "*(int *)(unaff_EBP + 0xc420e)" * (cast_expression "(int *)(unaff_EBP + 0xc420e)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0xc420e)" ( (binary_expression "unaff_EBP + 0xc420e" identifier + number_literal) )))))) ;) (expression_statement "local_3c = (uint)lVar1;" (assignment_expression "local_3c = (uint)lVar1" identifier = (cast_expression "(uint)lVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_38 = (int)((ulonglong)lVar1 >> 0x20);" (assignment_expression "local_38 = (int)((ulonglong)lVar1 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar11 = local_38 - ((int)local_48 >> 0x1f);" (assignment_expression "iVar11 = local_38 - ((int)local_48 >> 0x1f)" identifier = (binary_expression "local_38 - ((int)local_48 >> 0x1f)" identifier - (parenthesized_expression "((int)local_48 >> 0x1f)" ( (binary_expression "(int)local_48 >> 0x1f" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "lVar2 = (longlong)(int)local_48;" (assignment_expression "lVar2 = (longlong)(int)local_48" identifier = (cast_expression "(longlong)(int)local_48" ( (type_descriptor "longlong" type_identifier) ) (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }" if (parenthesized_expression "((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0)" ( (binary_expression "(SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0" (parenthesized_expression "(SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48)))" ( (binary_expression "SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))" (call_expression "SBORROW4(local_38,(int)local_48 >> 0x1f)" identifier (argument_list "(local_38,(int)local_48 >> 0x1f)" ( identifier , (binary_expression "(int)local_48 >> 0x1f" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) != (call_expression "SBORROW4(iVar11,(uint)(local_3c < local_48))" identifier (argument_list "(iVar11,(uint)(local_3c < local_48))" ( identifier , (call_expression "(uint)(local_3c < local_48)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_3c < local_48)" ( (binary_expression "local_3c < local_48" identifier < identifier) ))) )))) )) != (binary_expression "(int)(iVar11 - (uint)(local_3c < local_48)) < 0" (cast_expression "(int)(iVar11 - (uint)(local_3c < local_48))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar11 - (uint)(local_3c < local_48))" ( (binary_expression "iVar11 - (uint)(local_3c < local_48)" identifier - (call_expression "(uint)(local_3c < local_48)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_3c < local_48)" ( (binary_expression "local_3c < local_48" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n                lVar2 = lVar1;\n              }" { (expression_statement "lVar2 = lVar1;" (assignment_expression "lVar2 = lVar1" identifier = identifier) ;) })) (expression_statement "iVar7 = (int)((ulonglong)lVar2 >> 0x20);" (assignment_expression "iVar7 = (int)((ulonglong)lVar2 >> 0x20)" identifier = (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) )))) ;) (expression_statement "uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;" (assignment_expression "uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50" identifier = (binary_expression "*(int *)(unaff_EBP + 0xc420e) + local_50" (pointer_expression "*(int *)(unaff_EBP + 0xc420e)" * (cast_expression "(int *)(unaff_EBP + 0xc420e)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0xc420e)" ( (binary_expression "unaff_EBP + 0xc420e" identifier + number_literal) )))) + identifier)) ;) (expression_statement "iVar11 = (int)uVar4 >> 0x1f;" (assignment_expression "iVar11 = (int)uVar4 >> 0x1f" identifier = (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;" if (parenthesized_expression "((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0))" ( (binary_expression "(iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)" ( (comma_expression "uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0" (assignment_expression "uVar5 = (uint)(uVar4 < (uint)lVar2)" identifier = (call_expression "(uint)(uVar4 < (uint)lVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < (uint)lVar2)" ( (binary_expression "uVar4 < (uint)lVar2" identifier < (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) , (binary_expression "(SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0" (parenthesized_expression "(SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5))" ( (binary_expression "SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)" (call_expression "SBORROW4(iVar11,iVar7)" identifier (argument_list "(iVar11,iVar7)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar11 - iVar7,uVar5)" identifier (argument_list "(iVar11 - iVar7,uVar5)" ( (binary_expression "iVar11 - iVar7" identifier - identifier) , identifier )))) )) == (binary_expression "(int)((iVar11 - iVar7) - uVar5) < 0" (cast_expression "(int)((iVar11 - iVar7) - uVar5)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar11 - iVar7) - uVar5)" ( (binary_expression "(iVar11 - iVar7) - uVar5" (parenthesized_expression "(iVar11 - iVar7)" ( (binary_expression "iVar11 - iVar7" identifier - identifier) )) - identifier) ))) < number_literal))) ))) )) (goto_statement "goto LAB_000853a0;" goto statement_identifier ;)) (goto_statement "goto LAB_00085660;" goto statement_identifier ;) })) (expression_statement "iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);" (assignment_expression "iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0)" identifier = (call_expression "(**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0)" (parenthesized_expression "(**(code **)(local_34 + 200))" ( (pointer_expression "**(code **)(local_34 + 200)" * (pointer_expression "*(code **)(local_34 + 200)" * (cast_expression "(code **)(local_34 + 200)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_34 + 200)" ( (binary_expression "local_34 + 200" identifier + number_literal) ))))) )) (argument_list "(local_34,uVar4,&local_2c,0)" ( identifier , identifier , (pointer_expression "&local_2c" & identifier) , number_literal )))) ;) (if_statement "if (iVar3 != 0) break;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = FUN_00079770();" (assignment_expression "iVar3 = FUN_00079770()" identifier = (call_expression "FUN_00079770()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_2c != 0) {\n              FUN_0001b1a0();\n            }" if (parenthesized_expression "(local_2c != 0)" ( (binary_expression "local_2c != 0" identifier != number_literal) )) (compound_statement "{\n              FUN_0001b1a0();\n            }" { (expression_statement "FUN_0001b1a0();" (call_expression "FUN_0001b1a0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_000851f0;" goto statement_identifier ;) }))) (expression_statement "iVar11 = param_1[6];" (assignment_expression "iVar11 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "piVar8 = *(int **)(iVar7 + 4);" (assignment_expression "piVar8 = *(int **)(iVar7 + 4)" identifier = (pointer_expression "*(int **)(iVar7 + 4)" * (cast_expression "(int **)(iVar7 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) ;) (expression_statement "piVar10 = *(int **)(iVar11 + 4);" (assignment_expression "piVar10 = *(int **)(iVar11 + 4)" identifier = (pointer_expression "*(int **)(iVar11 + 4)" * (cast_expression "(int **)(iVar11 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *piVar8;" (assignment_expression "iVar3 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (labeled_statement "LAB_0008518c:\n    local_50 = piVar10[8];" statement_identifier : (expression_statement "local_50 = piVar10[8];" (assignment_expression "local_50 = piVar10[8]" identifier = (subscript_expression "piVar10[8]" identifier [ number_literal ])) ;)) (expression_statement "local_48 = piVar8[8];" (assignment_expression "local_48 = piVar8[8]" identifier = (subscript_expression "piVar8[8]" identifier [ number_literal ])) ;) (expression_statement "cVar9 = *(char *)(iVar3 + 5);" (assignment_expression "cVar9 = *(char *)(iVar3 + 5)" identifier = (pointer_expression "*(char *)(iVar3 + 5)" * (cast_expression "(char *)(iVar3 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 5)" ( (binary_expression "iVar3 + 5" identifier + number_literal) ))))) ;) (expression_statement "local_3c = piVar10[0xb];" (assignment_expression "local_3c = piVar10[0xb]" identifier = (subscript_expression "piVar10[0xb]" identifier [ number_literal ])) ;) (if_statement "if ((cVar9 != '\x05') || (local_48 == local_50)) {\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }" if (parenthesized_expression "((cVar9 != '\x05') || (local_48 == local_50))" ( (binary_expression "(cVar9 != '\x05') || (local_48 == local_50)" (parenthesized_expression "(cVar9 != '\x05')" ( (binary_expression "cVar9 != '\x05'" identifier != (char_literal "'\x05'" ' escape_sequence ')) )) || (parenthesized_expression "(local_48 == local_50)" ( (binary_expression "local_48 == local_50" identifier == identifier) ))) )) (compound_statement "{\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }" { (if_statement "if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }" { (labeled_statement "LAB_0008551a:\n        uVar4 = param_1[4];" statement_identifier : (expression_statement "uVar4 = param_1[4];" (assignment_expression "uVar4 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;)) }) (else_clause "else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }" else (compound_statement "{\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }" { (expression_statement "uVar4 = param_1[4];" (assignment_expression "uVar4 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (if_statement "if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }" if (parenthesized_expression "(uVar4 <= local_3c)" ( (binary_expression "uVar4 <= local_3c" identifier <= identifier) )) (compound_statement "{\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (if_statement "if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }" if (parenthesized_expression "(((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0))" ( (binary_expression "((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)" (parenthesized_expression "((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0))" ( (binary_expression "(*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)" (parenthesized_expression "(*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4)" ( (binary_expression "*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4" (binary_expression "*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1" (binary_expression "*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20)" (pointer_expression "*(uint *)(unaff_EBP + 0xc420e)" * (cast_expression "(uint *)(unaff_EBP + 0xc420e)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0xc420e)" ( (binary_expression "unaff_EBP + 0xc420e" identifier + number_literal) )))) / (pointer_expression "*(uint *)(*(int *)(iVar11 + 4) + 0x20)" * (cast_expression "(uint *)(*(int *)(iVar11 + 4) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar11 + 4) + 0x20)" ( (binary_expression "*(int *)(iVar11 + 4) + 0x20" (pointer_expression "*(int *)(iVar11 + 4)" * (cast_expression "(int *)(iVar11 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) )))) + number_literal) ))))) + number_literal) != identifier) )) && (parenthesized_expression "(iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)" ( (comma_expression "iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0" (assignment_expression "iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2)" identifier = (call_expression "(**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2)" (parenthesized_expression "(**(code **)(local_5c + 200))" ( (pointer_expression "**(code **)(local_5c + 200)" * (pointer_expression "*(code **)(local_5c + 200)" * (cast_expression "(code **)(local_5c + 200)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_5c + 200)" ( (binary_expression "local_5c + 200" identifier + number_literal) ))))) )) (argument_list "(local_5c,uVar4,&local_2c,2)" ( identifier , identifier , (pointer_expression "&local_2c" & identifier) , number_literal )))) , (binary_expression "iVar3 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)" ( (comma_expression "iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0" (assignment_expression "iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0)" identifier = (call_expression "FUN_000797c0(*(undefined4 *)(local_2c + 4),0)" identifier (argument_list "(*(undefined4 *)(local_2c + 4),0)" ( (pointer_expression "*(undefined4 *)(local_2c + 4)" * (cast_expression "(undefined4 *)(local_2c + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 4)" ( (binary_expression "local_2c + 4" identifier + number_literal) )))) , number_literal )))) , (binary_expression "local_2c != 0" identifier != number_literal)) ))) )) (compound_statement "{\n              FUN_0001b1a0();\n            }" { (expression_statement "FUN_0001b1a0();" (call_expression "FUN_0001b1a0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = param_1[4] + 1;" (assignment_expression "uVar4 = param_1[4] + 1" identifier = (binary_expression "param_1[4] + 1" (subscript_expression "param_1[4]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[4] = uVar4;" (assignment_expression "param_1[4] = uVar4" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;" if (parenthesized_expression "(((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4))" ( (binary_expression "((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)" (parenthesized_expression "((param_2 <= iVar7) && (-1 < param_2))" ( (binary_expression "(param_2 <= iVar7) && (-1 < param_2)" (parenthesized_expression "(param_2 <= iVar7)" ( (binary_expression "param_2 <= iVar7" identifier <= identifier) )) && (parenthesized_expression "(-1 < param_2)" ( (binary_expression "-1 < param_2" number_literal < identifier) ))) )) || (parenthesized_expression "(local_3c < uVar4)" ( (binary_expression "local_3c < uVar4" identifier < identifier) ))) )) (break_statement "break;" break ;)) (if_statement "if (iVar3 != 0) goto LAB_0008506e;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008506e;" goto statement_identifier ;)) (expression_statement "iVar11 = param_1[6];" (assignment_expression "iVar11 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) })) (if_statement "if (iVar3 == 0) goto LAB_0008551a;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0008551a;" goto statement_identifier ;)) (goto_statement "goto LAB_0008506e;" goto statement_identifier ;) })) }))) (expression_statement "param_1[9] = local_3c;" (assignment_expression "param_1[9] = local_3c" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[8] = (local_3c - uVar4) + 1;" (assignment_expression "param_1[8] = (local_3c - uVar4) + 1" (subscript_expression "param_1[8]" identifier [ number_literal ]) = (binary_expression "(local_3c - uVar4) + 1" (parenthesized_expression "(local_3c - uVar4)" ( (binary_expression "local_3c - uVar4" identifier - identifier) )) + number_literal)) ;) (if_statement "if (local_3c < uVar4) goto LAB_00085077;" if (parenthesized_expression "(local_3c < uVar4)" ( (binary_expression "local_3c < uVar4" identifier < identifier) )) (goto_statement "goto LAB_00085077;" goto statement_identifier ;)) (if_statement "if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }" if (parenthesized_expression "(param_1[10] == 0)" ( (binary_expression "param_1[10] == 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }" { (expression_statement "iVar3 = **(int **)(param_1[6] + 4);" (assignment_expression "iVar3 = **(int **)(param_1[6] + 4)" identifier = (pointer_expression "**(int **)(param_1[6] + 4)" * (pointer_expression "*(int **)(param_1[6] + 4)" * (cast_expression "(int **)(param_1[6] + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[6] + 4)" ( (binary_expression "param_1[6] + 4" (subscript_expression "param_1[6]" identifier [ number_literal ]) + number_literal) )))))) ;) (expression_statement "param_1[0xb] = *(int *)(iVar3 + 0x58);" (assignment_expression "param_1[0xb] = *(int *)(iVar3 + 0x58)" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (pointer_expression "*(int *)(iVar3 + 0x58)" * (cast_expression "(int *)(iVar3 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x58)" ( (binary_expression "iVar3 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(iVar3 + 0x58) = param_1;" (assignment_expression "*(int **)(iVar3 + 0x58) = param_1" (pointer_expression "*(int **)(iVar3 + 0x58)" * (cast_expression "(int **)(iVar3 + 0x58)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x58)" ( (binary_expression "iVar3 + 0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[10] = 1;" (assignment_expression "param_1[10] = 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (goto_statement "goto joined_r0x0008561f;" goto statement_identifier ;) })) (if_statement "if (param_2 == 0) {\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }" { (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" identifier = number_literal) ;) (if_statement "if (local_4c == 0) goto LAB_0008522b;" if (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) (goto_statement "goto LAB_0008522b;" goto statement_identifier ;)) (goto_statement "goto LAB_000851fb;" goto statement_identifier ;) })) (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" identifier = number_literal) ;) (if_statement "if (local_3c < (uint)param_1[4]) {\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }" if (parenthesized_expression "(local_3c < (uint)param_1[4])" ( (binary_expression "local_3c < (uint)param_1[4]" identifier < (cast_expression "(uint)param_1[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }" { (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" identifier = number_literal) ;) (goto_statement "goto LAB_000851f0;" goto statement_identifier ;) })) (if_statement "if (local_4c != 0) goto LAB_000851fb;" if (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) )) (goto_statement "goto LAB_000851fb;" goto statement_identifier ;)) (goto_statement "goto LAB_0008522b;" goto statement_identifier ;) })) (expression_statement "FUN_000197c0(*(undefined4 *)(*param_1 + 0xc));" (call_expression "FUN_000197c0(*(undefined4 *)(*param_1 + 0xc))" identifier (argument_list "(*(undefined4 *)(*param_1 + 0xc))" ( (pointer_expression "*(undefined4 *)(*param_1 + 0xc)" * (cast_expression "(undefined4 *)(*param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0xc)" ( (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" * identifier) + number_literal) )))) ))) ;) (expression_statement "iVar3 = param_1[7];" (assignment_expression "iVar3 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (if_statement "if ((iVar3 - 5U < 2) || (iVar3 == 0)) {\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    iVar7 = *piVar8;\n    local_34 = iVar7;\n    if ((*param_1 != 0) && ((char)piVar10[5] == '\x02')) {\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }\n    if (*(char *)(iVar11 + 8) == '\0') goto LAB_000852b9;\nLAB_00084fef:\n    local_4c = param_1[3];\n    if (local_4c == 0) {\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }\n    local_4c = 0;\n    iVar3 = local_34;\n    goto LAB_0008518c;\n  }" if (parenthesized_expression "((iVar3 - 5U < 2) || (iVar3 == 0))" ( (binary_expression "(iVar3 - 5U < 2) || (iVar3 == 0)" (parenthesized_expression "(iVar3 - 5U < 2)" ( (binary_expression "iVar3 - 5U < 2" (binary_expression "iVar3 - 5U" identifier - number_literal) < number_literal) )) || (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    iVar7 = *piVar8;\n    local_34 = iVar7;\n    if ((*param_1 != 0) && ((char)piVar10[5] == '\x02')) {\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }\n    if (*(char *)(iVar11 + 8) == '\0') goto LAB_000852b9;\nLAB_00084fef:\n    local_4c = param_1[3];\n    if (local_4c == 0) {\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }\n    local_4c = 0;\n    iVar3 = local_34;\n    goto LAB_0008518c;\n  }" { (expression_statement "iVar11 = param_1[6];" (assignment_expression "iVar11 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "piVar10 = *(int **)(iVar11 + 4);" (assignment_expression "piVar10 = *(int **)(iVar11 + 4)" identifier = (pointer_expression "*(int **)(iVar11 + 4)" * (cast_expression "(int **)(iVar11 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_5c = *piVar10;" (assignment_expression "local_5c = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "piVar8 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar8 = *(int **)(param_1[1] + 4)" identifier = (pointer_expression "*(int **)(param_1[1] + 4)" * (cast_expression "(int **)(param_1[1] + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[1] + 4)" ( (binary_expression "param_1[1] + 4" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "iVar7 = *piVar8;" (assignment_expression "iVar7 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "local_34 = iVar7;" (assignment_expression "local_34 = iVar7" identifier = identifier) ;) (if_statement "if ((*param_1 != 0) && ((char)piVar10[5] == '\x02')) {\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }" if (parenthesized_expression "((*param_1 != 0) && ((char)piVar10[5] == '\x02'))" ( (binary_expression "(*param_1 != 0) && ((char)piVar10[5] == '\x02')" (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) && (parenthesized_expression "((char)piVar10[5] == '\x02')" ( (binary_expression "(char)piVar10[5] == '\x02'" (cast_expression "(char)piVar10[5]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar10[5]" identifier [ number_literal ])) == (char_literal "'\x02'" ' escape_sequence ')) ))) )) (compound_statement "{\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }" { (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "iVar3 = 5;" (assignment_expression "iVar3 = 5" identifier = number_literal) ;) (goto_statement "goto LAB_00085051;" goto statement_identifier ;) })) (if_statement "if (*(char *)(iVar11 + 8) == '\0') goto LAB_000852b9;" if (parenthesized_expression "(*(char *)(iVar11 + 8) == '\0')" ( (binary_expression "*(char *)(iVar11 + 8) == '\0'" (pointer_expression "*(char *)(iVar11 + 8)" * (cast_expression "(char *)(iVar11 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 8)" ( (binary_expression "iVar11 + 8" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000852b9;" goto statement_identifier ;)) (labeled_statement "LAB_00084fef:\n    local_4c = param_1[3];" statement_identifier : (expression_statement "local_4c = param_1[3];" (assignment_expression "local_4c = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;)) (if_statement "if (local_4c == 0) {\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }" if (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }" { (labeled_statement "LAB_00084ffe:\n      iVar3 = FUN_0003a660(0);" statement_identifier : (expression_statement "iVar3 = FUN_0003a660(0);" (assignment_expression "iVar3 = FUN_0003a660(0)" identifier = (call_expression "FUN_0003a660(0)" identifier (argument_list "(0)" ( number_literal )))) ;)) (if_statement "if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }" if (parenthesized_expression "(iVar3 != 7)" ( (binary_expression "iVar3 != 7" identifier != number_literal) )) (compound_statement "{\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }" { (expression_statement "iVar7 = param_1[1];" (assignment_expression "iVar7 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_0008501f;" goto statement_identifier ;) })) (goto_statement "goto LAB_00085043;" goto statement_identifier ;) })) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "iVar3 = local_34;" (assignment_expression "iVar3 = local_34" identifier = identifier) ;) (goto_statement "goto LAB_0008518c;" goto statement_identifier ;) })) (goto_statement "goto LAB_0008522e;" goto statement_identifier ;) (while_statement "while( true ) {\n    bVar12 = CARRY4(uVar4,local_50);\n    uVar4 = uVar4 + local_50;\n    iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12;\n    if ((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)) break;\nLAB_00085660:\n    local_2c = 0;\n    uVar14 = 0;\n    puVar13 = &local_2c;\n    iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f);\n    iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14);\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    bVar12 = CARRY4(uVar4,local_50);\n    uVar4 = uVar4 + local_50;\n    iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12;\n    if ((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)) break;\nLAB_00085660:\n    local_2c = 0;\n    uVar14 = 0;\n    puVar13 = &local_2c;\n    iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f);\n    iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14);\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }\n  }" { (expression_statement "bVar12 = CARRY4(uVar4,local_50);" (assignment_expression "bVar12 = CARRY4(uVar4,local_50)" identifier = (call_expression "CARRY4(uVar4,local_50)" identifier (argument_list "(uVar4,local_50)" ( identifier , identifier )))) ;) (expression_statement "uVar4 = uVar4 + local_50;" (assignment_expression "uVar4 = uVar4 + local_50" identifier = (binary_expression "uVar4 + local_50" identifier + identifier)) ;) (expression_statement "iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12;" (assignment_expression "iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12" identifier = (binary_expression "iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12" (binary_expression "iVar11 + ((int)local_50 >> 0x1f)" identifier + (parenthesized_expression "((int)local_50 >> 0x1f)" ( (binary_expression "(int)local_50 >> 0x1f" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if ((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)) break;" if (parenthesized_expression "((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0))" ( (binary_expression "(iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)" ( (comma_expression "uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0" (assignment_expression "uVar5 = (uint)(uVar4 < (uint)lVar2)" identifier = (call_expression "(uint)(uVar4 < (uint)lVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < (uint)lVar2)" ( (binary_expression "uVar4 < (uint)lVar2" identifier < (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) , (binary_expression "(SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0" (parenthesized_expression "(SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5))" ( (binary_expression "SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)" (call_expression "SBORROW4(iVar11,iVar7)" identifier (argument_list "(iVar11,iVar7)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar11 - iVar7,uVar5)" identifier (argument_list "(iVar11 - iVar7,uVar5)" ( (binary_expression "iVar11 - iVar7" identifier - identifier) , identifier )))) )) == (binary_expression "(int)((iVar11 - iVar7) - uVar5) < 0" (cast_expression "(int)((iVar11 - iVar7) - uVar5)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar11 - iVar7) - uVar5)" ( (binary_expression "(iVar11 - iVar7) - uVar5" (parenthesized_expression "(iVar11 - iVar7)" ( (binary_expression "iVar11 - iVar7" identifier - identifier) )) - identifier) ))) < number_literal))) ))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00085660:\n    local_2c = 0;" statement_identifier : (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;)) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "puVar13 = &local_2c;" (assignment_expression "puVar13 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) (expression_statement "iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f);" (assignment_expression "iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f)" identifier = (call_expression "FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f)" identifier (argument_list "(uVar4,iVar11,local_50,(int)local_50 >> 0x1f)" ( identifier , identifier , identifier , (binary_expression "(int)local_50 >> 0x1f" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14);" (assignment_expression "iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14)" identifier = (call_expression "(**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14)" (parenthesized_expression "(**(code **)(local_5c + 200))" ( (pointer_expression "**(code **)(local_5c + 200)" * (pointer_expression "*(code **)(local_5c + 200)" * (cast_expression "(code **)(local_5c + 200)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_5c + 200)" ( (binary_expression "local_5c + 200" identifier + number_literal) ))))) )) (argument_list "(local_5c,iVar3 + 1,puVar13,uVar14)" ( identifier , (binary_expression "iVar3 + 1" identifier + number_literal) , identifier , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }" { (expression_statement "iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);" (assignment_expression "iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11)" identifier = (call_expression "(**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11)" (parenthesized_expression "(**(code **)(*piVar8 + 0xc))" ( (pointer_expression "**(code **)(*piVar8 + 0xc)" * (pointer_expression "*(code **)(*piVar8 + 0xc)" * (cast_expression "(code **)(*piVar8 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar8 + 0xc)" ( (binary_expression "*piVar8 + 0xc" (pointer_expression "*piVar8" * identifier) + number_literal) ))))) )) (argument_list "(piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11)" ( identifier , (pointer_expression "*(undefined4 *)(local_2c + 4)" * (cast_expression "(undefined4 *)(local_2c + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 4)" ( (binary_expression "local_2c + 4" identifier + number_literal) )))) , identifier , identifier , identifier )))) ;) (if_statement "if (local_2c != 0) goto LAB_000856f0;" if (parenthesized_expression "(local_2c != 0)" ( (binary_expression "local_2c != 0" identifier != number_literal) )) (goto_statement "goto LAB_000856f0;" goto statement_identifier ;)) }) (else_clause "else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }" else (compound_statement "{\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }" { (if_statement "if (local_2c == 0) goto LAB_000851f0;" if (parenthesized_expression "(local_2c == 0)" ( (binary_expression "local_2c == 0" identifier == number_literal) )) (goto_statement "goto LAB_000851f0;" goto statement_identifier ;)) (labeled_statement "LAB_000856f0:\n      FUN_0001b1a0();" statement_identifier : (expression_statement "FUN_0001b1a0();" (call_expression "FUN_0001b1a0()" identifier (argument_list "()" ( ))) ;)) }))) })) (labeled_statement "LAB_000853a0:\n  if (((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))) {\n    iVar3 = FUN_0002a940();\nLAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;\n    iVar3 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    iVar11 = param_1[6];\nLAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);\n    if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar9 != '\0') {\n      FUN_0007c140();\n    }\n  }\n  else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }" statement_identifier : (if_statement "if (((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))) {\n    iVar3 = FUN_0002a940();\nLAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;\n    iVar3 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    iVar11 = param_1[6];\nLAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);\n    if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar9 != '\0') {\n      FUN_0007c140();\n    }\n  }\n  else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }" if (parenthesized_expression "(((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0))))" ( (binary_expression "((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))" (parenthesized_expression "((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0))" ( (binary_expression "(iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)" (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)" ( (comma_expression "iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0" (assignment_expression "iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c)" identifier = (call_expression "(**(code **)(*piVar8 + 0x18))(piVar8,&local_2c)" (parenthesized_expression "(**(code **)(*piVar8 + 0x18))" ( (pointer_expression "**(code **)(*piVar8 + 0x18)" * (pointer_expression "*(code **)(*piVar8 + 0x18)" * (cast_expression "(code **)(*piVar8 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar8 + 0x18)" ( (binary_expression "*piVar8 + 0x18" (pointer_expression "*piVar8" * identifier) + number_literal) ))))) )) (argument_list "(piVar8,&local_2c)" ( identifier , (pointer_expression "&local_2c" & identifier) )))) , (binary_expression "iVar3 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))" ( (parenthesized_expression "((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0))" ( (binary_expression "(SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)" (binary_expression "(SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0" (parenthesized_expression "(SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c)))" ( (binary_expression "SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))" (call_expression "SBORROW4(local_38,local_28)" identifier (argument_list "(local_38,local_28)" ( identifier , identifier ))) != (call_expression "SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))" identifier (argument_list "(local_38 - local_28,(uint)(local_3c < local_2c))" ( (binary_expression "local_38 - local_28" identifier - identifier) , (call_expression "(uint)(local_3c < local_2c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_3c < local_2c)" ( (binary_expression "local_3c < local_2c" identifier < identifier) ))) )))) )) == (binary_expression "(int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0" (cast_expression "(int)((local_38 - local_28) - (uint)(local_3c < local_2c))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((local_38 - local_28) - (uint)(local_3c < local_2c))" ( (binary_expression "(local_38 - local_28) - (uint)(local_3c < local_2c)" (parenthesized_expression "(local_38 - local_28)" ( (binary_expression "local_38 - local_28" identifier - identifier) )) - (call_expression "(uint)(local_3c < local_2c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_3c < local_2c)" ( (binary_expression "local_3c < local_2c" identifier < identifier) )))) ))) < number_literal)) || (parenthesized_expression "(iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)" ( (comma_expression "iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0" (assignment_expression "iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1)" identifier = (call_expression "(**(code **)(*piVar8 + 0x10))(piVar8,lVar1)" (parenthesized_expression "(**(code **)(*piVar8 + 0x10))" ( (pointer_expression "**(code **)(*piVar8 + 0x10)" * (pointer_expression "*(code **)(*piVar8 + 0x10)" * (cast_expression "(code **)(*piVar8 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar8 + 0x10)" ( (binary_expression "*piVar8 + 0x10" (pointer_expression "*piVar8" * identifier) + number_literal) ))))) )) (argument_list "(piVar8,lVar1)" ( identifier , identifier )))) , (binary_expression "iVar3 == 0" identifier == number_literal)) ))) )) ))) )) (compound_statement "{\n    iVar3 = FUN_0002a940();\nLAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;\n    iVar3 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    iVar11 = param_1[6];\nLAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);\n    if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar9 != '\0') {\n      FUN_0007c140();\n    }\n  }" { (expression_statement "iVar3 = FUN_0002a940();" (assignment_expression "iVar3 = FUN_0002a940()" identifier = (call_expression "FUN_0002a940()" identifier (argument_list "()" ( )))) ;) (labeled_statement "LAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;" statement_identifier : (if_statement "if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;" if (parenthesized_expression "((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))" ( (binary_expression "(iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0)))" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) || (parenthesized_expression "((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0)))" ( (parenthesized_expression "(*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))" ( (binary_expression "*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0)" (binary_expression "*(char *)(param_1[1] + 8) != '\0'" (pointer_expression "*(char *)(param_1[1] + 8)" * (cast_expression "(char *)(param_1[1] + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 8)" ( (binary_expression "param_1[1] + 8" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(iVar3 = FUN_0007c140(), iVar3 != 0)" ( (comma_expression "iVar3 = FUN_0007c140(), iVar3 != 0" (assignment_expression "iVar3 = FUN_0007c140()" identifier = (call_expression "FUN_0007c140()" identifier (argument_list "()" ( )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) ))) )) (goto_statement "goto LAB_000851f0;" goto statement_identifier ;))) (expression_statement "iVar3 = 0x65;" (assignment_expression "iVar3 = 0x65" identifier = number_literal) ;) (labeled_statement "joined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;" statement_identifier : (if_statement "if (local_4c == 0) goto LAB_0008522b;" if (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) (goto_statement "goto LAB_0008522b;" goto statement_identifier ;))) (labeled_statement "LAB_000851f8:\n    iVar11 = param_1[6];" statement_identifier : (expression_statement "iVar11 = param_1[6];" (assignment_expression "iVar11 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;)) (labeled_statement "LAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);" statement_identifier : (expression_statement "cVar9 = *(char *)(iVar11 + 8);" (assignment_expression "cVar9 = *(char *)(iVar11 + 8)" identifier = (pointer_expression "*(char *)(iVar11 + 8)" * (cast_expression "(char *)(iVar11 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 8)" ( (binary_expression "iVar11 + 8" identifier + number_literal) ))))) ;)) (if_statement "if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }" if (parenthesized_expression "(cVar9 == '\x02')" ( (binary_expression "cVar9 == '\x02'" identifier == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }" { (expression_statement "FUN_00084c70();" (call_expression "FUN_00084c70()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar9 = *(char *)(param_1[6] + 8);" (assignment_expression "cVar9 = *(char *)(param_1[6] + 8)" identifier = (pointer_expression "*(char *)(param_1[6] + 8)" * (cast_expression "(char *)(param_1[6] + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + 8)" ( (binary_expression "param_1[6] + 8" (subscript_expression "param_1[6]" identifier [ number_literal ]) + number_literal) ))))) ;) })) (if_statement "if (cVar9 != '\0') {\n      FUN_0007c140();\n    }" if (parenthesized_expression "(cVar9 != '\0')" ( (binary_expression "cVar9 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_0007c140();\n    }" { (expression_statement "FUN_0007c140();" (call_expression "FUN_0007c140()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }" else (compound_statement "{\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }" { (labeled_statement "LAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;" statement_identifier : (if_statement "if (local_4c != 0) goto LAB_000851f8;" if (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) )) (goto_statement "goto LAB_000851f8;" goto statement_identifier ;))) })))) (if_statement "if (iVar3 == 0xc0a) {\n    iVar3 = 7;\n  }" if (parenthesized_expression "(iVar3 == 0xc0a)" ( (binary_expression "iVar3 == 0xc0a" identifier == number_literal) )) (compound_statement "{\n    iVar3 = 7;\n  }" { (expression_statement "iVar3 = 7;" (assignment_expression "iVar3 = 7" identifier = number_literal) ;) })) (labeled_statement "LAB_0008522b:\n  param_1[7] = iVar3;" statement_identifier : (expression_statement "param_1[7] = iVar3;" (assignment_expression "param_1[7] = iVar3" (subscript_expression "param_1[7]" identifier [ number_literal ]) = identifier) ;)) (labeled_statement "LAB_0008522e:\n  if (*param_1 != 0) {\n    FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));\n  }" statement_identifier : (if_statement "if (*param_1 != 0) {\n    FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));\n  }" if (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n    FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));\n  }" { (expression_statement "FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));" (call_expression "FUN_000197f0(*(undefined4 *)(*param_1 + 0xc))" identifier (argument_list "(*(undefined4 *)(*param_1 + 0xc))" ( (pointer_expression "*(undefined4 *)(*param_1 + 0xc)" * (cast_expression "(undefined4 *)(*param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0xc)" ( (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" * identifier) + number_literal) )))) ))) ;) }))) (labeled_statement "LAB_00085244:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar8 = (int *)(param_1[6] + 0xc);\n    *piVar8 = *piVar8 + -1;\n    if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }\n  }" statement_identifier : (if_statement "if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar8 = (int *)(param_1[6] + 0xc);\n    *piVar8 = *piVar8 + -1;\n    if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }\n  }" if (parenthesized_expression "(*(char *)(param_1[6] + 9) != '\0')" ( (binary_expression "*(char *)(param_1[6] + 9) != '\0'" (pointer_expression "*(char *)(param_1[6] + 9)" * (cast_expression "(char *)(param_1[6] + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + 9)" ( (binary_expression "param_1[6] + 9" (subscript_expression "param_1[6]" identifier [ number_literal ]) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    piVar8 = (int *)(param_1[6] + 0xc);\n    *piVar8 = *piVar8 + -1;\n    if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }\n  }" { (expression_statement "piVar8 = (int *)(param_1[6] + 0xc);" (assignment_expression "piVar8 = (int *)(param_1[6] + 0xc)" identifier = (cast_expression "(int *)(param_1[6] + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + 0xc)" ( (binary_expression "param_1[6] + 0xc" (subscript_expression "param_1[6]" identifier [ number_literal ]) + number_literal) )))) ;) (expression_statement "*piVar8 = *piVar8 + -1;" (assignment_expression "*piVar8 = *piVar8 + -1" (pointer_expression "*piVar8" * identifier) = (binary_expression "*piVar8 + -1" (pointer_expression "*piVar8" * identifier) + number_literal)) ;) (if_statement "if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }" if (parenthesized_expression "(*piVar8 == 0)" ( (binary_expression "*piVar8 == 0" (pointer_expression "*piVar8" * identifier) == number_literal) )) (compound_statement "{\n      FUN_0002b3c0();\n    }" { (expression_statement "FUN_0002b3c0();" (call_expression "FUN_0002b3c0()" identifier (argument_list "()" ( ))) ;) })) }))) (expression_statement "FUN_000197f0(*(undefined4 *)(param_1[5] + 0xc));" (call_expression "FUN_000197f0(*(undefined4 *)(param_1[5] + 0xc))" identifier (argument_list "(*(undefined4 *)(param_1[5] + 0xc))" ( (pointer_expression "*(undefined4 *)(param_1[5] + 0xc)" * (cast_expression "(undefined4 *)(param_1[5] + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[5] + 0xc)" ( (binary_expression "param_1[5] + 0xc" (subscript_expression "param_1[5]" identifier [ number_literal ]) + number_literal) )))) ))) ;) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f4bf0();\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_000f4bf0();\n  }" { comment (expression_statement "FUN_000f4bf0();" (call_expression "FUN_000f4bf0()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */\n/* WARNING: Unknown calling convention */\n\nint sqlite3_backup_step(sqlite3_backup *p,int nPage)\n\n{\n  int *piVar1;\n  u8 uVar2;\n  sqlite3_file *psVar3;\n  longlong lVar4;\n  longlong lVar5;\n  int iVar6;\n  Pager *pPVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  Btree *p_00;\n  BtShared *pBVar11;\n  BtShared *pBVar12;\n  int iVar13;\n  u8 *zSrcData;\n  Btree *pBVar14;\n  DbPage *pDVar15;\n  int iVar16;\n  int in_GS_OFFSET;\n  bool bVar17;\n  DbPage **ppDVar18;\n  int iVar19;\n  BtShared *in_stack_ffffff94;\n  Pager *local_5c;\n  u32 local_50;\n  int local_4c;\n  u32 local_48;\n  DbPage *local_3c;\n  int local_38;\n  Pager *local_34;\n  DbPage *pSrcPg;\n  int local_28;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  sqlite3_mutex_enter(p->pSrcDb->mutex);\n  if (p->pSrc->sharable != '\0') {\n    sqlite3BtreeEnter(p->pSrc);\n  }\n  if (p->pDestDb == (sqlite3 *)0x0) {\n    iVar6 = p->rc;\n    if ((1 < iVar6 - 5U) && (iVar6 != 0)) goto LAB_00085244;\n    p_00 = p->pSrc;\n    pBVar14 = p->pDest;\n    pBVar12 = p_00->pBt;\n    local_5c = pBVar12->pPager;\n    pBVar11 = pBVar14->pBt;\n    local_34 = pBVar11->pPager;\n    if (p_00->inTrans != '\0') goto LAB_00084fef;\nLAB_000852b9:\n    iVar6 = sqlite3BtreeBeginTrans(p_00,0,(int *)0x0);\n    pBVar14 = p->pDest;\n    if (iVar6 == 0 && p->bDestLocked == 0) {\n      local_4c = 1;\n      pBVar12 = p->pSrc->pBt;\n      goto LAB_00084ffe;\n    }\n    if (iVar6 != 0) {\n      pBVar11 = pBVar14->pBt;\n      local_4c = 1;\n      pBVar12 = p->pSrc->pBt;\n      pPVar7 = pBVar11->pPager;\n      goto LAB_00085051;\n    }\n    local_4c = 1;\nLAB_0008501f:\n    if (p->bDestLocked == 0) {\n      iVar6 = sqlite3BtreeBeginTrans(pBVar14,2,(int *)&p->iDestSchema);\n      if (iVar6 == 0) {\n        p_00 = p->pSrc;\n        p->bDestLocked = 1;\n        pBVar11 = p->pDest->pBt;\n        pBVar12 = p_00->pBt;\n        pPVar7 = pBVar11->pPager;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      pBVar12 = p->pSrc->pBt;\n      pBVar11 = p->pDest->pBt;\n      pPVar7 = pBVar11->pPager;\nLAB_00085051:\n      uVar2 = pPVar7->journalMode;\n      local_50 = pBVar12->pageSize;\n      local_48 = pBVar11->pageSize;\n      local_3c = (DbPage *)pBVar12->nPage;\nLAB_0008506e:\n      if (iVar6 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      pBVar14 = p->pDest;\n      if (local_3c == (DbPage *)0x0) {\n        if (pBVar14->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar14);\n        }\n        pBVar14->pBt->nPage = 0;\n        if (pBVar14->pBt->nPage == 0) {\n          iVar6 = newDatabase(in_stack_ffffff94);\n          if (pBVar14->sharable == '\0') {\n            bVar17 = iVar6 == 0 || iVar6 == 0x65;\n          }\n          else {\n            iVar13 = pBVar14->wantToLock + -1;\n            pBVar14->wantToLock = iVar13;\n            bVar17 = iVar6 == 0x65 || iVar6 == 0;\n            if (iVar13 == 0) {\n              sqlite3BtreeLeave(pBVar14);\n            }\n          }\n          if (!bVar17) goto LAB_000851f0;\n        }\n        else if (pBVar14->sharable != '\0') {\n          piVar1 = &pBVar14->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar14);\n          }\n        }\n        pBVar14 = p->pDest;\n        local_3c = (DbPage *)0x1;\n      }\n      iVar6 = sqlite3BtreeUpdateMeta(pBVar14,1,p->iDestSchema + 1);\n      if (iVar6 == 0) {\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((uVar2 != '\x05') || (iVar6 = sqlite3BtreeSetVersion(p->pDest,2), iVar6 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            local_34->dbSize = ((int)local_50 / (int)local_48) * (int)local_3c;\n            iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,0);\n            goto LAB_000855f2;\n          }\n          uVar8 = (int)((int)local_3c + (int)local_48 / (int)local_50 + -1) /\n                  ((int)local_48 / (int)local_50);\n          uVar9 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n          if (uVar9 + 1 == uVar8) {\n            uVar8 = uVar9;\n          }\n          lVar4 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          psVar3 = local_34->fd;\n          uVar9 = local_34->dbSize;\n          do {\n            if ((uVar9 < uVar8) ||\n               ((uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8)))) {\n              iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1);\n              pDVar15 = (DbPage *)(local_48 + sqlite3PendingByte);\n              local_3c = (DbPage *)lVar4;\n              local_38 = (int)((ulonglong)lVar4 >> 0x20);\n              iVar13 = local_38 - ((int)pDVar15 >> 0x1f);\n              lVar5 = (longlong)(int)pDVar15;\n              if ((SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=\n                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0) {\n                lVar5 = lVar4;\n              }\n              iVar16 = (int)((ulonglong)lVar5 >> 0x20);\n              uVar8 = sqlite3PendingByte + local_50;\n              iVar13 = (int)uVar8 >> 0x1f;\n              if ((iVar6 != 0) ||\n                 (uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar6 = (*local_34->xGet)(local_34,uVar8,&pSrcPg,0);\n            if (iVar6 != 0) break;\n            iVar6 = sqlite3PagerWrite(pSrcPg);\n            if (pSrcPg != (DbPage *)0x0) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            uVar8 = uVar8 + 1;\n          } while (iVar6 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }\n    p_00 = p->pSrc;\n    pBVar11 = pBVar14->pBt;\n    pBVar12 = p_00->pBt;\n    pPVar7 = pBVar11->pPager;\nLAB_0008518c:\n    local_50 = pBVar12->pageSize;\n    local_48 = pBVar11->pageSize;\n    uVar2 = pPVar7->journalMode;\n    local_3c = (DbPage *)pBVar12->nPage;\n    if ((uVar2 != '\x05') || (local_48 == local_50)) {\n      if (nPage == 0) {\nLAB_0008551a:\n        zSrcData = (u8 *)p->iNext;\n      }\n      else {\n        zSrcData = (u8 *)p->iNext;\n        if (zSrcData <= local_3c) {\n          iVar13 = 0;\n          while( true ) {\n            iVar6 = 0;\n            if ((((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&\n                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)) &&\n               (iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),\n               pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            iVar13 = iVar13 + 1;\n            zSrcData = (u8 *)(p->iNext + 1);\n            p->iNext = (Pgno)zSrcData;\n            if (((nPage <= iVar13) && (-1 < nPage)) || (local_3c < zSrcData)) break;\n            if (iVar6 != 0) goto LAB_0008506e;\n            p_00 = p->pSrc;\n          }\n          if (iVar6 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      p->nPagecount = (Pgno)local_3c;\n      p->nRemaining = (Pgno)((int)local_3c + (1 - (int)zSrcData));\n      if (local_3c < zSrcData) goto LAB_00085077;\n      if (p->isAttached == 0) {\n        pPVar7 = p->pSrc->pBt->pPager;\n        p->pNext = pPVar7->pBackup;\n        pPVar7->pBackup = p;\n        p->isAttached = 1;\n      }\n      iVar6 = 0;\n      goto joined_r0x0008561f;\n    }\n    if (nPage == 0) {\n      iVar6 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }\n    iVar6 = 8;\n    if (local_3c < (u8 *)p->iNext) {\n      iVar6 = 8;\n      goto LAB_000851f0;\n    }\n    if (local_4c != 0) goto LAB_000851fb;\n    goto LAB_0008522b;\n  }\n  sqlite3_mutex_enter(p->pDestDb->mutex);\n  iVar6 = p->rc;\n  if ((iVar6 - 5U < 2) || (iVar6 == 0)) {\n    p_00 = p->pSrc;\n    pBVar14 = p->pDest;\n    pBVar12 = p_00->pBt;\n    local_5c = pBVar12->pPager;\n    pBVar11 = pBVar14->pBt;\n    pPVar7 = pBVar11->pPager;\n    local_34 = pPVar7;\n    if ((p->pDestDb != (sqlite3 *)0x0) && (pBVar12->inTransaction == '\x02')) {\n      local_4c = 0;\n      iVar6 = 5;\n      goto LAB_00085051;\n    }\n    if (p_00->inTrans == '\0') goto LAB_000852b9;\nLAB_00084fef:\n    local_4c = p->bDestLocked;\n    if (local_4c == 0) {\nLAB_00084ffe:\n      iVar6 = sqlite3BtreeSetPageSize(pBVar14,pBVar12->pageSize,-1,0);\n      if (iVar6 != 7) {\n        pBVar14 = p->pDest;\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }\n    local_4c = 0;\n    pPVar7 = local_34;\n    goto LAB_0008518c;\n  }\n  goto LAB_0008522e;\n  while( true ) {\n    bVar17 = CARRY4(uVar8,local_50);\n    uVar8 = uVar8 + local_50;\n    iVar13 = iVar13 + ((int)local_50 >> 0x1f) + (uint)bVar17;\n    if ((iVar6 != 0) ||\n       (uVar9 = (uint)(uVar8 < (uint)lVar5),\n       (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n       (int)((iVar13 - iVar16) - uVar9) < 0)) break;\nLAB_00085660:\n    pSrcPg = (DbPage *)0x0;\n    iVar19 = 0;\n    ppDVar18 = &pSrcPg;\n    iVar6 = __divdi3(uVar8,iVar13,local_50,(int)local_50 >> 0x1f);\n    iVar6 = (*local_5c->xGet)(local_5c,iVar6 + 1,ppDVar18,iVar19);\n    if (iVar6 == 0) {\n      iVar6 = (*psVar3->pMethods->xWrite)(psVar3,pSrcPg->pData,local_50,CONCAT44(iVar13,uVar8));\n      if (pSrcPg != (DbPage *)0x0) goto LAB_000856f0;\n    }\n    else {\n      if (pSrcPg == (DbPage *)0x0) goto LAB_000851f0;\nLAB_000856f0:\n      sqlite3PagerUnrefNotNull(pSrcPg);\n    }\n  }\nLAB_000853a0:\n  if (((iVar6 == 0) &&\n      (iVar6 = (*psVar3->pMethods->xFileSize)(psVar3,(sqlite3_int64 *)&pSrcPg), iVar6 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < pSrcPg))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < pSrcPg)) < 0 ||\n      (iVar6 = (*psVar3->pMethods->xTruncate)(psVar3,lVar4), iVar6 == 0)))) {\n    iVar6 = sqlite3PagerSync(local_34,(char *)0x0);\nLAB_000855f2:\n    if ((iVar6 != 0) ||\n       ((p->pDest->inTrans != '\0' && (iVar6 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar6 != 0)))\n       ) goto LAB_000851f0;\n    iVar6 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    p_00 = p->pSrc;\nLAB_000851fb:\n    uVar2 = p_00->inTrans;\n    if (uVar2 == '\x02') {\n      sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0);\n      p_00 = p->pSrc;\n      uVar2 = p_00->inTrans;\n    }\n    if (uVar2 != '\0') {\n      sqlite3BtreeCommitPhaseTwo(p_00,0);\n    }\n  }\n  else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }\n  if (iVar6 == 0xc0a) {\n    iVar6 = 7;\n  }\nLAB_0008522b:\n  p->rc = iVar6;\nLAB_0008522e:\n  if (p->pDestDb != (sqlite3 *)0x0) {\n    sqlite3_mutex_leave(p->pDestDb->mutex);\n  }\nLAB_00085244:\n  pBVar14 = p->pSrc;\n  if (pBVar14->sharable != '\0') {\n    piVar1 = &pBVar14->wantToLock;\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      sqlite3BtreeLeave(pBVar14);\n    }\n  }\n  sqlite3_mutex_leave(p->pSrcDb->mutex);\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar6;\n}\n\n" comment comment (function_definition "int sqlite3_backup_step(sqlite3_backup *p,int nPage)\n\n{\n  int *piVar1;\n  u8 uVar2;\n  sqlite3_file *psVar3;\n  longlong lVar4;\n  longlong lVar5;\n  int iVar6;\n  Pager *pPVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  Btree *p_00;\n  BtShared *pBVar11;\n  BtShared *pBVar12;\n  int iVar13;\n  u8 *zSrcData;\n  Btree *pBVar14;\n  DbPage *pDVar15;\n  int iVar16;\n  int in_GS_OFFSET;\n  bool bVar17;\n  DbPage **ppDVar18;\n  int iVar19;\n  BtShared *in_stack_ffffff94;\n  Pager *local_5c;\n  u32 local_50;\n  int local_4c;\n  u32 local_48;\n  DbPage *local_3c;\n  int local_38;\n  Pager *local_34;\n  DbPage *pSrcPg;\n  int local_28;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  sqlite3_mutex_enter(p->pSrcDb->mutex);\n  if (p->pSrc->sharable != '\0') {\n    sqlite3BtreeEnter(p->pSrc);\n  }\n  if (p->pDestDb == (sqlite3 *)0x0) {\n    iVar6 = p->rc;\n    if ((1 < iVar6 - 5U) && (iVar6 != 0)) goto LAB_00085244;\n    p_00 = p->pSrc;\n    pBVar14 = p->pDest;\n    pBVar12 = p_00->pBt;\n    local_5c = pBVar12->pPager;\n    pBVar11 = pBVar14->pBt;\n    local_34 = pBVar11->pPager;\n    if (p_00->inTrans != '\0') goto LAB_00084fef;\nLAB_000852b9:\n    iVar6 = sqlite3BtreeBeginTrans(p_00,0,(int *)0x0);\n    pBVar14 = p->pDest;\n    if (iVar6 == 0 && p->bDestLocked == 0) {\n      local_4c = 1;\n      pBVar12 = p->pSrc->pBt;\n      goto LAB_00084ffe;\n    }\n    if (iVar6 != 0) {\n      pBVar11 = pBVar14->pBt;\n      local_4c = 1;\n      pBVar12 = p->pSrc->pBt;\n      pPVar7 = pBVar11->pPager;\n      goto LAB_00085051;\n    }\n    local_4c = 1;\nLAB_0008501f:\n    if (p->bDestLocked == 0) {\n      iVar6 = sqlite3BtreeBeginTrans(pBVar14,2,(int *)&p->iDestSchema);\n      if (iVar6 == 0) {\n        p_00 = p->pSrc;\n        p->bDestLocked = 1;\n        pBVar11 = p->pDest->pBt;\n        pBVar12 = p_00->pBt;\n        pPVar7 = pBVar11->pPager;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      pBVar12 = p->pSrc->pBt;\n      pBVar11 = p->pDest->pBt;\n      pPVar7 = pBVar11->pPager;\nLAB_00085051:\n      uVar2 = pPVar7->journalMode;\n      local_50 = pBVar12->pageSize;\n      local_48 = pBVar11->pageSize;\n      local_3c = (DbPage *)pBVar12->nPage;\nLAB_0008506e:\n      if (iVar6 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      pBVar14 = p->pDest;\n      if (local_3c == (DbPage *)0x0) {\n        if (pBVar14->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar14);\n        }\n        pBVar14->pBt->nPage = 0;\n        if (pBVar14->pBt->nPage == 0) {\n          iVar6 = newDatabase(in_stack_ffffff94);\n          if (pBVar14->sharable == '\0') {\n            bVar17 = iVar6 == 0 || iVar6 == 0x65;\n          }\n          else {\n            iVar13 = pBVar14->wantToLock + -1;\n            pBVar14->wantToLock = iVar13;\n            bVar17 = iVar6 == 0x65 || iVar6 == 0;\n            if (iVar13 == 0) {\n              sqlite3BtreeLeave(pBVar14);\n            }\n          }\n          if (!bVar17) goto LAB_000851f0;\n        }\n        else if (pBVar14->sharable != '\0') {\n          piVar1 = &pBVar14->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar14);\n          }\n        }\n        pBVar14 = p->pDest;\n        local_3c = (DbPage *)0x1;\n      }\n      iVar6 = sqlite3BtreeUpdateMeta(pBVar14,1,p->iDestSchema + 1);\n      if (iVar6 == 0) {\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((uVar2 != '\x05') || (iVar6 = sqlite3BtreeSetVersion(p->pDest,2), iVar6 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            local_34->dbSize = ((int)local_50 / (int)local_48) * (int)local_3c;\n            iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,0);\n            goto LAB_000855f2;\n          }\n          uVar8 = (int)((int)local_3c + (int)local_48 / (int)local_50 + -1) /\n                  ((int)local_48 / (int)local_50);\n          uVar9 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n          if (uVar9 + 1 == uVar8) {\n            uVar8 = uVar9;\n          }\n          lVar4 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          psVar3 = local_34->fd;\n          uVar9 = local_34->dbSize;\n          do {\n            if ((uVar9 < uVar8) ||\n               ((uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8)))) {\n              iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1);\n              pDVar15 = (DbPage *)(local_48 + sqlite3PendingByte);\n              local_3c = (DbPage *)lVar4;\n              local_38 = (int)((ulonglong)lVar4 >> 0x20);\n              iVar13 = local_38 - ((int)pDVar15 >> 0x1f);\n              lVar5 = (longlong)(int)pDVar15;\n              if ((SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=\n                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0) {\n                lVar5 = lVar4;\n              }\n              iVar16 = (int)((ulonglong)lVar5 >> 0x20);\n              uVar8 = sqlite3PendingByte + local_50;\n              iVar13 = (int)uVar8 >> 0x1f;\n              if ((iVar6 != 0) ||\n                 (uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar6 = (*local_34->xGet)(local_34,uVar8,&pSrcPg,0);\n            if (iVar6 != 0) break;\n            iVar6 = sqlite3PagerWrite(pSrcPg);\n            if (pSrcPg != (DbPage *)0x0) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            uVar8 = uVar8 + 1;\n          } while (iVar6 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }\n    p_00 = p->pSrc;\n    pBVar11 = pBVar14->pBt;\n    pBVar12 = p_00->pBt;\n    pPVar7 = pBVar11->pPager;\nLAB_0008518c:\n    local_50 = pBVar12->pageSize;\n    local_48 = pBVar11->pageSize;\n    uVar2 = pPVar7->journalMode;\n    local_3c = (DbPage *)pBVar12->nPage;\n    if ((uVar2 != '\x05') || (local_48 == local_50)) {\n      if (nPage == 0) {\nLAB_0008551a:\n        zSrcData = (u8 *)p->iNext;\n      }\n      else {\n        zSrcData = (u8 *)p->iNext;\n        if (zSrcData <= local_3c) {\n          iVar13 = 0;\n          while( true ) {\n            iVar6 = 0;\n            if ((((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&\n                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)) &&\n               (iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),\n               pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            iVar13 = iVar13 + 1;\n            zSrcData = (u8 *)(p->iNext + 1);\n            p->iNext = (Pgno)zSrcData;\n            if (((nPage <= iVar13) && (-1 < nPage)) || (local_3c < zSrcData)) break;\n            if (iVar6 != 0) goto LAB_0008506e;\n            p_00 = p->pSrc;\n          }\n          if (iVar6 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      p->nPagecount = (Pgno)local_3c;\n      p->nRemaining = (Pgno)((int)local_3c + (1 - (int)zSrcData));\n      if (local_3c < zSrcData) goto LAB_00085077;\n      if (p->isAttached == 0) {\n        pPVar7 = p->pSrc->pBt->pPager;\n        p->pNext = pPVar7->pBackup;\n        pPVar7->pBackup = p;\n        p->isAttached = 1;\n      }\n      iVar6 = 0;\n      goto joined_r0x0008561f;\n    }\n    if (nPage == 0) {\n      iVar6 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }\n    iVar6 = 8;\n    if (local_3c < (u8 *)p->iNext) {\n      iVar6 = 8;\n      goto LAB_000851f0;\n    }\n    if (local_4c != 0) goto LAB_000851fb;\n    goto LAB_0008522b;\n  }\n  sqlite3_mutex_enter(p->pDestDb->mutex);\n  iVar6 = p->rc;\n  if ((iVar6 - 5U < 2) || (iVar6 == 0)) {\n    p_00 = p->pSrc;\n    pBVar14 = p->pDest;\n    pBVar12 = p_00->pBt;\n    local_5c = pBVar12->pPager;\n    pBVar11 = pBVar14->pBt;\n    pPVar7 = pBVar11->pPager;\n    local_34 = pPVar7;\n    if ((p->pDestDb != (sqlite3 *)0x0) && (pBVar12->inTransaction == '\x02')) {\n      local_4c = 0;\n      iVar6 = 5;\n      goto LAB_00085051;\n    }\n    if (p_00->inTrans == '\0') goto LAB_000852b9;\nLAB_00084fef:\n    local_4c = p->bDestLocked;\n    if (local_4c == 0) {\nLAB_00084ffe:\n      iVar6 = sqlite3BtreeSetPageSize(pBVar14,pBVar12->pageSize,-1,0);\n      if (iVar6 != 7) {\n        pBVar14 = p->pDest;\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }\n    local_4c = 0;\n    pPVar7 = local_34;\n    goto LAB_0008518c;\n  }\n  goto LAB_0008522e;\n  while( true ) {\n    bVar17 = CARRY4(uVar8,local_50);\n    uVar8 = uVar8 + local_50;\n    iVar13 = iVar13 + ((int)local_50 >> 0x1f) + (uint)bVar17;\n    if ((iVar6 != 0) ||\n       (uVar9 = (uint)(uVar8 < (uint)lVar5),\n       (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n       (int)((iVar13 - iVar16) - uVar9) < 0)) break;\nLAB_00085660:\n    pSrcPg = (DbPage *)0x0;\n    iVar19 = 0;\n    ppDVar18 = &pSrcPg;\n    iVar6 = __divdi3(uVar8,iVar13,local_50,(int)local_50 >> 0x1f);\n    iVar6 = (*local_5c->xGet)(local_5c,iVar6 + 1,ppDVar18,iVar19);\n    if (iVar6 == 0) {\n      iVar6 = (*psVar3->pMethods->xWrite)(psVar3,pSrcPg->pData,local_50,CONCAT44(iVar13,uVar8));\n      if (pSrcPg != (DbPage *)0x0) goto LAB_000856f0;\n    }\n    else {\n      if (pSrcPg == (DbPage *)0x0) goto LAB_000851f0;\nLAB_000856f0:\n      sqlite3PagerUnrefNotNull(pSrcPg);\n    }\n  }\nLAB_000853a0:\n  if (((iVar6 == 0) &&\n      (iVar6 = (*psVar3->pMethods->xFileSize)(psVar3,(sqlite3_int64 *)&pSrcPg), iVar6 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < pSrcPg))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < pSrcPg)) < 0 ||\n      (iVar6 = (*psVar3->pMethods->xTruncate)(psVar3,lVar4), iVar6 == 0)))) {\n    iVar6 = sqlite3PagerSync(local_34,(char *)0x0);\nLAB_000855f2:\n    if ((iVar6 != 0) ||\n       ((p->pDest->inTrans != '\0' && (iVar6 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar6 != 0)))\n       ) goto LAB_000851f0;\n    iVar6 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    p_00 = p->pSrc;\nLAB_000851fb:\n    uVar2 = p_00->inTrans;\n    if (uVar2 == '\x02') {\n      sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0);\n      p_00 = p->pSrc;\n      uVar2 = p_00->inTrans;\n    }\n    if (uVar2 != '\0') {\n      sqlite3BtreeCommitPhaseTwo(p_00,0);\n    }\n  }\n  else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }\n  if (iVar6 == 0xc0a) {\n    iVar6 = 7;\n  }\nLAB_0008522b:\n  p->rc = iVar6;\nLAB_0008522e:\n  if (p->pDestDb != (sqlite3 *)0x0) {\n    sqlite3_mutex_leave(p->pDestDb->mutex);\n  }\nLAB_00085244:\n  pBVar14 = p->pSrc;\n  if (pBVar14->sharable != '\0') {\n    piVar1 = &pBVar14->wantToLock;\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      sqlite3BtreeLeave(pBVar14);\n    }\n  }\n  sqlite3_mutex_leave(p->pSrcDb->mutex);\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar6;\n}" primitive_type (function_declarator "sqlite3_backup_step(sqlite3_backup *p,int nPage)" identifier (parameter_list "(sqlite3_backup *p,int nPage)" ( (parameter_declaration "sqlite3_backup *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "int nPage" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  u8 uVar2;\n  sqlite3_file *psVar3;\n  longlong lVar4;\n  longlong lVar5;\n  int iVar6;\n  Pager *pPVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  Btree *p_00;\n  BtShared *pBVar11;\n  BtShared *pBVar12;\n  int iVar13;\n  u8 *zSrcData;\n  Btree *pBVar14;\n  DbPage *pDVar15;\n  int iVar16;\n  int in_GS_OFFSET;\n  bool bVar17;\n  DbPage **ppDVar18;\n  int iVar19;\n  BtShared *in_stack_ffffff94;\n  Pager *local_5c;\n  u32 local_50;\n  int local_4c;\n  u32 local_48;\n  DbPage *local_3c;\n  int local_38;\n  Pager *local_34;\n  DbPage *pSrcPg;\n  int local_28;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  sqlite3_mutex_enter(p->pSrcDb->mutex);\n  if (p->pSrc->sharable != '\0') {\n    sqlite3BtreeEnter(p->pSrc);\n  }\n  if (p->pDestDb == (sqlite3 *)0x0) {\n    iVar6 = p->rc;\n    if ((1 < iVar6 - 5U) && (iVar6 != 0)) goto LAB_00085244;\n    p_00 = p->pSrc;\n    pBVar14 = p->pDest;\n    pBVar12 = p_00->pBt;\n    local_5c = pBVar12->pPager;\n    pBVar11 = pBVar14->pBt;\n    local_34 = pBVar11->pPager;\n    if (p_00->inTrans != '\0') goto LAB_00084fef;\nLAB_000852b9:\n    iVar6 = sqlite3BtreeBeginTrans(p_00,0,(int *)0x0);\n    pBVar14 = p->pDest;\n    if (iVar6 == 0 && p->bDestLocked == 0) {\n      local_4c = 1;\n      pBVar12 = p->pSrc->pBt;\n      goto LAB_00084ffe;\n    }\n    if (iVar6 != 0) {\n      pBVar11 = pBVar14->pBt;\n      local_4c = 1;\n      pBVar12 = p->pSrc->pBt;\n      pPVar7 = pBVar11->pPager;\n      goto LAB_00085051;\n    }\n    local_4c = 1;\nLAB_0008501f:\n    if (p->bDestLocked == 0) {\n      iVar6 = sqlite3BtreeBeginTrans(pBVar14,2,(int *)&p->iDestSchema);\n      if (iVar6 == 0) {\n        p_00 = p->pSrc;\n        p->bDestLocked = 1;\n        pBVar11 = p->pDest->pBt;\n        pBVar12 = p_00->pBt;\n        pPVar7 = pBVar11->pPager;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      pBVar12 = p->pSrc->pBt;\n      pBVar11 = p->pDest->pBt;\n      pPVar7 = pBVar11->pPager;\nLAB_00085051:\n      uVar2 = pPVar7->journalMode;\n      local_50 = pBVar12->pageSize;\n      local_48 = pBVar11->pageSize;\n      local_3c = (DbPage *)pBVar12->nPage;\nLAB_0008506e:\n      if (iVar6 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      pBVar14 = p->pDest;\n      if (local_3c == (DbPage *)0x0) {\n        if (pBVar14->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar14);\n        }\n        pBVar14->pBt->nPage = 0;\n        if (pBVar14->pBt->nPage == 0) {\n          iVar6 = newDatabase(in_stack_ffffff94);\n          if (pBVar14->sharable == '\0') {\n            bVar17 = iVar6 == 0 || iVar6 == 0x65;\n          }\n          else {\n            iVar13 = pBVar14->wantToLock + -1;\n            pBVar14->wantToLock = iVar13;\n            bVar17 = iVar6 == 0x65 || iVar6 == 0;\n            if (iVar13 == 0) {\n              sqlite3BtreeLeave(pBVar14);\n            }\n          }\n          if (!bVar17) goto LAB_000851f0;\n        }\n        else if (pBVar14->sharable != '\0') {\n          piVar1 = &pBVar14->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar14);\n          }\n        }\n        pBVar14 = p->pDest;\n        local_3c = (DbPage *)0x1;\n      }\n      iVar6 = sqlite3BtreeUpdateMeta(pBVar14,1,p->iDestSchema + 1);\n      if (iVar6 == 0) {\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((uVar2 != '\x05') || (iVar6 = sqlite3BtreeSetVersion(p->pDest,2), iVar6 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            local_34->dbSize = ((int)local_50 / (int)local_48) * (int)local_3c;\n            iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,0);\n            goto LAB_000855f2;\n          }\n          uVar8 = (int)((int)local_3c + (int)local_48 / (int)local_50 + -1) /\n                  ((int)local_48 / (int)local_50);\n          uVar9 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n          if (uVar9 + 1 == uVar8) {\n            uVar8 = uVar9;\n          }\n          lVar4 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          psVar3 = local_34->fd;\n          uVar9 = local_34->dbSize;\n          do {\n            if ((uVar9 < uVar8) ||\n               ((uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8)))) {\n              iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1);\n              pDVar15 = (DbPage *)(local_48 + sqlite3PendingByte);\n              local_3c = (DbPage *)lVar4;\n              local_38 = (int)((ulonglong)lVar4 >> 0x20);\n              iVar13 = local_38 - ((int)pDVar15 >> 0x1f);\n              lVar5 = (longlong)(int)pDVar15;\n              if ((SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=\n                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0) {\n                lVar5 = lVar4;\n              }\n              iVar16 = (int)((ulonglong)lVar5 >> 0x20);\n              uVar8 = sqlite3PendingByte + local_50;\n              iVar13 = (int)uVar8 >> 0x1f;\n              if ((iVar6 != 0) ||\n                 (uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar6 = (*local_34->xGet)(local_34,uVar8,&pSrcPg,0);\n            if (iVar6 != 0) break;\n            iVar6 = sqlite3PagerWrite(pSrcPg);\n            if (pSrcPg != (DbPage *)0x0) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            uVar8 = uVar8 + 1;\n          } while (iVar6 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }\n    p_00 = p->pSrc;\n    pBVar11 = pBVar14->pBt;\n    pBVar12 = p_00->pBt;\n    pPVar7 = pBVar11->pPager;\nLAB_0008518c:\n    local_50 = pBVar12->pageSize;\n    local_48 = pBVar11->pageSize;\n    uVar2 = pPVar7->journalMode;\n    local_3c = (DbPage *)pBVar12->nPage;\n    if ((uVar2 != '\x05') || (local_48 == local_50)) {\n      if (nPage == 0) {\nLAB_0008551a:\n        zSrcData = (u8 *)p->iNext;\n      }\n      else {\n        zSrcData = (u8 *)p->iNext;\n        if (zSrcData <= local_3c) {\n          iVar13 = 0;\n          while( true ) {\n            iVar6 = 0;\n            if ((((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&\n                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)) &&\n               (iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),\n               pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            iVar13 = iVar13 + 1;\n            zSrcData = (u8 *)(p->iNext + 1);\n            p->iNext = (Pgno)zSrcData;\n            if (((nPage <= iVar13) && (-1 < nPage)) || (local_3c < zSrcData)) break;\n            if (iVar6 != 0) goto LAB_0008506e;\n            p_00 = p->pSrc;\n          }\n          if (iVar6 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      p->nPagecount = (Pgno)local_3c;\n      p->nRemaining = (Pgno)((int)local_3c + (1 - (int)zSrcData));\n      if (local_3c < zSrcData) goto LAB_00085077;\n      if (p->isAttached == 0) {\n        pPVar7 = p->pSrc->pBt->pPager;\n        p->pNext = pPVar7->pBackup;\n        pPVar7->pBackup = p;\n        p->isAttached = 1;\n      }\n      iVar6 = 0;\n      goto joined_r0x0008561f;\n    }\n    if (nPage == 0) {\n      iVar6 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }\n    iVar6 = 8;\n    if (local_3c < (u8 *)p->iNext) {\n      iVar6 = 8;\n      goto LAB_000851f0;\n    }\n    if (local_4c != 0) goto LAB_000851fb;\n    goto LAB_0008522b;\n  }\n  sqlite3_mutex_enter(p->pDestDb->mutex);\n  iVar6 = p->rc;\n  if ((iVar6 - 5U < 2) || (iVar6 == 0)) {\n    p_00 = p->pSrc;\n    pBVar14 = p->pDest;\n    pBVar12 = p_00->pBt;\n    local_5c = pBVar12->pPager;\n    pBVar11 = pBVar14->pBt;\n    pPVar7 = pBVar11->pPager;\n    local_34 = pPVar7;\n    if ((p->pDestDb != (sqlite3 *)0x0) && (pBVar12->inTransaction == '\x02')) {\n      local_4c = 0;\n      iVar6 = 5;\n      goto LAB_00085051;\n    }\n    if (p_00->inTrans == '\0') goto LAB_000852b9;\nLAB_00084fef:\n    local_4c = p->bDestLocked;\n    if (local_4c == 0) {\nLAB_00084ffe:\n      iVar6 = sqlite3BtreeSetPageSize(pBVar14,pBVar12->pageSize,-1,0);\n      if (iVar6 != 7) {\n        pBVar14 = p->pDest;\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }\n    local_4c = 0;\n    pPVar7 = local_34;\n    goto LAB_0008518c;\n  }\n  goto LAB_0008522e;\n  while( true ) {\n    bVar17 = CARRY4(uVar8,local_50);\n    uVar8 = uVar8 + local_50;\n    iVar13 = iVar13 + ((int)local_50 >> 0x1f) + (uint)bVar17;\n    if ((iVar6 != 0) ||\n       (uVar9 = (uint)(uVar8 < (uint)lVar5),\n       (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n       (int)((iVar13 - iVar16) - uVar9) < 0)) break;\nLAB_00085660:\n    pSrcPg = (DbPage *)0x0;\n    iVar19 = 0;\n    ppDVar18 = &pSrcPg;\n    iVar6 = __divdi3(uVar8,iVar13,local_50,(int)local_50 >> 0x1f);\n    iVar6 = (*local_5c->xGet)(local_5c,iVar6 + 1,ppDVar18,iVar19);\n    if (iVar6 == 0) {\n      iVar6 = (*psVar3->pMethods->xWrite)(psVar3,pSrcPg->pData,local_50,CONCAT44(iVar13,uVar8));\n      if (pSrcPg != (DbPage *)0x0) goto LAB_000856f0;\n    }\n    else {\n      if (pSrcPg == (DbPage *)0x0) goto LAB_000851f0;\nLAB_000856f0:\n      sqlite3PagerUnrefNotNull(pSrcPg);\n    }\n  }\nLAB_000853a0:\n  if (((iVar6 == 0) &&\n      (iVar6 = (*psVar3->pMethods->xFileSize)(psVar3,(sqlite3_int64 *)&pSrcPg), iVar6 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < pSrcPg))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < pSrcPg)) < 0 ||\n      (iVar6 = (*psVar3->pMethods->xTruncate)(psVar3,lVar4), iVar6 == 0)))) {\n    iVar6 = sqlite3PagerSync(local_34,(char *)0x0);\nLAB_000855f2:\n    if ((iVar6 != 0) ||\n       ((p->pDest->inTrans != '\0' && (iVar6 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar6 != 0)))\n       ) goto LAB_000851f0;\n    iVar6 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    p_00 = p->pSrc;\nLAB_000851fb:\n    uVar2 = p_00->inTrans;\n    if (uVar2 == '\x02') {\n      sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0);\n      p_00 = p->pSrc;\n      uVar2 = p_00->inTrans;\n    }\n    if (uVar2 != '\0') {\n      sqlite3BtreeCommitPhaseTwo(p_00,0);\n    }\n  }\n  else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }\n  if (iVar6 == 0xc0a) {\n    iVar6 = 7;\n  }\nLAB_0008522b:\n  p->rc = iVar6;\nLAB_0008522e:\n  if (p->pDestDb != (sqlite3 *)0x0) {\n    sqlite3_mutex_leave(p->pDestDb->mutex);\n  }\nLAB_00085244:\n  pBVar14 = p->pSrc;\n  if (pBVar14->sharable != '\0') {\n    piVar1 = &pBVar14->wantToLock;\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      sqlite3BtreeLeave(pBVar14);\n    }\n  }\n  sqlite3_mutex_leave(p->pSrcDb->mutex);\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar6;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "u8 uVar2;" type_identifier identifier ;) (declaration "sqlite3_file *psVar3;" type_identifier (pointer_declarator "*psVar3" * identifier) ;) (declaration "longlong lVar4;" type_identifier identifier ;) (declaration "longlong lVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "Pager *pPVar7;" type_identifier (pointer_declarator "*pPVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "Btree *p_00;" type_identifier (pointer_declarator "*p_00" * identifier) ;) (declaration "BtShared *pBVar11;" type_identifier (pointer_declarator "*pBVar11" * identifier) ;) (declaration "BtShared *pBVar12;" type_identifier (pointer_declarator "*pBVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "u8 *zSrcData;" type_identifier (pointer_declarator "*zSrcData" * identifier) ;) (declaration "Btree *pBVar14;" type_identifier (pointer_declarator "*pBVar14" * identifier) ;) (declaration "DbPage *pDVar15;" type_identifier (pointer_declarator "*pDVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "DbPage **ppDVar18;" type_identifier (pointer_declarator "**ppDVar18" * (pointer_declarator "*ppDVar18" * identifier)) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "BtShared *in_stack_ffffff94;" type_identifier (pointer_declarator "*in_stack_ffffff94" * identifier) ;) (declaration "Pager *local_5c;" type_identifier (pointer_declarator "*local_5c" * identifier) ;) (declaration "u32 local_50;" type_identifier identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "u32 local_48;" type_identifier identifier ;) (declaration "DbPage *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "Pager *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "DbPage *pSrcPg;" type_identifier (pointer_declarator "*pSrcPg" * identifier) ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (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 "sqlite3_mutex_enter(p->pSrcDb->mutex);" (call_expression "sqlite3_mutex_enter(p->pSrcDb->mutex)" identifier (argument_list "(p->pSrcDb->mutex)" ( (field_expression "p->pSrcDb->mutex" (field_expression "p->pSrcDb" identifier -> field_identifier) -> field_identifier) ))) ;) (if_statement "if (p->pSrc->sharable != '\0') {\n    sqlite3BtreeEnter(p->pSrc);\n  }" if (parenthesized_expression "(p->pSrc->sharable != '\0')" ( (binary_expression "p->pSrc->sharable != '\0'" (field_expression "p->pSrc->sharable" (field_expression "p->pSrc" identifier -> field_identifier) -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    sqlite3BtreeEnter(p->pSrc);\n  }" { (expression_statement "sqlite3BtreeEnter(p->pSrc);" (call_expression "sqlite3BtreeEnter(p->pSrc)" identifier (argument_list "(p->pSrc)" ( (field_expression "p->pSrc" identifier -> field_identifier) ))) ;) })) (if_statement "if (p->pDestDb == (sqlite3 *)0x0) {\n    iVar6 = p->rc;\n    if ((1 < iVar6 - 5U) && (iVar6 != 0)) goto LAB_00085244;\n    p_00 = p->pSrc;\n    pBVar14 = p->pDest;\n    pBVar12 = p_00->pBt;\n    local_5c = pBVar12->pPager;\n    pBVar11 = pBVar14->pBt;\n    local_34 = pBVar11->pPager;\n    if (p_00->inTrans != '\0') goto LAB_00084fef;\nLAB_000852b9:\n    iVar6 = sqlite3BtreeBeginTrans(p_00,0,(int *)0x0);\n    pBVar14 = p->pDest;\n    if (iVar6 == 0 && p->bDestLocked == 0) {\n      local_4c = 1;\n      pBVar12 = p->pSrc->pBt;\n      goto LAB_00084ffe;\n    }\n    if (iVar6 != 0) {\n      pBVar11 = pBVar14->pBt;\n      local_4c = 1;\n      pBVar12 = p->pSrc->pBt;\n      pPVar7 = pBVar11->pPager;\n      goto LAB_00085051;\n    }\n    local_4c = 1;\nLAB_0008501f:\n    if (p->bDestLocked == 0) {\n      iVar6 = sqlite3BtreeBeginTrans(pBVar14,2,(int *)&p->iDestSchema);\n      if (iVar6 == 0) {\n        p_00 = p->pSrc;\n        p->bDestLocked = 1;\n        pBVar11 = p->pDest->pBt;\n        pBVar12 = p_00->pBt;\n        pPVar7 = pBVar11->pPager;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      pBVar12 = p->pSrc->pBt;\n      pBVar11 = p->pDest->pBt;\n      pPVar7 = pBVar11->pPager;\nLAB_00085051:\n      uVar2 = pPVar7->journalMode;\n      local_50 = pBVar12->pageSize;\n      local_48 = pBVar11->pageSize;\n      local_3c = (DbPage *)pBVar12->nPage;\nLAB_0008506e:\n      if (iVar6 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      pBVar14 = p->pDest;\n      if (local_3c == (DbPage *)0x0) {\n        if (pBVar14->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar14);\n        }\n        pBVar14->pBt->nPage = 0;\n        if (pBVar14->pBt->nPage == 0) {\n          iVar6 = newDatabase(in_stack_ffffff94);\n          if (pBVar14->sharable == '\0') {\n            bVar17 = iVar6 == 0 || iVar6 == 0x65;\n          }\n          else {\n            iVar13 = pBVar14->wantToLock + -1;\n            pBVar14->wantToLock = iVar13;\n            bVar17 = iVar6 == 0x65 || iVar6 == 0;\n            if (iVar13 == 0) {\n              sqlite3BtreeLeave(pBVar14);\n            }\n          }\n          if (!bVar17) goto LAB_000851f0;\n        }\n        else if (pBVar14->sharable != '\0') {\n          piVar1 = &pBVar14->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar14);\n          }\n        }\n        pBVar14 = p->pDest;\n        local_3c = (DbPage *)0x1;\n      }\n      iVar6 = sqlite3BtreeUpdateMeta(pBVar14,1,p->iDestSchema + 1);\n      if (iVar6 == 0) {\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((uVar2 != '\x05') || (iVar6 = sqlite3BtreeSetVersion(p->pDest,2), iVar6 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            local_34->dbSize = ((int)local_50 / (int)local_48) * (int)local_3c;\n            iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,0);\n            goto LAB_000855f2;\n          }\n          uVar8 = (int)((int)local_3c + (int)local_48 / (int)local_50 + -1) /\n                  ((int)local_48 / (int)local_50);\n          uVar9 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n          if (uVar9 + 1 == uVar8) {\n            uVar8 = uVar9;\n          }\n          lVar4 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          psVar3 = local_34->fd;\n          uVar9 = local_34->dbSize;\n          do {\n            if ((uVar9 < uVar8) ||\n               ((uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8)))) {\n              iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1);\n              pDVar15 = (DbPage *)(local_48 + sqlite3PendingByte);\n              local_3c = (DbPage *)lVar4;\n              local_38 = (int)((ulonglong)lVar4 >> 0x20);\n              iVar13 = local_38 - ((int)pDVar15 >> 0x1f);\n              lVar5 = (longlong)(int)pDVar15;\n              if ((SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=\n                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0) {\n                lVar5 = lVar4;\n              }\n              iVar16 = (int)((ulonglong)lVar5 >> 0x20);\n              uVar8 = sqlite3PendingByte + local_50;\n              iVar13 = (int)uVar8 >> 0x1f;\n              if ((iVar6 != 0) ||\n                 (uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar6 = (*local_34->xGet)(local_34,uVar8,&pSrcPg,0);\n            if (iVar6 != 0) break;\n            iVar6 = sqlite3PagerWrite(pSrcPg);\n            if (pSrcPg != (DbPage *)0x0) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            uVar8 = uVar8 + 1;\n          } while (iVar6 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }\n    p_00 = p->pSrc;\n    pBVar11 = pBVar14->pBt;\n    pBVar12 = p_00->pBt;\n    pPVar7 = pBVar11->pPager;\nLAB_0008518c:\n    local_50 = pBVar12->pageSize;\n    local_48 = pBVar11->pageSize;\n    uVar2 = pPVar7->journalMode;\n    local_3c = (DbPage *)pBVar12->nPage;\n    if ((uVar2 != '\x05') || (local_48 == local_50)) {\n      if (nPage == 0) {\nLAB_0008551a:\n        zSrcData = (u8 *)p->iNext;\n      }\n      else {\n        zSrcData = (u8 *)p->iNext;\n        if (zSrcData <= local_3c) {\n          iVar13 = 0;\n          while( true ) {\n            iVar6 = 0;\n            if ((((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&\n                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)) &&\n               (iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),\n               pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            iVar13 = iVar13 + 1;\n            zSrcData = (u8 *)(p->iNext + 1);\n            p->iNext = (Pgno)zSrcData;\n            if (((nPage <= iVar13) && (-1 < nPage)) || (local_3c < zSrcData)) break;\n            if (iVar6 != 0) goto LAB_0008506e;\n            p_00 = p->pSrc;\n          }\n          if (iVar6 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      p->nPagecount = (Pgno)local_3c;\n      p->nRemaining = (Pgno)((int)local_3c + (1 - (int)zSrcData));\n      if (local_3c < zSrcData) goto LAB_00085077;\n      if (p->isAttached == 0) {\n        pPVar7 = p->pSrc->pBt->pPager;\n        p->pNext = pPVar7->pBackup;\n        pPVar7->pBackup = p;\n        p->isAttached = 1;\n      }\n      iVar6 = 0;\n      goto joined_r0x0008561f;\n    }\n    if (nPage == 0) {\n      iVar6 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }\n    iVar6 = 8;\n    if (local_3c < (u8 *)p->iNext) {\n      iVar6 = 8;\n      goto LAB_000851f0;\n    }\n    if (local_4c != 0) goto LAB_000851fb;\n    goto LAB_0008522b;\n  }" if (parenthesized_expression "(p->pDestDb == (sqlite3 *)0x0)" ( (binary_expression "p->pDestDb == (sqlite3 *)0x0" (field_expression "p->pDestDb" identifier -> field_identifier) == (cast_expression "(sqlite3 *)0x0" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar6 = p->rc;\n    if ((1 < iVar6 - 5U) && (iVar6 != 0)) goto LAB_00085244;\n    p_00 = p->pSrc;\n    pBVar14 = p->pDest;\n    pBVar12 = p_00->pBt;\n    local_5c = pBVar12->pPager;\n    pBVar11 = pBVar14->pBt;\n    local_34 = pBVar11->pPager;\n    if (p_00->inTrans != '\0') goto LAB_00084fef;\nLAB_000852b9:\n    iVar6 = sqlite3BtreeBeginTrans(p_00,0,(int *)0x0);\n    pBVar14 = p->pDest;\n    if (iVar6 == 0 && p->bDestLocked == 0) {\n      local_4c = 1;\n      pBVar12 = p->pSrc->pBt;\n      goto LAB_00084ffe;\n    }\n    if (iVar6 != 0) {\n      pBVar11 = pBVar14->pBt;\n      local_4c = 1;\n      pBVar12 = p->pSrc->pBt;\n      pPVar7 = pBVar11->pPager;\n      goto LAB_00085051;\n    }\n    local_4c = 1;\nLAB_0008501f:\n    if (p->bDestLocked == 0) {\n      iVar6 = sqlite3BtreeBeginTrans(pBVar14,2,(int *)&p->iDestSchema);\n      if (iVar6 == 0) {\n        p_00 = p->pSrc;\n        p->bDestLocked = 1;\n        pBVar11 = p->pDest->pBt;\n        pBVar12 = p_00->pBt;\n        pPVar7 = pBVar11->pPager;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      pBVar12 = p->pSrc->pBt;\n      pBVar11 = p->pDest->pBt;\n      pPVar7 = pBVar11->pPager;\nLAB_00085051:\n      uVar2 = pPVar7->journalMode;\n      local_50 = pBVar12->pageSize;\n      local_48 = pBVar11->pageSize;\n      local_3c = (DbPage *)pBVar12->nPage;\nLAB_0008506e:\n      if (iVar6 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      pBVar14 = p->pDest;\n      if (local_3c == (DbPage *)0x0) {\n        if (pBVar14->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar14);\n        }\n        pBVar14->pBt->nPage = 0;\n        if (pBVar14->pBt->nPage == 0) {\n          iVar6 = newDatabase(in_stack_ffffff94);\n          if (pBVar14->sharable == '\0') {\n            bVar17 = iVar6 == 0 || iVar6 == 0x65;\n          }\n          else {\n            iVar13 = pBVar14->wantToLock + -1;\n            pBVar14->wantToLock = iVar13;\n            bVar17 = iVar6 == 0x65 || iVar6 == 0;\n            if (iVar13 == 0) {\n              sqlite3BtreeLeave(pBVar14);\n            }\n          }\n          if (!bVar17) goto LAB_000851f0;\n        }\n        else if (pBVar14->sharable != '\0') {\n          piVar1 = &pBVar14->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar14);\n          }\n        }\n        pBVar14 = p->pDest;\n        local_3c = (DbPage *)0x1;\n      }\n      iVar6 = sqlite3BtreeUpdateMeta(pBVar14,1,p->iDestSchema + 1);\n      if (iVar6 == 0) {\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((uVar2 != '\x05') || (iVar6 = sqlite3BtreeSetVersion(p->pDest,2), iVar6 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            local_34->dbSize = ((int)local_50 / (int)local_48) * (int)local_3c;\n            iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,0);\n            goto LAB_000855f2;\n          }\n          uVar8 = (int)((int)local_3c + (int)local_48 / (int)local_50 + -1) /\n                  ((int)local_48 / (int)local_50);\n          uVar9 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n          if (uVar9 + 1 == uVar8) {\n            uVar8 = uVar9;\n          }\n          lVar4 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          psVar3 = local_34->fd;\n          uVar9 = local_34->dbSize;\n          do {\n            if ((uVar9 < uVar8) ||\n               ((uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8)))) {\n              iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1);\n              pDVar15 = (DbPage *)(local_48 + sqlite3PendingByte);\n              local_3c = (DbPage *)lVar4;\n              local_38 = (int)((ulonglong)lVar4 >> 0x20);\n              iVar13 = local_38 - ((int)pDVar15 >> 0x1f);\n              lVar5 = (longlong)(int)pDVar15;\n              if ((SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=\n                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0) {\n                lVar5 = lVar4;\n              }\n              iVar16 = (int)((ulonglong)lVar5 >> 0x20);\n              uVar8 = sqlite3PendingByte + local_50;\n              iVar13 = (int)uVar8 >> 0x1f;\n              if ((iVar6 != 0) ||\n                 (uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar6 = (*local_34->xGet)(local_34,uVar8,&pSrcPg,0);\n            if (iVar6 != 0) break;\n            iVar6 = sqlite3PagerWrite(pSrcPg);\n            if (pSrcPg != (DbPage *)0x0) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            uVar8 = uVar8 + 1;\n          } while (iVar6 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }\n    p_00 = p->pSrc;\n    pBVar11 = pBVar14->pBt;\n    pBVar12 = p_00->pBt;\n    pPVar7 = pBVar11->pPager;\nLAB_0008518c:\n    local_50 = pBVar12->pageSize;\n    local_48 = pBVar11->pageSize;\n    uVar2 = pPVar7->journalMode;\n    local_3c = (DbPage *)pBVar12->nPage;\n    if ((uVar2 != '\x05') || (local_48 == local_50)) {\n      if (nPage == 0) {\nLAB_0008551a:\n        zSrcData = (u8 *)p->iNext;\n      }\n      else {\n        zSrcData = (u8 *)p->iNext;\n        if (zSrcData <= local_3c) {\n          iVar13 = 0;\n          while( true ) {\n            iVar6 = 0;\n            if ((((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&\n                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)) &&\n               (iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),\n               pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            iVar13 = iVar13 + 1;\n            zSrcData = (u8 *)(p->iNext + 1);\n            p->iNext = (Pgno)zSrcData;\n            if (((nPage <= iVar13) && (-1 < nPage)) || (local_3c < zSrcData)) break;\n            if (iVar6 != 0) goto LAB_0008506e;\n            p_00 = p->pSrc;\n          }\n          if (iVar6 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      p->nPagecount = (Pgno)local_3c;\n      p->nRemaining = (Pgno)((int)local_3c + (1 - (int)zSrcData));\n      if (local_3c < zSrcData) goto LAB_00085077;\n      if (p->isAttached == 0) {\n        pPVar7 = p->pSrc->pBt->pPager;\n        p->pNext = pPVar7->pBackup;\n        pPVar7->pBackup = p;\n        p->isAttached = 1;\n      }\n      iVar6 = 0;\n      goto joined_r0x0008561f;\n    }\n    if (nPage == 0) {\n      iVar6 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }\n    iVar6 = 8;\n    if (local_3c < (u8 *)p->iNext) {\n      iVar6 = 8;\n      goto LAB_000851f0;\n    }\n    if (local_4c != 0) goto LAB_000851fb;\n    goto LAB_0008522b;\n  }" { (expression_statement "iVar6 = p->rc;" (assignment_expression "iVar6 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;) (if_statement "if ((1 < iVar6 - 5U) && (iVar6 != 0)) goto LAB_00085244;" if (parenthesized_expression "((1 < iVar6 - 5U) && (iVar6 != 0))" ( (binary_expression "(1 < iVar6 - 5U) && (iVar6 != 0)" (parenthesized_expression "(1 < iVar6 - 5U)" ( (binary_expression "1 < iVar6 - 5U" number_literal < (binary_expression "iVar6 - 5U" identifier - number_literal)) )) && (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_00085244;" goto statement_identifier ;)) (expression_statement "p_00 = p->pSrc;" (assignment_expression "p_00 = p->pSrc" identifier = (field_expression "p->pSrc" identifier -> field_identifier)) ;) (expression_statement "pBVar14 = p->pDest;" (assignment_expression "pBVar14 = p->pDest" identifier = (field_expression "p->pDest" identifier -> field_identifier)) ;) (expression_statement "pBVar12 = p_00->pBt;" (assignment_expression "pBVar12 = p_00->pBt" identifier = (field_expression "p_00->pBt" identifier -> field_identifier)) ;) (expression_statement "local_5c = pBVar12->pPager;" (assignment_expression "local_5c = pBVar12->pPager" identifier = (field_expression "pBVar12->pPager" identifier -> field_identifier)) ;) (expression_statement "pBVar11 = pBVar14->pBt;" (assignment_expression "pBVar11 = pBVar14->pBt" identifier = (field_expression "pBVar14->pBt" identifier -> field_identifier)) ;) (expression_statement "local_34 = pBVar11->pPager;" (assignment_expression "local_34 = pBVar11->pPager" identifier = (field_expression "pBVar11->pPager" identifier -> field_identifier)) ;) (if_statement "if (p_00->inTrans != '\0') goto LAB_00084fef;" if (parenthesized_expression "(p_00->inTrans != '\0')" ( (binary_expression "p_00->inTrans != '\0'" (field_expression "p_00->inTrans" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00084fef;" goto statement_identifier ;)) (labeled_statement "LAB_000852b9:\n    iVar6 = sqlite3BtreeBeginTrans(p_00,0,(int *)0x0);" statement_identifier : (expression_statement "iVar6 = sqlite3BtreeBeginTrans(p_00,0,(int *)0x0);" (assignment_expression "iVar6 = sqlite3BtreeBeginTrans(p_00,0,(int *)0x0)" identifier = (call_expression "sqlite3BtreeBeginTrans(p_00,0,(int *)0x0)" identifier (argument_list "(p_00,0,(int *)0x0)" ( identifier , number_literal , (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;)) (expression_statement "pBVar14 = p->pDest;" (assignment_expression "pBVar14 = p->pDest" identifier = (field_expression "p->pDest" identifier -> field_identifier)) ;) (if_statement "if (iVar6 == 0 && p->bDestLocked == 0) {\n      local_4c = 1;\n      pBVar12 = p->pSrc->pBt;\n      goto LAB_00084ffe;\n    }" if (parenthesized_expression "(iVar6 == 0 && p->bDestLocked == 0)" ( (binary_expression "iVar6 == 0 && p->bDestLocked == 0" (binary_expression "iVar6 == 0" identifier == number_literal) && (binary_expression "p->bDestLocked == 0" (field_expression "p->bDestLocked" identifier -> field_identifier) == number_literal)) )) (compound_statement "{\n      local_4c = 1;\n      pBVar12 = p->pSrc->pBt;\n      goto LAB_00084ffe;\n    }" { (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" identifier = number_literal) ;) (expression_statement "pBVar12 = p->pSrc->pBt;" (assignment_expression "pBVar12 = p->pSrc->pBt" identifier = (field_expression "p->pSrc->pBt" (field_expression "p->pSrc" identifier -> field_identifier) -> field_identifier)) ;) (goto_statement "goto LAB_00084ffe;" goto statement_identifier ;) })) (if_statement "if (iVar6 != 0) {\n      pBVar11 = pBVar14->pBt;\n      local_4c = 1;\n      pBVar12 = p->pSrc->pBt;\n      pPVar7 = pBVar11->pPager;\n      goto LAB_00085051;\n    }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      pBVar11 = pBVar14->pBt;\n      local_4c = 1;\n      pBVar12 = p->pSrc->pBt;\n      pPVar7 = pBVar11->pPager;\n      goto LAB_00085051;\n    }" { (expression_statement "pBVar11 = pBVar14->pBt;" (assignment_expression "pBVar11 = pBVar14->pBt" identifier = (field_expression "pBVar14->pBt" identifier -> field_identifier)) ;) (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" identifier = number_literal) ;) (expression_statement "pBVar12 = p->pSrc->pBt;" (assignment_expression "pBVar12 = p->pSrc->pBt" identifier = (field_expression "p->pSrc->pBt" (field_expression "p->pSrc" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pPVar7 = pBVar11->pPager;" (assignment_expression "pPVar7 = pBVar11->pPager" identifier = (field_expression "pBVar11->pPager" identifier -> field_identifier)) ;) (goto_statement "goto LAB_00085051;" goto statement_identifier ;) })) (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" identifier = number_literal) ;) (labeled_statement "LAB_0008501f:\n    if (p->bDestLocked == 0) {\n      iVar6 = sqlite3BtreeBeginTrans(pBVar14,2,(int *)&p->iDestSchema);\n      if (iVar6 == 0) {\n        p_00 = p->pSrc;\n        p->bDestLocked = 1;\n        pBVar11 = p->pDest->pBt;\n        pBVar12 = p_00->pBt;\n        pPVar7 = pBVar11->pPager;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      pBVar12 = p->pSrc->pBt;\n      pBVar11 = p->pDest->pBt;\n      pPVar7 = pBVar11->pPager;\nLAB_00085051:\n      uVar2 = pPVar7->journalMode;\n      local_50 = pBVar12->pageSize;\n      local_48 = pBVar11->pageSize;\n      local_3c = (DbPage *)pBVar12->nPage;\nLAB_0008506e:\n      if (iVar6 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      pBVar14 = p->pDest;\n      if (local_3c == (DbPage *)0x0) {\n        if (pBVar14->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar14);\n        }\n        pBVar14->pBt->nPage = 0;\n        if (pBVar14->pBt->nPage == 0) {\n          iVar6 = newDatabase(in_stack_ffffff94);\n          if (pBVar14->sharable == '\0') {\n            bVar17 = iVar6 == 0 || iVar6 == 0x65;\n          }\n          else {\n            iVar13 = pBVar14->wantToLock + -1;\n            pBVar14->wantToLock = iVar13;\n            bVar17 = iVar6 == 0x65 || iVar6 == 0;\n            if (iVar13 == 0) {\n              sqlite3BtreeLeave(pBVar14);\n            }\n          }\n          if (!bVar17) goto LAB_000851f0;\n        }\n        else if (pBVar14->sharable != '\0') {\n          piVar1 = &pBVar14->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar14);\n          }\n        }\n        pBVar14 = p->pDest;\n        local_3c = (DbPage *)0x1;\n      }\n      iVar6 = sqlite3BtreeUpdateMeta(pBVar14,1,p->iDestSchema + 1);\n      if (iVar6 == 0) {\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((uVar2 != '\x05') || (iVar6 = sqlite3BtreeSetVersion(p->pDest,2), iVar6 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            local_34->dbSize = ((int)local_50 / (int)local_48) * (int)local_3c;\n            iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,0);\n            goto LAB_000855f2;\n          }\n          uVar8 = (int)((int)local_3c + (int)local_48 / (int)local_50 + -1) /\n                  ((int)local_48 / (int)local_50);\n          uVar9 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n          if (uVar9 + 1 == uVar8) {\n            uVar8 = uVar9;\n          }\n          lVar4 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          psVar3 = local_34->fd;\n          uVar9 = local_34->dbSize;\n          do {\n            if ((uVar9 < uVar8) ||\n               ((uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8)))) {\n              iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1);\n              pDVar15 = (DbPage *)(local_48 + sqlite3PendingByte);\n              local_3c = (DbPage *)lVar4;\n              local_38 = (int)((ulonglong)lVar4 >> 0x20);\n              iVar13 = local_38 - ((int)pDVar15 >> 0x1f);\n              lVar5 = (longlong)(int)pDVar15;\n              if ((SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=\n                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0) {\n                lVar5 = lVar4;\n              }\n              iVar16 = (int)((ulonglong)lVar5 >> 0x20);\n              uVar8 = sqlite3PendingByte + local_50;\n              iVar13 = (int)uVar8 >> 0x1f;\n              if ((iVar6 != 0) ||\n                 (uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar6 = (*local_34->xGet)(local_34,uVar8,&pSrcPg,0);\n            if (iVar6 != 0) break;\n            iVar6 = sqlite3PagerWrite(pSrcPg);\n            if (pSrcPg != (DbPage *)0x0) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            uVar8 = uVar8 + 1;\n          } while (iVar6 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }" statement_identifier : (if_statement "if (p->bDestLocked == 0) {\n      iVar6 = sqlite3BtreeBeginTrans(pBVar14,2,(int *)&p->iDestSchema);\n      if (iVar6 == 0) {\n        p_00 = p->pSrc;\n        p->bDestLocked = 1;\n        pBVar11 = p->pDest->pBt;\n        pBVar12 = p_00->pBt;\n        pPVar7 = pBVar11->pPager;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      pBVar12 = p->pSrc->pBt;\n      pBVar11 = p->pDest->pBt;\n      pPVar7 = pBVar11->pPager;\nLAB_00085051:\n      uVar2 = pPVar7->journalMode;\n      local_50 = pBVar12->pageSize;\n      local_48 = pBVar11->pageSize;\n      local_3c = (DbPage *)pBVar12->nPage;\nLAB_0008506e:\n      if (iVar6 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      pBVar14 = p->pDest;\n      if (local_3c == (DbPage *)0x0) {\n        if (pBVar14->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar14);\n        }\n        pBVar14->pBt->nPage = 0;\n        if (pBVar14->pBt->nPage == 0) {\n          iVar6 = newDatabase(in_stack_ffffff94);\n          if (pBVar14->sharable == '\0') {\n            bVar17 = iVar6 == 0 || iVar6 == 0x65;\n          }\n          else {\n            iVar13 = pBVar14->wantToLock + -1;\n            pBVar14->wantToLock = iVar13;\n            bVar17 = iVar6 == 0x65 || iVar6 == 0;\n            if (iVar13 == 0) {\n              sqlite3BtreeLeave(pBVar14);\n            }\n          }\n          if (!bVar17) goto LAB_000851f0;\n        }\n        else if (pBVar14->sharable != '\0') {\n          piVar1 = &pBVar14->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar14);\n          }\n        }\n        pBVar14 = p->pDest;\n        local_3c = (DbPage *)0x1;\n      }\n      iVar6 = sqlite3BtreeUpdateMeta(pBVar14,1,p->iDestSchema + 1);\n      if (iVar6 == 0) {\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((uVar2 != '\x05') || (iVar6 = sqlite3BtreeSetVersion(p->pDest,2), iVar6 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            local_34->dbSize = ((int)local_50 / (int)local_48) * (int)local_3c;\n            iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,0);\n            goto LAB_000855f2;\n          }\n          uVar8 = (int)((int)local_3c + (int)local_48 / (int)local_50 + -1) /\n                  ((int)local_48 / (int)local_50);\n          uVar9 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n          if (uVar9 + 1 == uVar8) {\n            uVar8 = uVar9;\n          }\n          lVar4 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          psVar3 = local_34->fd;\n          uVar9 = local_34->dbSize;\n          do {\n            if ((uVar9 < uVar8) ||\n               ((uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8)))) {\n              iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1);\n              pDVar15 = (DbPage *)(local_48 + sqlite3PendingByte);\n              local_3c = (DbPage *)lVar4;\n              local_38 = (int)((ulonglong)lVar4 >> 0x20);\n              iVar13 = local_38 - ((int)pDVar15 >> 0x1f);\n              lVar5 = (longlong)(int)pDVar15;\n              if ((SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=\n                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0) {\n                lVar5 = lVar4;\n              }\n              iVar16 = (int)((ulonglong)lVar5 >> 0x20);\n              uVar8 = sqlite3PendingByte + local_50;\n              iVar13 = (int)uVar8 >> 0x1f;\n              if ((iVar6 != 0) ||\n                 (uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar6 = (*local_34->xGet)(local_34,uVar8,&pSrcPg,0);\n            if (iVar6 != 0) break;\n            iVar6 = sqlite3PagerWrite(pSrcPg);\n            if (pSrcPg != (DbPage *)0x0) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            uVar8 = uVar8 + 1;\n          } while (iVar6 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }" if (parenthesized_expression "(p->bDestLocked == 0)" ( (binary_expression "p->bDestLocked == 0" (field_expression "p->bDestLocked" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      iVar6 = sqlite3BtreeBeginTrans(pBVar14,2,(int *)&p->iDestSchema);\n      if (iVar6 == 0) {\n        p_00 = p->pSrc;\n        p->bDestLocked = 1;\n        pBVar11 = p->pDest->pBt;\n        pBVar12 = p_00->pBt;\n        pPVar7 = pBVar11->pPager;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      pBVar12 = p->pSrc->pBt;\n      pBVar11 = p->pDest->pBt;\n      pPVar7 = pBVar11->pPager;\nLAB_00085051:\n      uVar2 = pPVar7->journalMode;\n      local_50 = pBVar12->pageSize;\n      local_48 = pBVar11->pageSize;\n      local_3c = (DbPage *)pBVar12->nPage;\nLAB_0008506e:\n      if (iVar6 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      pBVar14 = p->pDest;\n      if (local_3c == (DbPage *)0x0) {\n        if (pBVar14->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar14);\n        }\n        pBVar14->pBt->nPage = 0;\n        if (pBVar14->pBt->nPage == 0) {\n          iVar6 = newDatabase(in_stack_ffffff94);\n          if (pBVar14->sharable == '\0') {\n            bVar17 = iVar6 == 0 || iVar6 == 0x65;\n          }\n          else {\n            iVar13 = pBVar14->wantToLock + -1;\n            pBVar14->wantToLock = iVar13;\n            bVar17 = iVar6 == 0x65 || iVar6 == 0;\n            if (iVar13 == 0) {\n              sqlite3BtreeLeave(pBVar14);\n            }\n          }\n          if (!bVar17) goto LAB_000851f0;\n        }\n        else if (pBVar14->sharable != '\0') {\n          piVar1 = &pBVar14->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar14);\n          }\n        }\n        pBVar14 = p->pDest;\n        local_3c = (DbPage *)0x1;\n      }\n      iVar6 = sqlite3BtreeUpdateMeta(pBVar14,1,p->iDestSchema + 1);\n      if (iVar6 == 0) {\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((uVar2 != '\x05') || (iVar6 = sqlite3BtreeSetVersion(p->pDest,2), iVar6 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            local_34->dbSize = ((int)local_50 / (int)local_48) * (int)local_3c;\n            iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,0);\n            goto LAB_000855f2;\n          }\n          uVar8 = (int)((int)local_3c + (int)local_48 / (int)local_50 + -1) /\n                  ((int)local_48 / (int)local_50);\n          uVar9 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n          if (uVar9 + 1 == uVar8) {\n            uVar8 = uVar9;\n          }\n          lVar4 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          psVar3 = local_34->fd;\n          uVar9 = local_34->dbSize;\n          do {\n            if ((uVar9 < uVar8) ||\n               ((uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8)))) {\n              iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1);\n              pDVar15 = (DbPage *)(local_48 + sqlite3PendingByte);\n              local_3c = (DbPage *)lVar4;\n              local_38 = (int)((ulonglong)lVar4 >> 0x20);\n              iVar13 = local_38 - ((int)pDVar15 >> 0x1f);\n              lVar5 = (longlong)(int)pDVar15;\n              if ((SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=\n                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0) {\n                lVar5 = lVar4;\n              }\n              iVar16 = (int)((ulonglong)lVar5 >> 0x20);\n              uVar8 = sqlite3PendingByte + local_50;\n              iVar13 = (int)uVar8 >> 0x1f;\n              if ((iVar6 != 0) ||\n                 (uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar6 = (*local_34->xGet)(local_34,uVar8,&pSrcPg,0);\n            if (iVar6 != 0) break;\n            iVar6 = sqlite3PagerWrite(pSrcPg);\n            if (pSrcPg != (DbPage *)0x0) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            uVar8 = uVar8 + 1;\n          } while (iVar6 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }" { (expression_statement "iVar6 = sqlite3BtreeBeginTrans(pBVar14,2,(int *)&p->iDestSchema);" (assignment_expression "iVar6 = sqlite3BtreeBeginTrans(pBVar14,2,(int *)&p->iDestSchema)" identifier = (call_expression "sqlite3BtreeBeginTrans(pBVar14,2,(int *)&p->iDestSchema)" identifier (argument_list "(pBVar14,2,(int *)&p->iDestSchema)" ( identifier , number_literal , (cast_expression "(int *)&p->iDestSchema" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p->iDestSchema" & (field_expression "p->iDestSchema" identifier -> field_identifier))) )))) ;) (if_statement "if (iVar6 == 0) {\n        p_00 = p->pSrc;\n        p->bDestLocked = 1;\n        pBVar11 = p->pDest->pBt;\n        pBVar12 = p_00->pBt;\n        pPVar7 = pBVar11->pPager;\n        goto LAB_0008518c;\n      }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        p_00 = p->pSrc;\n        p->bDestLocked = 1;\n        pBVar11 = p->pDest->pBt;\n        pBVar12 = p_00->pBt;\n        pPVar7 = pBVar11->pPager;\n        goto LAB_0008518c;\n      }" { (expression_statement "p_00 = p->pSrc;" (assignment_expression "p_00 = p->pSrc" identifier = (field_expression "p->pSrc" identifier -> field_identifier)) ;) (expression_statement "p->bDestLocked = 1;" (assignment_expression "p->bDestLocked = 1" (field_expression "p->bDestLocked" identifier -> field_identifier) = number_literal) ;) (expression_statement "pBVar11 = p->pDest->pBt;" (assignment_expression "pBVar11 = p->pDest->pBt" identifier = (field_expression "p->pDest->pBt" (field_expression "p->pDest" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pBVar12 = p_00->pBt;" (assignment_expression "pBVar12 = p_00->pBt" identifier = (field_expression "p_00->pBt" identifier -> field_identifier)) ;) (expression_statement "pPVar7 = pBVar11->pPager;" (assignment_expression "pPVar7 = pBVar11->pPager" identifier = (field_expression "pBVar11->pPager" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0008518c;" goto statement_identifier ;) })) (labeled_statement "LAB_00085043:\n      pBVar12 = p->pSrc->pBt;" statement_identifier : (expression_statement "pBVar12 = p->pSrc->pBt;" (assignment_expression "pBVar12 = p->pSrc->pBt" identifier = (field_expression "p->pSrc->pBt" (field_expression "p->pSrc" identifier -> field_identifier) -> field_identifier)) ;)) (expression_statement "pBVar11 = p->pDest->pBt;" (assignment_expression "pBVar11 = p->pDest->pBt" identifier = (field_expression "p->pDest->pBt" (field_expression "p->pDest" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pPVar7 = pBVar11->pPager;" (assignment_expression "pPVar7 = pBVar11->pPager" identifier = (field_expression "pBVar11->pPager" identifier -> field_identifier)) ;) (labeled_statement "LAB_00085051:\n      uVar2 = pPVar7->journalMode;" statement_identifier : (expression_statement "uVar2 = pPVar7->journalMode;" (assignment_expression "uVar2 = pPVar7->journalMode" identifier = (field_expression "pPVar7->journalMode" identifier -> field_identifier)) ;)) (expression_statement "local_50 = pBVar12->pageSize;" (assignment_expression "local_50 = pBVar12->pageSize" identifier = (field_expression "pBVar12->pageSize" identifier -> field_identifier)) ;) (expression_statement "local_48 = pBVar11->pageSize;" (assignment_expression "local_48 = pBVar11->pageSize" identifier = (field_expression "pBVar11->pageSize" identifier -> field_identifier)) ;) (expression_statement "local_3c = (DbPage *)pBVar12->nPage;" (assignment_expression "local_3c = (DbPage *)pBVar12->nPage" identifier = (cast_expression "(DbPage *)pBVar12->nPage" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pBVar12->nPage" identifier -> field_identifier))) ;) (labeled_statement "LAB_0008506e:\n      if (iVar6 != 0x65) goto LAB_000851f0;" statement_identifier : (if_statement "if (iVar6 != 0x65) goto LAB_000851f0;" if (parenthesized_expression "(iVar6 != 0x65)" ( (binary_expression "iVar6 != 0x65" identifier != number_literal) )) (goto_statement "goto LAB_000851f0;" goto statement_identifier ;))) (labeled_statement "LAB_00085077:\n      pBVar14 = p->pDest;" statement_identifier : (expression_statement "pBVar14 = p->pDest;" (assignment_expression "pBVar14 = p->pDest" identifier = (field_expression "p->pDest" identifier -> field_identifier)) ;)) (if_statement "if (local_3c == (DbPage *)0x0) {\n        if (pBVar14->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar14);\n        }\n        pBVar14->pBt->nPage = 0;\n        if (pBVar14->pBt->nPage == 0) {\n          iVar6 = newDatabase(in_stack_ffffff94);\n          if (pBVar14->sharable == '\0') {\n            bVar17 = iVar6 == 0 || iVar6 == 0x65;\n          }\n          else {\n            iVar13 = pBVar14->wantToLock + -1;\n            pBVar14->wantToLock = iVar13;\n            bVar17 = iVar6 == 0x65 || iVar6 == 0;\n            if (iVar13 == 0) {\n              sqlite3BtreeLeave(pBVar14);\n            }\n          }\n          if (!bVar17) goto LAB_000851f0;\n        }\n        else if (pBVar14->sharable != '\0') {\n          piVar1 = &pBVar14->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar14);\n          }\n        }\n        pBVar14 = p->pDest;\n        local_3c = (DbPage *)0x1;\n      }" if (parenthesized_expression "(local_3c == (DbPage *)0x0)" ( (binary_expression "local_3c == (DbPage *)0x0" identifier == (cast_expression "(DbPage *)0x0" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (pBVar14->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar14);\n        }\n        pBVar14->pBt->nPage = 0;\n        if (pBVar14->pBt->nPage == 0) {\n          iVar6 = newDatabase(in_stack_ffffff94);\n          if (pBVar14->sharable == '\0') {\n            bVar17 = iVar6 == 0 || iVar6 == 0x65;\n          }\n          else {\n            iVar13 = pBVar14->wantToLock + -1;\n            pBVar14->wantToLock = iVar13;\n            bVar17 = iVar6 == 0x65 || iVar6 == 0;\n            if (iVar13 == 0) {\n              sqlite3BtreeLeave(pBVar14);\n            }\n          }\n          if (!bVar17) goto LAB_000851f0;\n        }\n        else if (pBVar14->sharable != '\0') {\n          piVar1 = &pBVar14->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar14);\n          }\n        }\n        pBVar14 = p->pDest;\n        local_3c = (DbPage *)0x1;\n      }" { (if_statement "if (pBVar14->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar14);\n        }" if (parenthesized_expression "(pBVar14->sharable != '\0')" ( (binary_expression "pBVar14->sharable != '\0'" (field_expression "pBVar14->sharable" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          sqlite3BtreeEnter(pBVar14);\n        }" { (expression_statement "sqlite3BtreeEnter(pBVar14);" (call_expression "sqlite3BtreeEnter(pBVar14)" identifier (argument_list "(pBVar14)" ( identifier ))) ;) })) (expression_statement "pBVar14->pBt->nPage = 0;" (assignment_expression "pBVar14->pBt->nPage = 0" (field_expression "pBVar14->pBt->nPage" (field_expression "pBVar14->pBt" identifier -> field_identifier) -> field_identifier) = number_literal) ;) (if_statement "if (pBVar14->pBt->nPage == 0) {\n          iVar6 = newDatabase(in_stack_ffffff94);\n          if (pBVar14->sharable == '\0') {\n            bVar17 = iVar6 == 0 || iVar6 == 0x65;\n          }\n          else {\n            iVar13 = pBVar14->wantToLock + -1;\n            pBVar14->wantToLock = iVar13;\n            bVar17 = iVar6 == 0x65 || iVar6 == 0;\n            if (iVar13 == 0) {\n              sqlite3BtreeLeave(pBVar14);\n            }\n          }\n          if (!bVar17) goto LAB_000851f0;\n        }\n        else if (pBVar14->sharable != '\0') {\n          piVar1 = &pBVar14->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar14);\n          }\n        }" if (parenthesized_expression "(pBVar14->pBt->nPage == 0)" ( (binary_expression "pBVar14->pBt->nPage == 0" (field_expression "pBVar14->pBt->nPage" (field_expression "pBVar14->pBt" identifier -> field_identifier) -> field_identifier) == number_literal) )) (compound_statement "{\n          iVar6 = newDatabase(in_stack_ffffff94);\n          if (pBVar14->sharable == '\0') {\n            bVar17 = iVar6 == 0 || iVar6 == 0x65;\n          }\n          else {\n            iVar13 = pBVar14->wantToLock + -1;\n            pBVar14->wantToLock = iVar13;\n            bVar17 = iVar6 == 0x65 || iVar6 == 0;\n            if (iVar13 == 0) {\n              sqlite3BtreeLeave(pBVar14);\n            }\n          }\n          if (!bVar17) goto LAB_000851f0;\n        }" { (expression_statement "iVar6 = newDatabase(in_stack_ffffff94);" (assignment_expression "iVar6 = newDatabase(in_stack_ffffff94)" identifier = (call_expression "newDatabase(in_stack_ffffff94)" identifier (argument_list "(in_stack_ffffff94)" ( identifier )))) ;) (if_statement "if (pBVar14->sharable == '\0') {\n            bVar17 = iVar6 == 0 || iVar6 == 0x65;\n          }\n          else {\n            iVar13 = pBVar14->wantToLock + -1;\n            pBVar14->wantToLock = iVar13;\n            bVar17 = iVar6 == 0x65 || iVar6 == 0;\n            if (iVar13 == 0) {\n              sqlite3BtreeLeave(pBVar14);\n            }\n          }" if (parenthesized_expression "(pBVar14->sharable == '\0')" ( (binary_expression "pBVar14->sharable == '\0'" (field_expression "pBVar14->sharable" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            bVar17 = iVar6 == 0 || iVar6 == 0x65;\n          }" { (expression_statement "bVar17 = iVar6 == 0 || iVar6 == 0x65;" (assignment_expression "bVar17 = iVar6 == 0 || iVar6 == 0x65" identifier = (binary_expression "iVar6 == 0 || iVar6 == 0x65" (binary_expression "iVar6 == 0" identifier == number_literal) || (binary_expression "iVar6 == 0x65" identifier == number_literal))) ;) }) (else_clause "else {\n            iVar13 = pBVar14->wantToLock + -1;\n            pBVar14->wantToLock = iVar13;\n            bVar17 = iVar6 == 0x65 || iVar6 == 0;\n            if (iVar13 == 0) {\n              sqlite3BtreeLeave(pBVar14);\n            }\n          }" else (compound_statement "{\n            iVar13 = pBVar14->wantToLock + -1;\n            pBVar14->wantToLock = iVar13;\n            bVar17 = iVar6 == 0x65 || iVar6 == 0;\n            if (iVar13 == 0) {\n              sqlite3BtreeLeave(pBVar14);\n            }\n          }" { (expression_statement "iVar13 = pBVar14->wantToLock + -1;" (assignment_expression "iVar13 = pBVar14->wantToLock + -1" identifier = (binary_expression "pBVar14->wantToLock + -1" (field_expression "pBVar14->wantToLock" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pBVar14->wantToLock = iVar13;" (assignment_expression "pBVar14->wantToLock = iVar13" (field_expression "pBVar14->wantToLock" identifier -> field_identifier) = identifier) ;) (expression_statement "bVar17 = iVar6 == 0x65 || iVar6 == 0;" (assignment_expression "bVar17 = iVar6 == 0x65 || iVar6 == 0" identifier = (binary_expression "iVar6 == 0x65 || iVar6 == 0" (binary_expression "iVar6 == 0x65" identifier == number_literal) || (binary_expression "iVar6 == 0" identifier == number_literal))) ;) (if_statement "if (iVar13 == 0) {\n              sqlite3BtreeLeave(pBVar14);\n            }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n              sqlite3BtreeLeave(pBVar14);\n            }" { (expression_statement "sqlite3BtreeLeave(pBVar14);" (call_expression "sqlite3BtreeLeave(pBVar14)" identifier (argument_list "(pBVar14)" ( identifier ))) ;) })) }))) (if_statement "if (!bVar17) goto LAB_000851f0;" if (parenthesized_expression "(!bVar17)" ( (unary_expression "!bVar17" ! identifier) )) (goto_statement "goto LAB_000851f0;" goto statement_identifier ;)) }) (else_clause "else if (pBVar14->sharable != '\0') {\n          piVar1 = &pBVar14->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar14);\n          }\n        }" else (if_statement "if (pBVar14->sharable != '\0') {\n          piVar1 = &pBVar14->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar14);\n          }\n        }" if (parenthesized_expression "(pBVar14->sharable != '\0')" ( (binary_expression "pBVar14->sharable != '\0'" (field_expression "pBVar14->sharable" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          piVar1 = &pBVar14->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar14);\n          }\n        }" { (expression_statement "piVar1 = &pBVar14->wantToLock;" (assignment_expression "piVar1 = &pBVar14->wantToLock" identifier = (pointer_expression "&pBVar14->wantToLock" & (field_expression "pBVar14->wantToLock" identifier -> field_identifier))) ;) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (if_statement "if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar14);\n          }" if (parenthesized_expression "(*piVar1 == 0)" ( (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" * identifier) == number_literal) )) (compound_statement "{\n            sqlite3BtreeLeave(pBVar14);\n          }" { (expression_statement "sqlite3BtreeLeave(pBVar14);" (call_expression "sqlite3BtreeLeave(pBVar14)" identifier (argument_list "(pBVar14)" ( identifier ))) ;) })) })))) (expression_statement "pBVar14 = p->pDest;" (assignment_expression "pBVar14 = p->pDest" identifier = (field_expression "p->pDest" identifier -> field_identifier)) ;) (expression_statement "local_3c = (DbPage *)0x1;" (assignment_expression "local_3c = (DbPage *)0x1" identifier = (cast_expression "(DbPage *)0x1" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "iVar6 = sqlite3BtreeUpdateMeta(pBVar14,1,p->iDestSchema + 1);" (assignment_expression "iVar6 = sqlite3BtreeUpdateMeta(pBVar14,1,p->iDestSchema + 1)" identifier = (call_expression "sqlite3BtreeUpdateMeta(pBVar14,1,p->iDestSchema + 1)" identifier (argument_list "(pBVar14,1,p->iDestSchema + 1)" ( identifier , number_literal , (binary_expression "p->iDestSchema + 1" (field_expression "p->iDestSchema" identifier -> field_identifier) + number_literal) )))) ;) (if_statement "if (iVar6 == 0) {\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((uVar2 != '\x05') || (iVar6 = sqlite3BtreeSetVersion(p->pDest,2), iVar6 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            local_34->dbSize = ((int)local_50 / (int)local_48) * (int)local_3c;\n            iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,0);\n            goto LAB_000855f2;\n          }\n          uVar8 = (int)((int)local_3c + (int)local_48 / (int)local_50 + -1) /\n                  ((int)local_48 / (int)local_50);\n          uVar9 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n          if (uVar9 + 1 == uVar8) {\n            uVar8 = uVar9;\n          }\n          lVar4 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          psVar3 = local_34->fd;\n          uVar9 = local_34->dbSize;\n          do {\n            if ((uVar9 < uVar8) ||\n               ((uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8)))) {\n              iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1);\n              pDVar15 = (DbPage *)(local_48 + sqlite3PendingByte);\n              local_3c = (DbPage *)lVar4;\n              local_38 = (int)((ulonglong)lVar4 >> 0x20);\n              iVar13 = local_38 - ((int)pDVar15 >> 0x1f);\n              lVar5 = (longlong)(int)pDVar15;\n              if ((SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=\n                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0) {\n                lVar5 = lVar4;\n              }\n              iVar16 = (int)((ulonglong)lVar5 >> 0x20);\n              uVar8 = sqlite3PendingByte + local_50;\n              iVar13 = (int)uVar8 >> 0x1f;\n              if ((iVar6 != 0) ||\n                 (uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar6 = (*local_34->xGet)(local_34,uVar8,&pSrcPg,0);\n            if (iVar6 != 0) break;\n            iVar6 = sqlite3PagerWrite(pSrcPg);\n            if (pSrcPg != (DbPage *)0x0) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            uVar8 = uVar8 + 1;\n          } while (iVar6 == 0);\n        }\n      }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((uVar2 != '\x05') || (iVar6 = sqlite3BtreeSetVersion(p->pDest,2), iVar6 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            local_34->dbSize = ((int)local_50 / (int)local_48) * (int)local_3c;\n            iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,0);\n            goto LAB_000855f2;\n          }\n          uVar8 = (int)((int)local_3c + (int)local_48 / (int)local_50 + -1) /\n                  ((int)local_48 / (int)local_50);\n          uVar9 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n          if (uVar9 + 1 == uVar8) {\n            uVar8 = uVar9;\n          }\n          lVar4 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          psVar3 = local_34->fd;\n          uVar9 = local_34->dbSize;\n          do {\n            if ((uVar9 < uVar8) ||\n               ((uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8)))) {\n              iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1);\n              pDVar15 = (DbPage *)(local_48 + sqlite3PendingByte);\n              local_3c = (DbPage *)lVar4;\n              local_38 = (int)((ulonglong)lVar4 >> 0x20);\n              iVar13 = local_38 - ((int)pDVar15 >> 0x1f);\n              lVar5 = (longlong)(int)pDVar15;\n              if ((SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=\n                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0) {\n                lVar5 = lVar4;\n              }\n              iVar16 = (int)((ulonglong)lVar5 >> 0x20);\n              uVar8 = sqlite3PendingByte + local_50;\n              iVar13 = (int)uVar8 >> 0x1f;\n              if ((iVar6 != 0) ||\n                 (uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar6 = (*local_34->xGet)(local_34,uVar8,&pSrcPg,0);\n            if (iVar6 != 0) break;\n            iVar6 = sqlite3PagerWrite(pSrcPg);\n            if (pSrcPg != (DbPage *)0x0) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            uVar8 = uVar8 + 1;\n          } while (iVar6 == 0);\n        }\n      }" { (if_statement "if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }" if (parenthesized_expression "(p->pDestDb != (sqlite3 *)0x0)" ( (binary_expression "p->pDestDb != (sqlite3 *)0x0" (field_expression "p->pDestDb" identifier -> field_identifier) != (cast_expression "(sqlite3 *)0x0" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }" { (expression_statement "sqlite3ResetAllSchemasOfConnection(p->pDestDb);" (call_expression "sqlite3ResetAllSchemasOfConnection(p->pDestDb)" identifier (argument_list "(p->pDestDb)" ( (field_expression "p->pDestDb" identifier -> field_identifier) ))) ;) })) (if_statement "if ((uVar2 != '\x05') || (iVar6 = sqlite3BtreeSetVersion(p->pDest,2), iVar6 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            local_34->dbSize = ((int)local_50 / (int)local_48) * (int)local_3c;\n            iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,0);\n            goto LAB_000855f2;\n          }\n          uVar8 = (int)((int)local_3c + (int)local_48 / (int)local_50 + -1) /\n                  ((int)local_48 / (int)local_50);\n          uVar9 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n          if (uVar9 + 1 == uVar8) {\n            uVar8 = uVar9;\n          }\n          lVar4 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          psVar3 = local_34->fd;\n          uVar9 = local_34->dbSize;\n          do {\n            if ((uVar9 < uVar8) ||\n               ((uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8)))) {\n              iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1);\n              pDVar15 = (DbPage *)(local_48 + sqlite3PendingByte);\n              local_3c = (DbPage *)lVar4;\n              local_38 = (int)((ulonglong)lVar4 >> 0x20);\n              iVar13 = local_38 - ((int)pDVar15 >> 0x1f);\n              lVar5 = (longlong)(int)pDVar15;\n              if ((SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=\n                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0) {\n                lVar5 = lVar4;\n              }\n              iVar16 = (int)((ulonglong)lVar5 >> 0x20);\n              uVar8 = sqlite3PendingByte + local_50;\n              iVar13 = (int)uVar8 >> 0x1f;\n              if ((iVar6 != 0) ||\n                 (uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar6 = (*local_34->xGet)(local_34,uVar8,&pSrcPg,0);\n            if (iVar6 != 0) break;\n            iVar6 = sqlite3PagerWrite(pSrcPg);\n            if (pSrcPg != (DbPage *)0x0) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            uVar8 = uVar8 + 1;\n          } while (iVar6 == 0);\n        }" if (parenthesized_expression "((uVar2 != '\x05') || (iVar6 = sqlite3BtreeSetVersion(p->pDest,2), iVar6 == 0))" ( (binary_expression "(uVar2 != '\x05') || (iVar6 = sqlite3BtreeSetVersion(p->pDest,2), iVar6 == 0)" (parenthesized_expression "(uVar2 != '\x05')" ( (binary_expression "uVar2 != '\x05'" identifier != (char_literal "'\x05'" ' escape_sequence ')) )) || (parenthesized_expression "(iVar6 = sqlite3BtreeSetVersion(p->pDest,2), iVar6 == 0)" ( (comma_expression "iVar6 = sqlite3BtreeSetVersion(p->pDest,2), iVar6 == 0" (assignment_expression "iVar6 = sqlite3BtreeSetVersion(p->pDest,2)" identifier = (call_expression "sqlite3BtreeSetVersion(p->pDest,2)" identifier (argument_list "(p->pDest,2)" ( (field_expression "p->pDest" identifier -> field_identifier) , number_literal )))) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n          if ((int)local_48 <= (int)local_50) {\n            local_34->dbSize = ((int)local_50 / (int)local_48) * (int)local_3c;\n            iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,0);\n            goto LAB_000855f2;\n          }\n          uVar8 = (int)((int)local_3c + (int)local_48 / (int)local_50 + -1) /\n                  ((int)local_48 / (int)local_50);\n          uVar9 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n          if (uVar9 + 1 == uVar8) {\n            uVar8 = uVar9;\n          }\n          lVar4 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          psVar3 = local_34->fd;\n          uVar9 = local_34->dbSize;\n          do {\n            if ((uVar9 < uVar8) ||\n               ((uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8)))) {\n              iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1);\n              pDVar15 = (DbPage *)(local_48 + sqlite3PendingByte);\n              local_3c = (DbPage *)lVar4;\n              local_38 = (int)((ulonglong)lVar4 >> 0x20);\n              iVar13 = local_38 - ((int)pDVar15 >> 0x1f);\n              lVar5 = (longlong)(int)pDVar15;\n              if ((SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=\n                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0) {\n                lVar5 = lVar4;\n              }\n              iVar16 = (int)((ulonglong)lVar5 >> 0x20);\n              uVar8 = sqlite3PendingByte + local_50;\n              iVar13 = (int)uVar8 >> 0x1f;\n              if ((iVar6 != 0) ||\n                 (uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar6 = (*local_34->xGet)(local_34,uVar8,&pSrcPg,0);\n            if (iVar6 != 0) break;\n            iVar6 = sqlite3PagerWrite(pSrcPg);\n            if (pSrcPg != (DbPage *)0x0) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            uVar8 = uVar8 + 1;\n          } while (iVar6 == 0);\n        }" { (if_statement "if ((int)local_48 <= (int)local_50) {\n            local_34->dbSize = ((int)local_50 / (int)local_48) * (int)local_3c;\n            iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,0);\n            goto LAB_000855f2;\n          }" if (parenthesized_expression "((int)local_48 <= (int)local_50)" ( (binary_expression "(int)local_48 <= (int)local_50" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            local_34->dbSize = ((int)local_50 / (int)local_48) * (int)local_3c;\n            iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,0);\n            goto LAB_000855f2;\n          }" { (expression_statement "local_34->dbSize = ((int)local_50 / (int)local_48) * (int)local_3c;" (assignment_expression "local_34->dbSize = ((int)local_50 / (int)local_48) * (int)local_3c" (field_expression "local_34->dbSize" identifier -> field_identifier) = (binary_expression "((int)local_50 / (int)local_48) * (int)local_3c" (parenthesized_expression "((int)local_50 / (int)local_48)" ( (binary_expression "(int)local_50 / (int)local_48" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) / (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier)) )) * (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,0);" (assignment_expression "iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,0)" identifier = (call_expression "sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,0)" identifier (argument_list "(local_34,(char *)0x0,0)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal )))) ;) (goto_statement "goto LAB_000855f2;" goto statement_identifier ;) })) (expression_statement "uVar8 = (int)((int)local_3c + (int)local_48 / (int)local_50 + -1) /\n                  ((int)local_48 / (int)local_50);" (assignment_expression "uVar8 = (int)((int)local_3c + (int)local_48 / (int)local_50 + -1) /\n                  ((int)local_48 / (int)local_50)" identifier = (binary_expression "(int)((int)local_3c + (int)local_48 / (int)local_50 + -1) /\n                  ((int)local_48 / (int)local_50)" (cast_expression "(int)((int)local_3c + (int)local_48 / (int)local_50 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)local_3c + (int)local_48 / (int)local_50 + -1)" ( (binary_expression "(int)local_3c + (int)local_48 / (int)local_50 + -1" (binary_expression "(int)local_3c + (int)local_48 / (int)local_50" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(int)local_48 / (int)local_50" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) / (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier))) + number_literal) ))) / (parenthesized_expression "((int)local_48 / (int)local_50)" ( (binary_expression "(int)local_48 / (int)local_50" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) / (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "uVar9 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;" (assignment_expression "uVar9 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize" identifier = (binary_expression "(uint)sqlite3PendingByte / p->pDest->pBt->pageSize" (cast_expression "(uint)sqlite3PendingByte" ( (type_descriptor "uint" type_identifier) ) identifier) / (field_expression "p->pDest->pBt->pageSize" (field_expression "p->pDest->pBt" (field_expression "p->pDest" identifier -> field_identifier) -> field_identifier) -> field_identifier))) ;) (if_statement "if (uVar9 + 1 == uVar8) {\n            uVar8 = uVar9;\n          }" if (parenthesized_expression "(uVar9 + 1 == uVar8)" ( (binary_expression "uVar9 + 1 == uVar8" (binary_expression "uVar9 + 1" identifier + number_literal) == identifier) )) (compound_statement "{\n            uVar8 = uVar9;\n          }" { (expression_statement "uVar8 = uVar9;" (assignment_expression "uVar8 = uVar9" identifier = identifier) ;) })) (expression_statement "lVar4 = (longlong)(int)local_3c * (longlong)(int)local_50;" (assignment_expression "lVar4 = (longlong)(int)local_3c * (longlong)(int)local_50" identifier = (binary_expression "(longlong)(int)local_3c * (longlong)(int)local_50" (cast_expression "(longlong)(int)local_3c" ( (type_descriptor "longlong" type_identifier) ) (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier)) * (cast_expression "(longlong)(int)local_50" ( (type_descriptor "longlong" type_identifier) ) (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "psVar3 = local_34->fd;" (assignment_expression "psVar3 = local_34->fd" identifier = (field_expression "local_34->fd" identifier -> field_identifier)) ;) (expression_statement "uVar9 = local_34->dbSize;" (assignment_expression "uVar9 = local_34->dbSize" identifier = (field_expression "local_34->dbSize" identifier -> field_identifier)) ;) (do_statement "do {\n            if ((uVar9 < uVar8) ||\n               ((uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8)))) {\n              iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1);\n              pDVar15 = (DbPage *)(local_48 + sqlite3PendingByte);\n              local_3c = (DbPage *)lVar4;\n              local_38 = (int)((ulonglong)lVar4 >> 0x20);\n              iVar13 = local_38 - ((int)pDVar15 >> 0x1f);\n              lVar5 = (longlong)(int)pDVar15;\n              if ((SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=\n                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0) {\n                lVar5 = lVar4;\n              }\n              iVar16 = (int)((ulonglong)lVar5 >> 0x20);\n              uVar8 = sqlite3PendingByte + local_50;\n              iVar13 = (int)uVar8 >> 0x1f;\n              if ((iVar6 != 0) ||\n                 (uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar6 = (*local_34->xGet)(local_34,uVar8,&pSrcPg,0);\n            if (iVar6 != 0) break;\n            iVar6 = sqlite3PagerWrite(pSrcPg);\n            if (pSrcPg != (DbPage *)0x0) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            uVar8 = uVar8 + 1;\n          } while (iVar6 == 0);" do (compound_statement "{\n            if ((uVar9 < uVar8) ||\n               ((uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8)))) {\n              iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1);\n              pDVar15 = (DbPage *)(local_48 + sqlite3PendingByte);\n              local_3c = (DbPage *)lVar4;\n              local_38 = (int)((ulonglong)lVar4 >> 0x20);\n              iVar13 = local_38 - ((int)pDVar15 >> 0x1f);\n              lVar5 = (longlong)(int)pDVar15;\n              if ((SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=\n                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0) {\n                lVar5 = lVar4;\n              }\n              iVar16 = (int)((ulonglong)lVar5 >> 0x20);\n              uVar8 = sqlite3PendingByte + local_50;\n              iVar13 = (int)uVar8 >> 0x1f;\n              if ((iVar6 != 0) ||\n                 (uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar6 = (*local_34->xGet)(local_34,uVar8,&pSrcPg,0);\n            if (iVar6 != 0) break;\n            iVar6 = sqlite3PagerWrite(pSrcPg);\n            if (pSrcPg != (DbPage *)0x0) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            uVar8 = uVar8 + 1;\n          }" { (if_statement "if ((uVar9 < uVar8) ||\n               ((uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8)))) {\n              iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1);\n              pDVar15 = (DbPage *)(local_48 + sqlite3PendingByte);\n              local_3c = (DbPage *)lVar4;\n              local_38 = (int)((ulonglong)lVar4 >> 0x20);\n              iVar13 = local_38 - ((int)pDVar15 >> 0x1f);\n              lVar5 = (longlong)(int)pDVar15;\n              if ((SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=\n                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0) {\n                lVar5 = lVar4;\n              }\n              iVar16 = (int)((ulonglong)lVar5 >> 0x20);\n              uVar8 = sqlite3PendingByte + local_50;\n              iVar13 = (int)uVar8 >> 0x1f;\n              if ((iVar6 != 0) ||\n                 (uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }" if (parenthesized_expression "((uVar9 < uVar8) ||\n               ((uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8))))" ( (binary_expression "(uVar9 < uVar8) ||\n               ((uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8)))" (parenthesized_expression "(uVar9 < uVar8)" ( (binary_expression "uVar9 < uVar8" identifier < identifier) )) || (parenthesized_expression "((uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8)))" ( (parenthesized_expression "(uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8))" ( (comma_expression "uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize, uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8)" (assignment_expression "uVar10 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize" identifier = (binary_expression "(uint)sqlite3PendingByte / p->pDest->pBt->pageSize" (cast_expression "(uint)sqlite3PendingByte" ( (type_descriptor "uint" type_identifier) ) identifier) / (field_expression "p->pDest->pBt->pageSize" (field_expression "p->pDest->pBt" (field_expression "p->pDest" identifier -> field_identifier) -> field_identifier) -> field_identifier))) , (binary_expression "uVar10 + 1 == uVar8 &&\n                (uVar8 = uVar10 + 2, uVar9 < uVar8)" (binary_expression "uVar10 + 1 == uVar8" (binary_expression "uVar10 + 1" identifier + number_literal) == identifier) && (parenthesized_expression "(uVar8 = uVar10 + 2, uVar9 < uVar8)" ( (comma_expression "uVar8 = uVar10 + 2, uVar9 < uVar8" (assignment_expression "uVar8 = uVar10 + 2" identifier = (binary_expression "uVar10 + 2" identifier + number_literal)) , (binary_expression "uVar9 < uVar8" identifier < identifier)) )))) )) ))) )) (compound_statement "{\n              iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1);\n              pDVar15 = (DbPage *)(local_48 + sqlite3PendingByte);\n              local_3c = (DbPage *)lVar4;\n              local_38 = (int)((ulonglong)lVar4 >> 0x20);\n              iVar13 = local_38 - ((int)pDVar15 >> 0x1f);\n              lVar5 = (longlong)(int)pDVar15;\n              if ((SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=\n                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0) {\n                lVar5 = lVar4;\n              }\n              iVar16 = (int)((ulonglong)lVar5 >> 0x20);\n              uVar8 = sqlite3PendingByte + local_50;\n              iVar13 = (int)uVar8 >> 0x1f;\n              if ((iVar6 != 0) ||\n                 (uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }" { (expression_statement "iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1);" (assignment_expression "iVar6 = sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1)" identifier = (call_expression "sqlite3PagerCommitPhaseOne(local_34,(char *)0x0,1)" identifier (argument_list "(local_34,(char *)0x0,1)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal )))) ;) (expression_statement "pDVar15 = (DbPage *)(local_48 + sqlite3PendingByte);" (assignment_expression "pDVar15 = (DbPage *)(local_48 + sqlite3PendingByte)" identifier = (cast_expression "(DbPage *)(local_48 + sqlite3PendingByte)" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + sqlite3PendingByte)" ( (binary_expression "local_48 + sqlite3PendingByte" identifier + identifier) )))) ;) (expression_statement "local_3c = (DbPage *)lVar4;" (assignment_expression "local_3c = (DbPage *)lVar4" identifier = (cast_expression "(DbPage *)lVar4" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_38 = (int)((ulonglong)lVar4 >> 0x20);" (assignment_expression "local_38 = (int)((ulonglong)lVar4 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar4 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar4 >> 0x20)" ( (binary_expression "(ulonglong)lVar4 >> 0x20" (cast_expression "(ulonglong)lVar4" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar13 = local_38 - ((int)pDVar15 >> 0x1f);" (assignment_expression "iVar13 = local_38 - ((int)pDVar15 >> 0x1f)" identifier = (binary_expression "local_38 - ((int)pDVar15 >> 0x1f)" identifier - (parenthesized_expression "((int)pDVar15 >> 0x1f)" ( (binary_expression "(int)pDVar15 >> 0x1f" (cast_expression "(int)pDVar15" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "lVar5 = (longlong)(int)pDVar15;" (assignment_expression "lVar5 = (longlong)(int)pDVar15" identifier = (cast_expression "(longlong)(int)pDVar15" ( (type_descriptor "longlong" type_identifier) ) (cast_expression "(int)pDVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=\n                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0) {\n                lVar5 = lVar4;\n              }" if (parenthesized_expression "((SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=\n                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0)" ( (binary_expression "(SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))) !=\n                  (int)(iVar13 - (uint)(local_3c < pDVar15)) < 0" (parenthesized_expression "(SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15)))" ( (binary_expression "SBORROW4(local_38,(int)pDVar15 >> 0x1f) !=\n                  SBORROW4(iVar13,(uint)(local_3c < pDVar15))" (call_expression "SBORROW4(local_38,(int)pDVar15 >> 0x1f)" identifier (argument_list "(local_38,(int)pDVar15 >> 0x1f)" ( identifier , (binary_expression "(int)pDVar15 >> 0x1f" (cast_expression "(int)pDVar15" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) != (call_expression "SBORROW4(iVar13,(uint)(local_3c < pDVar15))" identifier (argument_list "(iVar13,(uint)(local_3c < pDVar15))" ( identifier , (call_expression "(uint)(local_3c < pDVar15)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_3c < pDVar15)" ( (binary_expression "local_3c < pDVar15" identifier < identifier) ))) )))) )) != (binary_expression "(int)(iVar13 - (uint)(local_3c < pDVar15)) < 0" (cast_expression "(int)(iVar13 - (uint)(local_3c < pDVar15))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar13 - (uint)(local_3c < pDVar15))" ( (binary_expression "iVar13 - (uint)(local_3c < pDVar15)" identifier - (call_expression "(uint)(local_3c < pDVar15)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_3c < pDVar15)" ( (binary_expression "local_3c < pDVar15" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n                lVar5 = lVar4;\n              }" { (expression_statement "lVar5 = lVar4;" (assignment_expression "lVar5 = lVar4" identifier = identifier) ;) })) (expression_statement "iVar16 = (int)((ulonglong)lVar5 >> 0x20);" (assignment_expression "iVar16 = (int)((ulonglong)lVar5 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar5 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar5 >> 0x20)" ( (binary_expression "(ulonglong)lVar5 >> 0x20" (cast_expression "(ulonglong)lVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar8 = sqlite3PendingByte + local_50;" (assignment_expression "uVar8 = sqlite3PendingByte + local_50" identifier = (binary_expression "sqlite3PendingByte + local_50" identifier + identifier)) ;) (expression_statement "iVar13 = (int)uVar8 >> 0x1f;" (assignment_expression "iVar13 = (int)uVar8 >> 0x1f" identifier = (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if ((iVar6 != 0) ||\n                 (uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0)) goto LAB_000853a0;" if (parenthesized_expression "((iVar6 != 0) ||\n                 (uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0))" ( (binary_expression "(iVar6 != 0) ||\n                 (uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0)" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0)" ( (comma_expression "uVar9 = (uint)(uVar8 < (uint)lVar5),\n                 (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0" (assignment_expression "uVar9 = (uint)(uVar8 < (uint)lVar5)" identifier = (call_expression "(uint)(uVar8 < (uint)lVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < (uint)lVar5)" ( (binary_expression "uVar8 < (uint)lVar5" identifier < (cast_expression "(uint)lVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) , (binary_expression "(SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n                 (int)((iVar13 - iVar16) - uVar9) < 0" (parenthesized_expression "(SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9))" ( (binary_expression "SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)" (call_expression "SBORROW4(iVar13,iVar16)" identifier (argument_list "(iVar13,iVar16)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar13 - iVar16,uVar9)" identifier (argument_list "(iVar13 - iVar16,uVar9)" ( (binary_expression "iVar13 - iVar16" identifier - identifier) , identifier )))) )) == (binary_expression "(int)((iVar13 - iVar16) - uVar9) < 0" (cast_expression "(int)((iVar13 - iVar16) - uVar9)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar13 - iVar16) - uVar9)" ( (binary_expression "(iVar13 - iVar16) - uVar9" (parenthesized_expression "(iVar13 - iVar16)" ( (binary_expression "iVar13 - iVar16" identifier - identifier) )) - identifier) ))) < number_literal))) ))) )) (goto_statement "goto LAB_000853a0;" goto statement_identifier ;)) (goto_statement "goto LAB_00085660;" goto statement_identifier ;) })) (expression_statement "iVar6 = (*local_34->xGet)(local_34,uVar8,&pSrcPg,0);" (assignment_expression "iVar6 = (*local_34->xGet)(local_34,uVar8,&pSrcPg,0)" identifier = (call_expression "(*local_34->xGet)(local_34,uVar8,&pSrcPg,0)" (parenthesized_expression "(*local_34->xGet)" ( (pointer_expression "*local_34->xGet" * (field_expression "local_34->xGet" identifier -> field_identifier)) )) (argument_list "(local_34,uVar8,&pSrcPg,0)" ( identifier , identifier , (pointer_expression "&pSrcPg" & identifier) , number_literal )))) ;) (if_statement "if (iVar6 != 0) break;" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = sqlite3PagerWrite(pSrcPg);" (assignment_expression "iVar6 = sqlite3PagerWrite(pSrcPg)" identifier = (call_expression "sqlite3PagerWrite(pSrcPg)" identifier (argument_list "(pSrcPg)" ( identifier )))) ;) (if_statement "if (pSrcPg != (DbPage *)0x0) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }" if (parenthesized_expression "(pSrcPg != (DbPage *)0x0)" ( (binary_expression "pSrcPg != (DbPage *)0x0" identifier != (cast_expression "(DbPage *)0x0" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }" { (expression_statement "sqlite3PagerUnrefNotNull(pSrcPg);" (call_expression "sqlite3PagerUnrefNotNull(pSrcPg)" identifier (argument_list "(pSrcPg)" ( identifier ))) ;) })) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_000851f0;" goto statement_identifier ;) }))) (expression_statement "p_00 = p->pSrc;" (assignment_expression "p_00 = p->pSrc" identifier = (field_expression "p->pSrc" identifier -> field_identifier)) ;) (expression_statement "pBVar11 = pBVar14->pBt;" (assignment_expression "pBVar11 = pBVar14->pBt" identifier = (field_expression "pBVar14->pBt" identifier -> field_identifier)) ;) (expression_statement "pBVar12 = p_00->pBt;" (assignment_expression "pBVar12 = p_00->pBt" identifier = (field_expression "p_00->pBt" identifier -> field_identifier)) ;) (expression_statement "pPVar7 = pBVar11->pPager;" (assignment_expression "pPVar7 = pBVar11->pPager" identifier = (field_expression "pBVar11->pPager" identifier -> field_identifier)) ;) (labeled_statement "LAB_0008518c:\n    local_50 = pBVar12->pageSize;" statement_identifier : (expression_statement "local_50 = pBVar12->pageSize;" (assignment_expression "local_50 = pBVar12->pageSize" identifier = (field_expression "pBVar12->pageSize" identifier -> field_identifier)) ;)) (expression_statement "local_48 = pBVar11->pageSize;" (assignment_expression "local_48 = pBVar11->pageSize" identifier = (field_expression "pBVar11->pageSize" identifier -> field_identifier)) ;) (expression_statement "uVar2 = pPVar7->journalMode;" (assignment_expression "uVar2 = pPVar7->journalMode" identifier = (field_expression "pPVar7->journalMode" identifier -> field_identifier)) ;) (expression_statement "local_3c = (DbPage *)pBVar12->nPage;" (assignment_expression "local_3c = (DbPage *)pBVar12->nPage" identifier = (cast_expression "(DbPage *)pBVar12->nPage" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pBVar12->nPage" identifier -> field_identifier))) ;) (if_statement "if ((uVar2 != '\x05') || (local_48 == local_50)) {\n      if (nPage == 0) {\nLAB_0008551a:\n        zSrcData = (u8 *)p->iNext;\n      }\n      else {\n        zSrcData = (u8 *)p->iNext;\n        if (zSrcData <= local_3c) {\n          iVar13 = 0;\n          while( true ) {\n            iVar6 = 0;\n            if ((((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&\n                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)) &&\n               (iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),\n               pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            iVar13 = iVar13 + 1;\n            zSrcData = (u8 *)(p->iNext + 1);\n            p->iNext = (Pgno)zSrcData;\n            if (((nPage <= iVar13) && (-1 < nPage)) || (local_3c < zSrcData)) break;\n            if (iVar6 != 0) goto LAB_0008506e;\n            p_00 = p->pSrc;\n          }\n          if (iVar6 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      p->nPagecount = (Pgno)local_3c;\n      p->nRemaining = (Pgno)((int)local_3c + (1 - (int)zSrcData));\n      if (local_3c < zSrcData) goto LAB_00085077;\n      if (p->isAttached == 0) {\n        pPVar7 = p->pSrc->pBt->pPager;\n        p->pNext = pPVar7->pBackup;\n        pPVar7->pBackup = p;\n        p->isAttached = 1;\n      }\n      iVar6 = 0;\n      goto joined_r0x0008561f;\n    }" if (parenthesized_expression "((uVar2 != '\x05') || (local_48 == local_50))" ( (binary_expression "(uVar2 != '\x05') || (local_48 == local_50)" (parenthesized_expression "(uVar2 != '\x05')" ( (binary_expression "uVar2 != '\x05'" identifier != (char_literal "'\x05'" ' escape_sequence ')) )) || (parenthesized_expression "(local_48 == local_50)" ( (binary_expression "local_48 == local_50" identifier == identifier) ))) )) (compound_statement "{\n      if (nPage == 0) {\nLAB_0008551a:\n        zSrcData = (u8 *)p->iNext;\n      }\n      else {\n        zSrcData = (u8 *)p->iNext;\n        if (zSrcData <= local_3c) {\n          iVar13 = 0;\n          while( true ) {\n            iVar6 = 0;\n            if ((((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&\n                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)) &&\n               (iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),\n               pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            iVar13 = iVar13 + 1;\n            zSrcData = (u8 *)(p->iNext + 1);\n            p->iNext = (Pgno)zSrcData;\n            if (((nPage <= iVar13) && (-1 < nPage)) || (local_3c < zSrcData)) break;\n            if (iVar6 != 0) goto LAB_0008506e;\n            p_00 = p->pSrc;\n          }\n          if (iVar6 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      p->nPagecount = (Pgno)local_3c;\n      p->nRemaining = (Pgno)((int)local_3c + (1 - (int)zSrcData));\n      if (local_3c < zSrcData) goto LAB_00085077;\n      if (p->isAttached == 0) {\n        pPVar7 = p->pSrc->pBt->pPager;\n        p->pNext = pPVar7->pBackup;\n        pPVar7->pBackup = p;\n        p->isAttached = 1;\n      }\n      iVar6 = 0;\n      goto joined_r0x0008561f;\n    }" { (if_statement "if (nPage == 0) {\nLAB_0008551a:\n        zSrcData = (u8 *)p->iNext;\n      }\n      else {\n        zSrcData = (u8 *)p->iNext;\n        if (zSrcData <= local_3c) {\n          iVar13 = 0;\n          while( true ) {\n            iVar6 = 0;\n            if ((((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&\n                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)) &&\n               (iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),\n               pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            iVar13 = iVar13 + 1;\n            zSrcData = (u8 *)(p->iNext + 1);\n            p->iNext = (Pgno)zSrcData;\n            if (((nPage <= iVar13) && (-1 < nPage)) || (local_3c < zSrcData)) break;\n            if (iVar6 != 0) goto LAB_0008506e;\n            p_00 = p->pSrc;\n          }\n          if (iVar6 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }" if (parenthesized_expression "(nPage == 0)" ( (binary_expression "nPage == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0008551a:\n        zSrcData = (u8 *)p->iNext;\n      }" { (labeled_statement "LAB_0008551a:\n        zSrcData = (u8 *)p->iNext;" statement_identifier : (expression_statement "zSrcData = (u8 *)p->iNext;" (assignment_expression "zSrcData = (u8 *)p->iNext" identifier = (cast_expression "(u8 *)p->iNext" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p->iNext" identifier -> field_identifier))) ;)) }) (else_clause "else {\n        zSrcData = (u8 *)p->iNext;\n        if (zSrcData <= local_3c) {\n          iVar13 = 0;\n          while( true ) {\n            iVar6 = 0;\n            if ((((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&\n                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)) &&\n               (iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),\n               pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            iVar13 = iVar13 + 1;\n            zSrcData = (u8 *)(p->iNext + 1);\n            p->iNext = (Pgno)zSrcData;\n            if (((nPage <= iVar13) && (-1 < nPage)) || (local_3c < zSrcData)) break;\n            if (iVar6 != 0) goto LAB_0008506e;\n            p_00 = p->pSrc;\n          }\n          if (iVar6 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }" else (compound_statement "{\n        zSrcData = (u8 *)p->iNext;\n        if (zSrcData <= local_3c) {\n          iVar13 = 0;\n          while( true ) {\n            iVar6 = 0;\n            if ((((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&\n                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)) &&\n               (iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),\n               pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            iVar13 = iVar13 + 1;\n            zSrcData = (u8 *)(p->iNext + 1);\n            p->iNext = (Pgno)zSrcData;\n            if (((nPage <= iVar13) && (-1 < nPage)) || (local_3c < zSrcData)) break;\n            if (iVar6 != 0) goto LAB_0008506e;\n            p_00 = p->pSrc;\n          }\n          if (iVar6 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }" { (expression_statement "zSrcData = (u8 *)p->iNext;" (assignment_expression "zSrcData = (u8 *)p->iNext" identifier = (cast_expression "(u8 *)p->iNext" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p->iNext" identifier -> field_identifier))) ;) (if_statement "if (zSrcData <= local_3c) {\n          iVar13 = 0;\n          while( true ) {\n            iVar6 = 0;\n            if ((((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&\n                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)) &&\n               (iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),\n               pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            iVar13 = iVar13 + 1;\n            zSrcData = (u8 *)(p->iNext + 1);\n            p->iNext = (Pgno)zSrcData;\n            if (((nPage <= iVar13) && (-1 < nPage)) || (local_3c < zSrcData)) break;\n            if (iVar6 != 0) goto LAB_0008506e;\n            p_00 = p->pSrc;\n          }\n          if (iVar6 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }" if (parenthesized_expression "(zSrcData <= local_3c)" ( (binary_expression "zSrcData <= local_3c" identifier <= identifier) )) (compound_statement "{\n          iVar13 = 0;\n          while( true ) {\n            iVar6 = 0;\n            if ((((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&\n                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)) &&\n               (iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),\n               pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            iVar13 = iVar13 + 1;\n            zSrcData = (u8 *)(p->iNext + 1);\n            p->iNext = (Pgno)zSrcData;\n            if (((nPage <= iVar13) && (-1 < nPage)) || (local_3c < zSrcData)) break;\n            if (iVar6 != 0) goto LAB_0008506e;\n            p_00 = p->pSrc;\n          }\n          if (iVar6 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n            iVar6 = 0;\n            if ((((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&\n                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)) &&\n               (iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),\n               pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            iVar13 = iVar13 + 1;\n            zSrcData = (u8 *)(p->iNext + 1);\n            p->iNext = (Pgno)zSrcData;\n            if (((nPage <= iVar13) && (-1 < nPage)) || (local_3c < zSrcData)) break;\n            if (iVar6 != 0) goto LAB_0008506e;\n            p_00 = p->pSrc;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            iVar6 = 0;\n            if ((((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&\n                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)) &&\n               (iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),\n               pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            iVar13 = iVar13 + 1;\n            zSrcData = (u8 *)(p->iNext + 1);\n            p->iNext = (Pgno)zSrcData;\n            if (((nPage <= iVar13) && (-1 < nPage)) || (local_3c < zSrcData)) break;\n            if (iVar6 != 0) goto LAB_0008506e;\n            p_00 = p->pSrc;\n          }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (if_statement "if ((((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&\n                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)) &&\n               (iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),\n               pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }" if (parenthesized_expression "((((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&\n                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)) &&\n               (iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),\n               pSrcPg != (DbPage *)0x0))" ( (binary_expression "(((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&\n                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)) &&\n               (iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),\n               pSrcPg != (DbPage *)0x0)" (parenthesized_expression "(((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&\n                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0))" ( (binary_expression "((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData) &&\n                (iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)" (parenthesized_expression "((u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData)" ( (binary_expression "(u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1) != zSrcData" (cast_expression "(u8 *)((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1)" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)sqlite3PendingByte / p_00->pBt->pageSize + 1)" ( (binary_expression "(uint)sqlite3PendingByte / p_00->pBt->pageSize + 1" (binary_expression "(uint)sqlite3PendingByte / p_00->pBt->pageSize" (cast_expression "(uint)sqlite3PendingByte" ( (type_descriptor "uint" type_identifier) ) identifier) / (field_expression "p_00->pBt->pageSize" (field_expression "p_00->pBt" identifier -> field_identifier) -> field_identifier)) + number_literal) ))) != identifier) )) && (parenthesized_expression "(iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0)" ( (comma_expression "iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2), iVar6 == 0" (assignment_expression "iVar6 = (*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2)" identifier = (call_expression "(*local_5c->xGet)(local_5c,(Pgno)zSrcData,&pSrcPg,2)" (parenthesized_expression "(*local_5c->xGet)" ( (pointer_expression "*local_5c->xGet" * (field_expression "local_5c->xGet" identifier -> field_identifier)) )) (argument_list "(local_5c,(Pgno)zSrcData,&pSrcPg,2)" ( identifier , (cast_expression "(Pgno)zSrcData" ( (type_descriptor "Pgno" type_identifier) ) identifier) , (pointer_expression "&pSrcPg" & identifier) , number_literal )))) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),\n               pSrcPg != (DbPage *)0x0)" ( (comma_expression "iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0),\n               pSrcPg != (DbPage *)0x0" (assignment_expression "iVar6 = backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0)" identifier = (call_expression "backupOnePage((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0)" identifier (argument_list "((sqlite3_backup *)&p->pDest,(Pgno)&p->pSrc,zSrcData,\n                                      (int)pSrcPg->pData,(sqlite3_backup *)0x0)" ( (cast_expression "(sqlite3_backup *)&p->pDest" ( (type_descriptor "sqlite3_backup *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p->pDest" & (field_expression "p->pDest" identifier -> field_identifier))) , (binary_expression "(Pgno)&p->pSrc" (parenthesized_expression "(Pgno)" ( identifier )) & (field_expression "p->pSrc" identifier -> field_identifier)) , identifier , (cast_expression "(int)pSrcPg->pData" ( (type_descriptor "int" primitive_type) ) (field_expression "pSrcPg->pData" identifier -> field_identifier)) , (cast_expression "(sqlite3_backup *)0x0" ( (type_descriptor "sqlite3_backup *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) , (binary_expression "pSrcPg != (DbPage *)0x0" identifier != (cast_expression "(DbPage *)0x0" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }" { (expression_statement "sqlite3PagerUnrefNotNull(pSrcPg);" (call_expression "sqlite3PagerUnrefNotNull(pSrcPg)" identifier (argument_list "(pSrcPg)" ( identifier ))) ;) })) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "zSrcData = (u8 *)(p->iNext + 1);" (assignment_expression "zSrcData = (u8 *)(p->iNext + 1)" identifier = (cast_expression "(u8 *)(p->iNext + 1)" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p->iNext + 1)" ( (binary_expression "p->iNext + 1" (field_expression "p->iNext" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "p->iNext = (Pgno)zSrcData;" (assignment_expression "p->iNext = (Pgno)zSrcData" (field_expression "p->iNext" identifier -> field_identifier) = (cast_expression "(Pgno)zSrcData" ( (type_descriptor "Pgno" type_identifier) ) identifier)) ;) (if_statement "if (((nPage <= iVar13) && (-1 < nPage)) || (local_3c < zSrcData)) break;" if (parenthesized_expression "(((nPage <= iVar13) && (-1 < nPage)) || (local_3c < zSrcData))" ( (binary_expression "((nPage <= iVar13) && (-1 < nPage)) || (local_3c < zSrcData)" (parenthesized_expression "((nPage <= iVar13) && (-1 < nPage))" ( (binary_expression "(nPage <= iVar13) && (-1 < nPage)" (parenthesized_expression "(nPage <= iVar13)" ( (binary_expression "nPage <= iVar13" identifier <= identifier) )) && (parenthesized_expression "(-1 < nPage)" ( (binary_expression "-1 < nPage" number_literal < identifier) ))) )) || (parenthesized_expression "(local_3c < zSrcData)" ( (binary_expression "local_3c < zSrcData" identifier < identifier) ))) )) (break_statement "break;" break ;)) (if_statement "if (iVar6 != 0) goto LAB_0008506e;" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008506e;" goto statement_identifier ;)) (expression_statement "p_00 = p->pSrc;" (assignment_expression "p_00 = p->pSrc" identifier = (field_expression "p->pSrc" identifier -> field_identifier)) ;) })) (if_statement "if (iVar6 == 0) goto LAB_0008551a;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0008551a;" goto statement_identifier ;)) (goto_statement "goto LAB_0008506e;" goto statement_identifier ;) })) }))) (expression_statement "p->nPagecount = (Pgno)local_3c;" (assignment_expression "p->nPagecount = (Pgno)local_3c" (field_expression "p->nPagecount" identifier -> field_identifier) = (cast_expression "(Pgno)local_3c" ( (type_descriptor "Pgno" type_identifier) ) identifier)) ;) (expression_statement "p->nRemaining = (Pgno)((int)local_3c + (1 - (int)zSrcData));" (assignment_expression "p->nRemaining = (Pgno)((int)local_3c + (1 - (int)zSrcData))" (field_expression "p->nRemaining" identifier -> field_identifier) = (call_expression "(Pgno)((int)local_3c + (1 - (int)zSrcData))" (parenthesized_expression "(Pgno)" ( identifier )) (argument_list "((int)local_3c + (1 - (int)zSrcData))" ( (binary_expression "(int)local_3c + (1 - (int)zSrcData)" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(1 - (int)zSrcData)" ( (binary_expression "1 - (int)zSrcData" number_literal - (cast_expression "(int)zSrcData" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (if_statement "if (local_3c < zSrcData) goto LAB_00085077;" if (parenthesized_expression "(local_3c < zSrcData)" ( (binary_expression "local_3c < zSrcData" identifier < identifier) )) (goto_statement "goto LAB_00085077;" goto statement_identifier ;)) (if_statement "if (p->isAttached == 0) {\n        pPVar7 = p->pSrc->pBt->pPager;\n        p->pNext = pPVar7->pBackup;\n        pPVar7->pBackup = p;\n        p->isAttached = 1;\n      }" if (parenthesized_expression "(p->isAttached == 0)" ( (binary_expression "p->isAttached == 0" (field_expression "p->isAttached" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n        pPVar7 = p->pSrc->pBt->pPager;\n        p->pNext = pPVar7->pBackup;\n        pPVar7->pBackup = p;\n        p->isAttached = 1;\n      }" { (expression_statement "pPVar7 = p->pSrc->pBt->pPager;" (assignment_expression "pPVar7 = p->pSrc->pBt->pPager" identifier = (field_expression "p->pSrc->pBt->pPager" (field_expression "p->pSrc->pBt" (field_expression "p->pSrc" identifier -> field_identifier) -> field_identifier) -> field_identifier)) ;) (expression_statement "p->pNext = pPVar7->pBackup;" (assignment_expression "p->pNext = pPVar7->pBackup" (field_expression "p->pNext" identifier -> field_identifier) = (field_expression "pPVar7->pBackup" identifier -> field_identifier)) ;) (expression_statement "pPVar7->pBackup = p;" (assignment_expression "pPVar7->pBackup = p" (field_expression "pPVar7->pBackup" identifier -> field_identifier) = identifier) ;) (expression_statement "p->isAttached = 1;" (assignment_expression "p->isAttached = 1" (field_expression "p->isAttached" identifier -> field_identifier) = number_literal) ;) })) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (goto_statement "goto joined_r0x0008561f;" goto statement_identifier ;) })) (if_statement "if (nPage == 0) {\n      iVar6 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }" if (parenthesized_expression "(nPage == 0)" ( (binary_expression "nPage == 0" identifier == number_literal) )) (compound_statement "{\n      iVar6 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }" { (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" identifier = number_literal) ;) (if_statement "if (local_4c == 0) goto LAB_0008522b;" if (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) (goto_statement "goto LAB_0008522b;" goto statement_identifier ;)) (goto_statement "goto LAB_000851fb;" goto statement_identifier ;) })) (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" identifier = number_literal) ;) (if_statement "if (local_3c < (u8 *)p->iNext) {\n      iVar6 = 8;\n      goto LAB_000851f0;\n    }" if (parenthesized_expression "(local_3c < (u8 *)p->iNext)" ( (binary_expression "local_3c < (u8 *)p->iNext" identifier < (cast_expression "(u8 *)p->iNext" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p->iNext" identifier -> field_identifier))) )) (compound_statement "{\n      iVar6 = 8;\n      goto LAB_000851f0;\n    }" { (expression_statement "iVar6 = 8;" (assignment_expression "iVar6 = 8" identifier = number_literal) ;) (goto_statement "goto LAB_000851f0;" goto statement_identifier ;) })) (if_statement "if (local_4c != 0) goto LAB_000851fb;" if (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) )) (goto_statement "goto LAB_000851fb;" goto statement_identifier ;)) (goto_statement "goto LAB_0008522b;" goto statement_identifier ;) })) (expression_statement "sqlite3_mutex_enter(p->pDestDb->mutex);" (call_expression "sqlite3_mutex_enter(p->pDestDb->mutex)" identifier (argument_list "(p->pDestDb->mutex)" ( (field_expression "p->pDestDb->mutex" (field_expression "p->pDestDb" identifier -> field_identifier) -> field_identifier) ))) ;) (expression_statement "iVar6 = p->rc;" (assignment_expression "iVar6 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;) (if_statement "if ((iVar6 - 5U < 2) || (iVar6 == 0)) {\n    p_00 = p->pSrc;\n    pBVar14 = p->pDest;\n    pBVar12 = p_00->pBt;\n    local_5c = pBVar12->pPager;\n    pBVar11 = pBVar14->pBt;\n    pPVar7 = pBVar11->pPager;\n    local_34 = pPVar7;\n    if ((p->pDestDb != (sqlite3 *)0x0) && (pBVar12->inTransaction == '\x02')) {\n      local_4c = 0;\n      iVar6 = 5;\n      goto LAB_00085051;\n    }\n    if (p_00->inTrans == '\0') goto LAB_000852b9;\nLAB_00084fef:\n    local_4c = p->bDestLocked;\n    if (local_4c == 0) {\nLAB_00084ffe:\n      iVar6 = sqlite3BtreeSetPageSize(pBVar14,pBVar12->pageSize,-1,0);\n      if (iVar6 != 7) {\n        pBVar14 = p->pDest;\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }\n    local_4c = 0;\n    pPVar7 = local_34;\n    goto LAB_0008518c;\n  }" if (parenthesized_expression "((iVar6 - 5U < 2) || (iVar6 == 0))" ( (binary_expression "(iVar6 - 5U < 2) || (iVar6 == 0)" (parenthesized_expression "(iVar6 - 5U < 2)" ( (binary_expression "iVar6 - 5U < 2" (binary_expression "iVar6 - 5U" identifier - number_literal) < number_literal) )) || (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    p_00 = p->pSrc;\n    pBVar14 = p->pDest;\n    pBVar12 = p_00->pBt;\n    local_5c = pBVar12->pPager;\n    pBVar11 = pBVar14->pBt;\n    pPVar7 = pBVar11->pPager;\n    local_34 = pPVar7;\n    if ((p->pDestDb != (sqlite3 *)0x0) && (pBVar12->inTransaction == '\x02')) {\n      local_4c = 0;\n      iVar6 = 5;\n      goto LAB_00085051;\n    }\n    if (p_00->inTrans == '\0') goto LAB_000852b9;\nLAB_00084fef:\n    local_4c = p->bDestLocked;\n    if (local_4c == 0) {\nLAB_00084ffe:\n      iVar6 = sqlite3BtreeSetPageSize(pBVar14,pBVar12->pageSize,-1,0);\n      if (iVar6 != 7) {\n        pBVar14 = p->pDest;\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }\n    local_4c = 0;\n    pPVar7 = local_34;\n    goto LAB_0008518c;\n  }" { (expression_statement "p_00 = p->pSrc;" (assignment_expression "p_00 = p->pSrc" identifier = (field_expression "p->pSrc" identifier -> field_identifier)) ;) (expression_statement "pBVar14 = p->pDest;" (assignment_expression "pBVar14 = p->pDest" identifier = (field_expression "p->pDest" identifier -> field_identifier)) ;) (expression_statement "pBVar12 = p_00->pBt;" (assignment_expression "pBVar12 = p_00->pBt" identifier = (field_expression "p_00->pBt" identifier -> field_identifier)) ;) (expression_statement "local_5c = pBVar12->pPager;" (assignment_expression "local_5c = pBVar12->pPager" identifier = (field_expression "pBVar12->pPager" identifier -> field_identifier)) ;) (expression_statement "pBVar11 = pBVar14->pBt;" (assignment_expression "pBVar11 = pBVar14->pBt" identifier = (field_expression "pBVar14->pBt" identifier -> field_identifier)) ;) (expression_statement "pPVar7 = pBVar11->pPager;" (assignment_expression "pPVar7 = pBVar11->pPager" identifier = (field_expression "pBVar11->pPager" identifier -> field_identifier)) ;) (expression_statement "local_34 = pPVar7;" (assignment_expression "local_34 = pPVar7" identifier = identifier) ;) (if_statement "if ((p->pDestDb != (sqlite3 *)0x0) && (pBVar12->inTransaction == '\x02')) {\n      local_4c = 0;\n      iVar6 = 5;\n      goto LAB_00085051;\n    }" if (parenthesized_expression "((p->pDestDb != (sqlite3 *)0x0) && (pBVar12->inTransaction == '\x02'))" ( (binary_expression "(p->pDestDb != (sqlite3 *)0x0) && (pBVar12->inTransaction == '\x02')" (parenthesized_expression "(p->pDestDb != (sqlite3 *)0x0)" ( (binary_expression "p->pDestDb != (sqlite3 *)0x0" (field_expression "p->pDestDb" identifier -> field_identifier) != (cast_expression "(sqlite3 *)0x0" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pBVar12->inTransaction == '\x02')" ( (binary_expression "pBVar12->inTransaction == '\x02'" (field_expression "pBVar12->inTransaction" identifier -> field_identifier) == (char_literal "'\x02'" ' escape_sequence ')) ))) )) (compound_statement "{\n      local_4c = 0;\n      iVar6 = 5;\n      goto LAB_00085051;\n    }" { (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "iVar6 = 5;" (assignment_expression "iVar6 = 5" identifier = number_literal) ;) (goto_statement "goto LAB_00085051;" goto statement_identifier ;) })) (if_statement "if (p_00->inTrans == '\0') goto LAB_000852b9;" if (parenthesized_expression "(p_00->inTrans == '\0')" ( (binary_expression "p_00->inTrans == '\0'" (field_expression "p_00->inTrans" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000852b9;" goto statement_identifier ;)) (labeled_statement "LAB_00084fef:\n    local_4c = p->bDestLocked;" statement_identifier : (expression_statement "local_4c = p->bDestLocked;" (assignment_expression "local_4c = p->bDestLocked" identifier = (field_expression "p->bDestLocked" identifier -> field_identifier)) ;)) (if_statement "if (local_4c == 0) {\nLAB_00084ffe:\n      iVar6 = sqlite3BtreeSetPageSize(pBVar14,pBVar12->pageSize,-1,0);\n      if (iVar6 != 7) {\n        pBVar14 = p->pDest;\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }" if (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00084ffe:\n      iVar6 = sqlite3BtreeSetPageSize(pBVar14,pBVar12->pageSize,-1,0);\n      if (iVar6 != 7) {\n        pBVar14 = p->pDest;\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }" { (labeled_statement "LAB_00084ffe:\n      iVar6 = sqlite3BtreeSetPageSize(pBVar14,pBVar12->pageSize,-1,0);" statement_identifier : (expression_statement "iVar6 = sqlite3BtreeSetPageSize(pBVar14,pBVar12->pageSize,-1,0);" (assignment_expression "iVar6 = sqlite3BtreeSetPageSize(pBVar14,pBVar12->pageSize,-1,0)" identifier = (call_expression "sqlite3BtreeSetPageSize(pBVar14,pBVar12->pageSize,-1,0)" identifier (argument_list "(pBVar14,pBVar12->pageSize,-1,0)" ( identifier , (field_expression "pBVar12->pageSize" identifier -> field_identifier) , number_literal , number_literal )))) ;)) (if_statement "if (iVar6 != 7) {\n        pBVar14 = p->pDest;\n        goto LAB_0008501f;\n      }" if (parenthesized_expression "(iVar6 != 7)" ( (binary_expression "iVar6 != 7" identifier != number_literal) )) (compound_statement "{\n        pBVar14 = p->pDest;\n        goto LAB_0008501f;\n      }" { (expression_statement "pBVar14 = p->pDest;" (assignment_expression "pBVar14 = p->pDest" identifier = (field_expression "p->pDest" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0008501f;" goto statement_identifier ;) })) (goto_statement "goto LAB_00085043;" goto statement_identifier ;) })) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "pPVar7 = local_34;" (assignment_expression "pPVar7 = local_34" identifier = identifier) ;) (goto_statement "goto LAB_0008518c;" goto statement_identifier ;) })) (goto_statement "goto LAB_0008522e;" goto statement_identifier ;) (while_statement "while( true ) {\n    bVar17 = CARRY4(uVar8,local_50);\n    uVar8 = uVar8 + local_50;\n    iVar13 = iVar13 + ((int)local_50 >> 0x1f) + (uint)bVar17;\n    if ((iVar6 != 0) ||\n       (uVar9 = (uint)(uVar8 < (uint)lVar5),\n       (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n       (int)((iVar13 - iVar16) - uVar9) < 0)) break;\nLAB_00085660:\n    pSrcPg = (DbPage *)0x0;\n    iVar19 = 0;\n    ppDVar18 = &pSrcPg;\n    iVar6 = __divdi3(uVar8,iVar13,local_50,(int)local_50 >> 0x1f);\n    iVar6 = (*local_5c->xGet)(local_5c,iVar6 + 1,ppDVar18,iVar19);\n    if (iVar6 == 0) {\n      iVar6 = (*psVar3->pMethods->xWrite)(psVar3,pSrcPg->pData,local_50,CONCAT44(iVar13,uVar8));\n      if (pSrcPg != (DbPage *)0x0) goto LAB_000856f0;\n    }\n    else {\n      if (pSrcPg == (DbPage *)0x0) goto LAB_000851f0;\nLAB_000856f0:\n      sqlite3PagerUnrefNotNull(pSrcPg);\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    bVar17 = CARRY4(uVar8,local_50);\n    uVar8 = uVar8 + local_50;\n    iVar13 = iVar13 + ((int)local_50 >> 0x1f) + (uint)bVar17;\n    if ((iVar6 != 0) ||\n       (uVar9 = (uint)(uVar8 < (uint)lVar5),\n       (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n       (int)((iVar13 - iVar16) - uVar9) < 0)) break;\nLAB_00085660:\n    pSrcPg = (DbPage *)0x0;\n    iVar19 = 0;\n    ppDVar18 = &pSrcPg;\n    iVar6 = __divdi3(uVar8,iVar13,local_50,(int)local_50 >> 0x1f);\n    iVar6 = (*local_5c->xGet)(local_5c,iVar6 + 1,ppDVar18,iVar19);\n    if (iVar6 == 0) {\n      iVar6 = (*psVar3->pMethods->xWrite)(psVar3,pSrcPg->pData,local_50,CONCAT44(iVar13,uVar8));\n      if (pSrcPg != (DbPage *)0x0) goto LAB_000856f0;\n    }\n    else {\n      if (pSrcPg == (DbPage *)0x0) goto LAB_000851f0;\nLAB_000856f0:\n      sqlite3PagerUnrefNotNull(pSrcPg);\n    }\n  }" { (expression_statement "bVar17 = CARRY4(uVar8,local_50);" (assignment_expression "bVar17 = CARRY4(uVar8,local_50)" identifier = (call_expression "CARRY4(uVar8,local_50)" identifier (argument_list "(uVar8,local_50)" ( identifier , identifier )))) ;) (expression_statement "uVar8 = uVar8 + local_50;" (assignment_expression "uVar8 = uVar8 + local_50" identifier = (binary_expression "uVar8 + local_50" identifier + identifier)) ;) (expression_statement "iVar13 = iVar13 + ((int)local_50 >> 0x1f) + (uint)bVar17;" (assignment_expression "iVar13 = iVar13 + ((int)local_50 >> 0x1f) + (uint)bVar17" identifier = (binary_expression "iVar13 + ((int)local_50 >> 0x1f) + (uint)bVar17" (binary_expression "iVar13 + ((int)local_50 >> 0x1f)" identifier + (parenthesized_expression "((int)local_50 >> 0x1f)" ( (binary_expression "(int)local_50 >> 0x1f" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if ((iVar6 != 0) ||\n       (uVar9 = (uint)(uVar8 < (uint)lVar5),\n       (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n       (int)((iVar13 - iVar16) - uVar9) < 0)) break;" if (parenthesized_expression "((iVar6 != 0) ||\n       (uVar9 = (uint)(uVar8 < (uint)lVar5),\n       (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n       (int)((iVar13 - iVar16) - uVar9) < 0))" ( (binary_expression "(iVar6 != 0) ||\n       (uVar9 = (uint)(uVar8 < (uint)lVar5),\n       (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n       (int)((iVar13 - iVar16) - uVar9) < 0)" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar9 = (uint)(uVar8 < (uint)lVar5),\n       (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n       (int)((iVar13 - iVar16) - uVar9) < 0)" ( (comma_expression "uVar9 = (uint)(uVar8 < (uint)lVar5),\n       (SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n       (int)((iVar13 - iVar16) - uVar9) < 0" (assignment_expression "uVar9 = (uint)(uVar8 < (uint)lVar5)" identifier = (call_expression "(uint)(uVar8 < (uint)lVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < (uint)lVar5)" ( (binary_expression "uVar8 < (uint)lVar5" identifier < (cast_expression "(uint)lVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) , (binary_expression "(SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)) ==\n       (int)((iVar13 - iVar16) - uVar9) < 0" (parenthesized_expression "(SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9))" ( (binary_expression "SBORROW4(iVar13,iVar16) != SBORROW4(iVar13 - iVar16,uVar9)" (call_expression "SBORROW4(iVar13,iVar16)" identifier (argument_list "(iVar13,iVar16)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar13 - iVar16,uVar9)" identifier (argument_list "(iVar13 - iVar16,uVar9)" ( (binary_expression "iVar13 - iVar16" identifier - identifier) , identifier )))) )) == (binary_expression "(int)((iVar13 - iVar16) - uVar9) < 0" (cast_expression "(int)((iVar13 - iVar16) - uVar9)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar13 - iVar16) - uVar9)" ( (binary_expression "(iVar13 - iVar16) - uVar9" (parenthesized_expression "(iVar13 - iVar16)" ( (binary_expression "iVar13 - iVar16" identifier - identifier) )) - identifier) ))) < number_literal))) ))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00085660:\n    pSrcPg = (DbPage *)0x0;" statement_identifier : (expression_statement "pSrcPg = (DbPage *)0x0;" (assignment_expression "pSrcPg = (DbPage *)0x0" identifier = (cast_expression "(DbPage *)0x0" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "ppDVar18 = &pSrcPg;" (assignment_expression "ppDVar18 = &pSrcPg" identifier = (pointer_expression "&pSrcPg" & identifier)) ;) (expression_statement "iVar6 = __divdi3(uVar8,iVar13,local_50,(int)local_50 >> 0x1f);" (assignment_expression "iVar6 = __divdi3(uVar8,iVar13,local_50,(int)local_50 >> 0x1f)" identifier = (call_expression "__divdi3(uVar8,iVar13,local_50,(int)local_50 >> 0x1f)" identifier (argument_list "(uVar8,iVar13,local_50,(int)local_50 >> 0x1f)" ( identifier , identifier , identifier , (binary_expression "(int)local_50 >> 0x1f" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar6 = (*local_5c->xGet)(local_5c,iVar6 + 1,ppDVar18,iVar19);" (assignment_expression "iVar6 = (*local_5c->xGet)(local_5c,iVar6 + 1,ppDVar18,iVar19)" identifier = (call_expression "(*local_5c->xGet)(local_5c,iVar6 + 1,ppDVar18,iVar19)" (parenthesized_expression "(*local_5c->xGet)" ( (pointer_expression "*local_5c->xGet" * (field_expression "local_5c->xGet" identifier -> field_identifier)) )) (argument_list "(local_5c,iVar6 + 1,ppDVar18,iVar19)" ( identifier , (binary_expression "iVar6 + 1" identifier + number_literal) , identifier , identifier )))) ;) (if_statement "if (iVar6 == 0) {\n      iVar6 = (*psVar3->pMethods->xWrite)(psVar3,pSrcPg->pData,local_50,CONCAT44(iVar13,uVar8));\n      if (pSrcPg != (DbPage *)0x0) goto LAB_000856f0;\n    }\n    else {\n      if (pSrcPg == (DbPage *)0x0) goto LAB_000851f0;\nLAB_000856f0:\n      sqlite3PagerUnrefNotNull(pSrcPg);\n    }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar6 = (*psVar3->pMethods->xWrite)(psVar3,pSrcPg->pData,local_50,CONCAT44(iVar13,uVar8));\n      if (pSrcPg != (DbPage *)0x0) goto LAB_000856f0;\n    }" { (expression_statement "iVar6 = (*psVar3->pMethods->xWrite)(psVar3,pSrcPg->pData,local_50,CONCAT44(iVar13,uVar8));" (assignment_expression "iVar6 = (*psVar3->pMethods->xWrite)(psVar3,pSrcPg->pData,local_50,CONCAT44(iVar13,uVar8))" identifier = (call_expression "(*psVar3->pMethods->xWrite)(psVar3,pSrcPg->pData,local_50,CONCAT44(iVar13,uVar8))" (parenthesized_expression "(*psVar3->pMethods->xWrite)" ( (pointer_expression "*psVar3->pMethods->xWrite" * (field_expression "psVar3->pMethods->xWrite" (field_expression "psVar3->pMethods" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(psVar3,pSrcPg->pData,local_50,CONCAT44(iVar13,uVar8))" ( identifier , (field_expression "pSrcPg->pData" identifier -> field_identifier) , identifier , (call_expression "CONCAT44(iVar13,uVar8)" identifier (argument_list "(iVar13,uVar8)" ( identifier , identifier ))) )))) ;) (if_statement "if (pSrcPg != (DbPage *)0x0) goto LAB_000856f0;" if (parenthesized_expression "(pSrcPg != (DbPage *)0x0)" ( (binary_expression "pSrcPg != (DbPage *)0x0" identifier != (cast_expression "(DbPage *)0x0" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000856f0;" goto statement_identifier ;)) }) (else_clause "else {\n      if (pSrcPg == (DbPage *)0x0) goto LAB_000851f0;\nLAB_000856f0:\n      sqlite3PagerUnrefNotNull(pSrcPg);\n    }" else (compound_statement "{\n      if (pSrcPg == (DbPage *)0x0) goto LAB_000851f0;\nLAB_000856f0:\n      sqlite3PagerUnrefNotNull(pSrcPg);\n    }" { (if_statement "if (pSrcPg == (DbPage *)0x0) goto LAB_000851f0;" if (parenthesized_expression "(pSrcPg == (DbPage *)0x0)" ( (binary_expression "pSrcPg == (DbPage *)0x0" identifier == (cast_expression "(DbPage *)0x0" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000851f0;" goto statement_identifier ;)) (labeled_statement "LAB_000856f0:\n      sqlite3PagerUnrefNotNull(pSrcPg);" statement_identifier : (expression_statement "sqlite3PagerUnrefNotNull(pSrcPg);" (call_expression "sqlite3PagerUnrefNotNull(pSrcPg)" identifier (argument_list "(pSrcPg)" ( identifier ))) ;)) }))) })) (labeled_statement "LAB_000853a0:\n  if (((iVar6 == 0) &&\n      (iVar6 = (*psVar3->pMethods->xFileSize)(psVar3,(sqlite3_int64 *)&pSrcPg), iVar6 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < pSrcPg))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < pSrcPg)) < 0 ||\n      (iVar6 = (*psVar3->pMethods->xTruncate)(psVar3,lVar4), iVar6 == 0)))) {\n    iVar6 = sqlite3PagerSync(local_34,(char *)0x0);\nLAB_000855f2:\n    if ((iVar6 != 0) ||\n       ((p->pDest->inTrans != '\0' && (iVar6 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar6 != 0)))\n       ) goto LAB_000851f0;\n    iVar6 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    p_00 = p->pSrc;\nLAB_000851fb:\n    uVar2 = p_00->inTrans;\n    if (uVar2 == '\x02') {\n      sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0);\n      p_00 = p->pSrc;\n      uVar2 = p_00->inTrans;\n    }\n    if (uVar2 != '\0') {\n      sqlite3BtreeCommitPhaseTwo(p_00,0);\n    }\n  }\n  else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }" statement_identifier : (if_statement "if (((iVar6 == 0) &&\n      (iVar6 = (*psVar3->pMethods->xFileSize)(psVar3,(sqlite3_int64 *)&pSrcPg), iVar6 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < pSrcPg))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < pSrcPg)) < 0 ||\n      (iVar6 = (*psVar3->pMethods->xTruncate)(psVar3,lVar4), iVar6 == 0)))) {\n    iVar6 = sqlite3PagerSync(local_34,(char *)0x0);\nLAB_000855f2:\n    if ((iVar6 != 0) ||\n       ((p->pDest->inTrans != '\0' && (iVar6 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar6 != 0)))\n       ) goto LAB_000851f0;\n    iVar6 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    p_00 = p->pSrc;\nLAB_000851fb:\n    uVar2 = p_00->inTrans;\n    if (uVar2 == '\x02') {\n      sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0);\n      p_00 = p->pSrc;\n      uVar2 = p_00->inTrans;\n    }\n    if (uVar2 != '\0') {\n      sqlite3BtreeCommitPhaseTwo(p_00,0);\n    }\n  }\n  else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }" if (parenthesized_expression "(((iVar6 == 0) &&\n      (iVar6 = (*psVar3->pMethods->xFileSize)(psVar3,(sqlite3_int64 *)&pSrcPg), iVar6 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < pSrcPg))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < pSrcPg)) < 0 ||\n      (iVar6 = (*psVar3->pMethods->xTruncate)(psVar3,lVar4), iVar6 == 0))))" ( (binary_expression "((iVar6 == 0) &&\n      (iVar6 = (*psVar3->pMethods->xFileSize)(psVar3,(sqlite3_int64 *)&pSrcPg), iVar6 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < pSrcPg))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < pSrcPg)) < 0 ||\n      (iVar6 = (*psVar3->pMethods->xTruncate)(psVar3,lVar4), iVar6 == 0)))" (parenthesized_expression "((iVar6 == 0) &&\n      (iVar6 = (*psVar3->pMethods->xFileSize)(psVar3,(sqlite3_int64 *)&pSrcPg), iVar6 == 0))" ( (binary_expression "(iVar6 == 0) &&\n      (iVar6 = (*psVar3->pMethods->xFileSize)(psVar3,(sqlite3_int64 *)&pSrcPg), iVar6 == 0)" (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar6 = (*psVar3->pMethods->xFileSize)(psVar3,(sqlite3_int64 *)&pSrcPg), iVar6 == 0)" ( (comma_expression "iVar6 = (*psVar3->pMethods->xFileSize)(psVar3,(sqlite3_int64 *)&pSrcPg), iVar6 == 0" (assignment_expression "iVar6 = (*psVar3->pMethods->xFileSize)(psVar3,(sqlite3_int64 *)&pSrcPg)" identifier = (call_expression "(*psVar3->pMethods->xFileSize)(psVar3,(sqlite3_int64 *)&pSrcPg)" (parenthesized_expression "(*psVar3->pMethods->xFileSize)" ( (pointer_expression "*psVar3->pMethods->xFileSize" * (field_expression "psVar3->pMethods->xFileSize" (field_expression "psVar3->pMethods" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(psVar3,(sqlite3_int64 *)&pSrcPg)" ( identifier , (cast_expression "(sqlite3_int64 *)&pSrcPg" ( (type_descriptor "sqlite3_int64 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pSrcPg" & identifier)) )))) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < pSrcPg))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < pSrcPg)) < 0 ||\n      (iVar6 = (*psVar3->pMethods->xTruncate)(psVar3,lVar4), iVar6 == 0)))" ( (parenthesized_expression "((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < pSrcPg))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < pSrcPg)) < 0 ||\n      (iVar6 = (*psVar3->pMethods->xTruncate)(psVar3,lVar4), iVar6 == 0))" ( (binary_expression "(SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < pSrcPg))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < pSrcPg)) < 0 ||\n      (iVar6 = (*psVar3->pMethods->xTruncate)(psVar3,lVar4), iVar6 == 0)" (binary_expression "(SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < pSrcPg))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < pSrcPg)) < 0" (parenthesized_expression "(SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < pSrcPg)))" ( (binary_expression "SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < pSrcPg))" (call_expression "SBORROW4(local_38,local_28)" identifier (argument_list "(local_38,local_28)" ( identifier , identifier ))) != (call_expression "SBORROW4(local_38 - local_28,(uint)(local_3c < pSrcPg))" identifier (argument_list "(local_38 - local_28,(uint)(local_3c < pSrcPg))" ( (binary_expression "local_38 - local_28" identifier - identifier) , (call_expression "(uint)(local_3c < pSrcPg)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_3c < pSrcPg)" ( (binary_expression "local_3c < pSrcPg" identifier < identifier) ))) )))) )) == (binary_expression "(int)((local_38 - local_28) - (uint)(local_3c < pSrcPg)) < 0" (cast_expression "(int)((local_38 - local_28) - (uint)(local_3c < pSrcPg))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((local_38 - local_28) - (uint)(local_3c < pSrcPg))" ( (binary_expression "(local_38 - local_28) - (uint)(local_3c < pSrcPg)" (parenthesized_expression "(local_38 - local_28)" ( (binary_expression "local_38 - local_28" identifier - identifier) )) - (call_expression "(uint)(local_3c < pSrcPg)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_3c < pSrcPg)" ( (binary_expression "local_3c < pSrcPg" identifier < identifier) )))) ))) < number_literal)) || (parenthesized_expression "(iVar6 = (*psVar3->pMethods->xTruncate)(psVar3,lVar4), iVar6 == 0)" ( (comma_expression "iVar6 = (*psVar3->pMethods->xTruncate)(psVar3,lVar4), iVar6 == 0" (assignment_expression "iVar6 = (*psVar3->pMethods->xTruncate)(psVar3,lVar4)" identifier = (call_expression "(*psVar3->pMethods->xTruncate)(psVar3,lVar4)" (parenthesized_expression "(*psVar3->pMethods->xTruncate)" ( (pointer_expression "*psVar3->pMethods->xTruncate" * (field_expression "psVar3->pMethods->xTruncate" (field_expression "psVar3->pMethods" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(psVar3,lVar4)" ( identifier , identifier )))) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) ))) )) (compound_statement "{\n    iVar6 = sqlite3PagerSync(local_34,(char *)0x0);\nLAB_000855f2:\n    if ((iVar6 != 0) ||\n       ((p->pDest->inTrans != '\0' && (iVar6 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar6 != 0)))\n       ) goto LAB_000851f0;\n    iVar6 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    p_00 = p->pSrc;\nLAB_000851fb:\n    uVar2 = p_00->inTrans;\n    if (uVar2 == '\x02') {\n      sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0);\n      p_00 = p->pSrc;\n      uVar2 = p_00->inTrans;\n    }\n    if (uVar2 != '\0') {\n      sqlite3BtreeCommitPhaseTwo(p_00,0);\n    }\n  }" { (expression_statement "iVar6 = sqlite3PagerSync(local_34,(char *)0x0);" (assignment_expression "iVar6 = sqlite3PagerSync(local_34,(char *)0x0)" identifier = (call_expression "sqlite3PagerSync(local_34,(char *)0x0)" identifier (argument_list "(local_34,(char *)0x0)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (labeled_statement "LAB_000855f2:\n    if ((iVar6 != 0) ||\n       ((p->pDest->inTrans != '\0' && (iVar6 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar6 != 0)))\n       ) goto LAB_000851f0;" statement_identifier : (if_statement "if ((iVar6 != 0) ||\n       ((p->pDest->inTrans != '\0' && (iVar6 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar6 != 0)))\n       ) goto LAB_000851f0;" if (parenthesized_expression "((iVar6 != 0) ||\n       ((p->pDest->inTrans != '\0' && (iVar6 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar6 != 0)))\n       )" ( (binary_expression "(iVar6 != 0) ||\n       ((p->pDest->inTrans != '\0' && (iVar6 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar6 != 0)))" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) || (parenthesized_expression "((p->pDest->inTrans != '\0' && (iVar6 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar6 != 0)))" ( (parenthesized_expression "(p->pDest->inTrans != '\0' && (iVar6 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar6 != 0))" ( (binary_expression "p->pDest->inTrans != '\0' && (iVar6 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar6 != 0)" (binary_expression "p->pDest->inTrans != '\0'" (field_expression "p->pDest->inTrans" (field_expression "p->pDest" identifier -> field_identifier) -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(iVar6 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar6 != 0)" ( (comma_expression "iVar6 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar6 != 0" (assignment_expression "iVar6 = sqlite3BtreeCommitPhaseTwo(p->pDest,0)" identifier = (call_expression "sqlite3BtreeCommitPhaseTwo(p->pDest,0)" identifier (argument_list "(p->pDest,0)" ( (field_expression "p->pDest" identifier -> field_identifier) , number_literal )))) , (binary_expression "iVar6 != 0" identifier != number_literal)) ))) )) ))) )) (goto_statement "goto LAB_000851f0;" goto statement_identifier ;))) (expression_statement "iVar6 = 0x65;" (assignment_expression "iVar6 = 0x65" identifier = number_literal) ;) (labeled_statement "joined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;" statement_identifier : (if_statement "if (local_4c == 0) goto LAB_0008522b;" if (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) (goto_statement "goto LAB_0008522b;" goto statement_identifier ;))) (labeled_statement "LAB_000851f8:\n    p_00 = p->pSrc;" statement_identifier : (expression_statement "p_00 = p->pSrc;" (assignment_expression "p_00 = p->pSrc" identifier = (field_expression "p->pSrc" identifier -> field_identifier)) ;)) (labeled_statement "LAB_000851fb:\n    uVar2 = p_00->inTrans;" statement_identifier : (expression_statement "uVar2 = p_00->inTrans;" (assignment_expression "uVar2 = p_00->inTrans" identifier = (field_expression "p_00->inTrans" identifier -> field_identifier)) ;)) (if_statement "if (uVar2 == '\x02') {\n      sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0);\n      p_00 = p->pSrc;\n      uVar2 = p_00->inTrans;\n    }" if (parenthesized_expression "(uVar2 == '\x02')" ( (binary_expression "uVar2 == '\x02'" identifier == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0);\n      p_00 = p->pSrc;\n      uVar2 = p_00->inTrans;\n    }" { (expression_statement "sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0);" (call_expression "sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0)" identifier (argument_list "(p_00,(char *)0x0)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "p_00 = p->pSrc;" (assignment_expression "p_00 = p->pSrc" identifier = (field_expression "p->pSrc" identifier -> field_identifier)) ;) (expression_statement "uVar2 = p_00->inTrans;" (assignment_expression "uVar2 = p_00->inTrans" identifier = (field_expression "p_00->inTrans" identifier -> field_identifier)) ;) })) (if_statement "if (uVar2 != '\0') {\n      sqlite3BtreeCommitPhaseTwo(p_00,0);\n    }" if (parenthesized_expression "(uVar2 != '\0')" ( (binary_expression "uVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      sqlite3BtreeCommitPhaseTwo(p_00,0);\n    }" { (expression_statement "sqlite3BtreeCommitPhaseTwo(p_00,0);" (call_expression "sqlite3BtreeCommitPhaseTwo(p_00,0)" identifier (argument_list "(p_00,0)" ( identifier , number_literal ))) ;) })) }) (else_clause "else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }" else (compound_statement "{\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }" { (labeled_statement "LAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;" statement_identifier : (if_statement "if (local_4c != 0) goto LAB_000851f8;" if (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) )) (goto_statement "goto LAB_000851f8;" goto statement_identifier ;))) })))) (if_statement "if (iVar6 == 0xc0a) {\n    iVar6 = 7;\n  }" if (parenthesized_expression "(iVar6 == 0xc0a)" ( (binary_expression "iVar6 == 0xc0a" identifier == number_literal) )) (compound_statement "{\n    iVar6 = 7;\n  }" { (expression_statement "iVar6 = 7;" (assignment_expression "iVar6 = 7" identifier = number_literal) ;) })) (labeled_statement "LAB_0008522b:\n  p->rc = iVar6;" statement_identifier : (expression_statement "p->rc = iVar6;" (assignment_expression "p->rc = iVar6" (field_expression "p->rc" identifier -> field_identifier) = identifier) ;)) (labeled_statement "LAB_0008522e:\n  if (p->pDestDb != (sqlite3 *)0x0) {\n    sqlite3_mutex_leave(p->pDestDb->mutex);\n  }" statement_identifier : (if_statement "if (p->pDestDb != (sqlite3 *)0x0) {\n    sqlite3_mutex_leave(p->pDestDb->mutex);\n  }" if (parenthesized_expression "(p->pDestDb != (sqlite3 *)0x0)" ( (binary_expression "p->pDestDb != (sqlite3 *)0x0" (field_expression "p->pDestDb" identifier -> field_identifier) != (cast_expression "(sqlite3 *)0x0" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sqlite3_mutex_leave(p->pDestDb->mutex);\n  }" { (expression_statement "sqlite3_mutex_leave(p->pDestDb->mutex);" (call_expression "sqlite3_mutex_leave(p->pDestDb->mutex)" identifier (argument_list "(p->pDestDb->mutex)" ( (field_expression "p->pDestDb->mutex" (field_expression "p->pDestDb" identifier -> field_identifier) -> field_identifier) ))) ;) }))) (labeled_statement "LAB_00085244:\n  pBVar14 = p->pSrc;" statement_identifier : (expression_statement "pBVar14 = p->pSrc;" (assignment_expression "pBVar14 = p->pSrc" identifier = (field_expression "p->pSrc" identifier -> field_identifier)) ;)) (if_statement "if (pBVar14->sharable != '\0') {\n    piVar1 = &pBVar14->wantToLock;\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      sqlite3BtreeLeave(pBVar14);\n    }\n  }" if (parenthesized_expression "(pBVar14->sharable != '\0')" ( (binary_expression "pBVar14->sharable != '\0'" (field_expression "pBVar14->sharable" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    piVar1 = &pBVar14->wantToLock;\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      sqlite3BtreeLeave(pBVar14);\n    }\n  }" { (expression_statement "piVar1 = &pBVar14->wantToLock;" (assignment_expression "piVar1 = &pBVar14->wantToLock" identifier = (pointer_expression "&pBVar14->wantToLock" & (field_expression "pBVar14->wantToLock" identifier -> field_identifier))) ;) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (if_statement "if (*piVar1 == 0) {\n      sqlite3BtreeLeave(pBVar14);\n    }" if (parenthesized_expression "(*piVar1 == 0)" ( (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" * identifier) == number_literal) )) (compound_statement "{\n      sqlite3BtreeLeave(pBVar14);\n    }" { (expression_statement "sqlite3BtreeLeave(pBVar14);" (call_expression "sqlite3BtreeLeave(pBVar14)" identifier (argument_list "(pBVar14)" ( identifier ))) ;) })) })) (expression_statement "sqlite3_mutex_leave(p->pSrcDb->mutex);" (call_expression "sqlite3_mutex_leave(p->pSrcDb->mutex)" identifier (argument_list "(p->pSrcDb->mutex)" ( (field_expression "p->pSrcDb->mutex" (field_expression "p->pSrcDb" identifier -> field_identifier) -> field_identifier) ))) ;) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\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    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return iVar6;" return identifier ;) })))
(translation_unit "int FUN_00084f50(int *param_1,int param_2)\n\n{\n  longlong lVar1;\n  longlong lVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int *piVar8;\n  char cVar9;\n  int *piVar10;\n  int iVar11;\n  int unaff_EBP;\n  int in_GS_OFFSET;\n  bool bVar12;\n  uint *puVar13;\n  undefined4 uVar14;\n  int local_5c;\n  uint local_50;\n  int local_4c;\n  uint local_48;\n  uint local_3c;\n  int local_38;\n  int local_34;\n  uint local_2c;\n  int local_28;\n  int local_20;\n  \n  FUN_00019701();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  FUN_000197c0(*(undefined4 *)(param_1[5] + 0xc));\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    FUN_0002b330();\n  }\n  if (*param_1 == 0) {\n    iVar3 = param_1[7];\n    if ((1 < iVar3 - 5U) && (iVar3 != 0)) goto LAB_00085244;\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    local_34 = *piVar8;\n    if (*(char *)(iVar11 + 8) != '\0') goto LAB_00084fef;\nLAB_000852b9:\n    iVar3 = FUN_0007cba0();\n    iVar7 = param_1[1];\n    if (iVar3 == 0 && param_1[3] == 0) {\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }\n    if (iVar3 != 0) {\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }\n    local_4c = 1;\nLAB_0008501f:\n    if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }\n    iVar11 = param_1[6];\n    piVar8 = *(int **)(iVar7 + 4);\n    piVar10 = *(int **)(iVar11 + 4);\n    iVar3 = *piVar8;\nLAB_0008518c:\n    local_50 = piVar10[8];\n    local_48 = piVar8[8];\n    cVar9 = *(char *)(iVar3 + 5);\n    local_3c = piVar10[0xb];\n    if ((cVar9 != '\x05') || (local_48 == local_50)) {\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }\n    if (param_2 == 0) {\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }\n    iVar3 = 8;\n    if (local_3c < (uint)param_1[4]) {\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }\n    if (local_4c != 0) goto LAB_000851fb;\n    goto LAB_0008522b;\n  }\n  FUN_000197c0(*(undefined4 *)(*param_1 + 0xc));\n  iVar3 = param_1[7];\n  if ((iVar3 - 5U < 2) || (iVar3 == 0)) {\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    iVar7 = *piVar8;\n    local_34 = iVar7;\n    if ((*param_1 != 0) && ((char)piVar10[5] == '\x02')) {\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }\n    if (*(char *)(iVar11 + 8) == '\0') goto LAB_000852b9;\nLAB_00084fef:\n    local_4c = param_1[3];\n    if (local_4c == 0) {\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }\n    local_4c = 0;\n    iVar3 = local_34;\n    goto LAB_0008518c;\n  }\n  goto LAB_0008522e;\n  while( true ) {\n    bVar12 = CARRY4(uVar4,local_50);\n    uVar4 = uVar4 + local_50;\n    iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12;\n    if ((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)) break;\nLAB_00085660:\n    local_2c = 0;\n    uVar14 = 0;\n    puVar13 = &local_2c;\n    iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f);\n    iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14);\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }\n  }\nLAB_000853a0:\n  if (((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))) {\n    iVar3 = FUN_0002a940();\nLAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;\n    iVar3 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    iVar11 = param_1[6];\nLAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);\n    if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar9 != '\0') {\n      FUN_0007c140();\n    }\n  }\n  else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }\n  if (iVar3 == 0xc0a) {\n    iVar3 = 7;\n  }\nLAB_0008522b:\n  param_1[7] = iVar3;\nLAB_0008522e:\n  if (*param_1 != 0) {\n    FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));\n  }\nLAB_00085244:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar8 = (int *)(param_1[6] + 0xc);\n    *piVar8 = *piVar8 + -1;\n    if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }\n  }\n  FUN_000197f0(*(undefined4 *)(param_1[5] + 0xc));\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f4bf0();\n  }\n  return iVar3;\n}\n\n" (function_definition "int FUN_00084f50(int *param_1,int param_2)\n\n{\n  longlong lVar1;\n  longlong lVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int *piVar8;\n  char cVar9;\n  int *piVar10;\n  int iVar11;\n  int unaff_EBP;\n  int in_GS_OFFSET;\n  bool bVar12;\n  uint *puVar13;\n  undefined4 uVar14;\n  int local_5c;\n  uint local_50;\n  int local_4c;\n  uint local_48;\n  uint local_3c;\n  int local_38;\n  int local_34;\n  uint local_2c;\n  int local_28;\n  int local_20;\n  \n  FUN_00019701();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  FUN_000197c0(*(undefined4 *)(param_1[5] + 0xc));\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    FUN_0002b330();\n  }\n  if (*param_1 == 0) {\n    iVar3 = param_1[7];\n    if ((1 < iVar3 - 5U) && (iVar3 != 0)) goto LAB_00085244;\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    local_34 = *piVar8;\n    if (*(char *)(iVar11 + 8) != '\0') goto LAB_00084fef;\nLAB_000852b9:\n    iVar3 = FUN_0007cba0();\n    iVar7 = param_1[1];\n    if (iVar3 == 0 && param_1[3] == 0) {\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }\n    if (iVar3 != 0) {\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }\n    local_4c = 1;\nLAB_0008501f:\n    if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }\n    iVar11 = param_1[6];\n    piVar8 = *(int **)(iVar7 + 4);\n    piVar10 = *(int **)(iVar11 + 4);\n    iVar3 = *piVar8;\nLAB_0008518c:\n    local_50 = piVar10[8];\n    local_48 = piVar8[8];\n    cVar9 = *(char *)(iVar3 + 5);\n    local_3c = piVar10[0xb];\n    if ((cVar9 != '\x05') || (local_48 == local_50)) {\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }\n    if (param_2 == 0) {\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }\n    iVar3 = 8;\n    if (local_3c < (uint)param_1[4]) {\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }\n    if (local_4c != 0) goto LAB_000851fb;\n    goto LAB_0008522b;\n  }\n  FUN_000197c0(*(undefined4 *)(*param_1 + 0xc));\n  iVar3 = param_1[7];\n  if ((iVar3 - 5U < 2) || (iVar3 == 0)) {\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    iVar7 = *piVar8;\n    local_34 = iVar7;\n    if ((*param_1 != 0) && ((char)piVar10[5] == '\x02')) {\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }\n    if (*(char *)(iVar11 + 8) == '\0') goto LAB_000852b9;\nLAB_00084fef:\n    local_4c = param_1[3];\n    if (local_4c == 0) {\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }\n    local_4c = 0;\n    iVar3 = local_34;\n    goto LAB_0008518c;\n  }\n  goto LAB_0008522e;\n  while( true ) {\n    bVar12 = CARRY4(uVar4,local_50);\n    uVar4 = uVar4 + local_50;\n    iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12;\n    if ((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)) break;\nLAB_00085660:\n    local_2c = 0;\n    uVar14 = 0;\n    puVar13 = &local_2c;\n    iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f);\n    iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14);\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }\n  }\nLAB_000853a0:\n  if (((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))) {\n    iVar3 = FUN_0002a940();\nLAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;\n    iVar3 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    iVar11 = param_1[6];\nLAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);\n    if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar9 != '\0') {\n      FUN_0007c140();\n    }\n  }\n  else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }\n  if (iVar3 == 0xc0a) {\n    iVar3 = 7;\n  }\nLAB_0008522b:\n  param_1[7] = iVar3;\nLAB_0008522e:\n  if (*param_1 != 0) {\n    FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));\n  }\nLAB_00085244:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar8 = (int *)(param_1[6] + 0xc);\n    *piVar8 = *piVar8 + -1;\n    if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }\n  }\n  FUN_000197f0(*(undefined4 *)(param_1[5] + 0xc));\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f4bf0();\n  }\n  return iVar3;\n}" primitive_type (function_declarator "FUN_00084f50(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  longlong lVar1;\n  longlong lVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int *piVar8;\n  char cVar9;\n  int *piVar10;\n  int iVar11;\n  int unaff_EBP;\n  int in_GS_OFFSET;\n  bool bVar12;\n  uint *puVar13;\n  undefined4 uVar14;\n  int local_5c;\n  uint local_50;\n  int local_4c;\n  uint local_48;\n  uint local_3c;\n  int local_38;\n  int local_34;\n  uint local_2c;\n  int local_28;\n  int local_20;\n  \n  FUN_00019701();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  FUN_000197c0(*(undefined4 *)(param_1[5] + 0xc));\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    FUN_0002b330();\n  }\n  if (*param_1 == 0) {\n    iVar3 = param_1[7];\n    if ((1 < iVar3 - 5U) && (iVar3 != 0)) goto LAB_00085244;\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    local_34 = *piVar8;\n    if (*(char *)(iVar11 + 8) != '\0') goto LAB_00084fef;\nLAB_000852b9:\n    iVar3 = FUN_0007cba0();\n    iVar7 = param_1[1];\n    if (iVar3 == 0 && param_1[3] == 0) {\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }\n    if (iVar3 != 0) {\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }\n    local_4c = 1;\nLAB_0008501f:\n    if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }\n    iVar11 = param_1[6];\n    piVar8 = *(int **)(iVar7 + 4);\n    piVar10 = *(int **)(iVar11 + 4);\n    iVar3 = *piVar8;\nLAB_0008518c:\n    local_50 = piVar10[8];\n    local_48 = piVar8[8];\n    cVar9 = *(char *)(iVar3 + 5);\n    local_3c = piVar10[0xb];\n    if ((cVar9 != '\x05') || (local_48 == local_50)) {\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }\n    if (param_2 == 0) {\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }\n    iVar3 = 8;\n    if (local_3c < (uint)param_1[4]) {\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }\n    if (local_4c != 0) goto LAB_000851fb;\n    goto LAB_0008522b;\n  }\n  FUN_000197c0(*(undefined4 *)(*param_1 + 0xc));\n  iVar3 = param_1[7];\n  if ((iVar3 - 5U < 2) || (iVar3 == 0)) {\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    iVar7 = *piVar8;\n    local_34 = iVar7;\n    if ((*param_1 != 0) && ((char)piVar10[5] == '\x02')) {\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }\n    if (*(char *)(iVar11 + 8) == '\0') goto LAB_000852b9;\nLAB_00084fef:\n    local_4c = param_1[3];\n    if (local_4c == 0) {\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }\n    local_4c = 0;\n    iVar3 = local_34;\n    goto LAB_0008518c;\n  }\n  goto LAB_0008522e;\n  while( true ) {\n    bVar12 = CARRY4(uVar4,local_50);\n    uVar4 = uVar4 + local_50;\n    iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12;\n    if ((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)) break;\nLAB_00085660:\n    local_2c = 0;\n    uVar14 = 0;\n    puVar13 = &local_2c;\n    iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f);\n    iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14);\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }\n  }\nLAB_000853a0:\n  if (((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))) {\n    iVar3 = FUN_0002a940();\nLAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;\n    iVar3 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    iVar11 = param_1[6];\nLAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);\n    if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar9 != '\0') {\n      FUN_0007c140();\n    }\n  }\n  else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }\n  if (iVar3 == 0xc0a) {\n    iVar3 = 7;\n  }\nLAB_0008522b:\n  param_1[7] = iVar3;\nLAB_0008522e:\n  if (*param_1 != 0) {\n    FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));\n  }\nLAB_00085244:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar8 = (int *)(param_1[6] + 0xc);\n    *piVar8 = *piVar8 + -1;\n    if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }\n  }\n  FUN_000197f0(*(undefined4 *)(param_1[5] + 0xc));\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f4bf0();\n  }\n  return iVar3;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "longlong lVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "char cVar9;" primitive_type identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "uint *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined4 uVar14;" type_identifier identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "uint local_50;" type_identifier identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "FUN_00019701();" (call_expression "FUN_00019701()" 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 "FUN_000197c0(*(undefined4 *)(param_1[5] + 0xc));" (call_expression "FUN_000197c0(*(undefined4 *)(param_1[5] + 0xc))" identifier (argument_list "(*(undefined4 *)(param_1[5] + 0xc))" ( (pointer_expression "*(undefined4 *)(param_1[5] + 0xc)" * (cast_expression "(undefined4 *)(param_1[5] + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[5] + 0xc)" ( (binary_expression "param_1[5] + 0xc" (subscript_expression "param_1[5]" identifier [ number_literal ]) + number_literal) )))) ))) ;) (if_statement "if (*(char *)(param_1[6] + 9) != '\0') {\n    FUN_0002b330();\n  }" if (parenthesized_expression "(*(char *)(param_1[6] + 9) != '\0')" ( (binary_expression "*(char *)(param_1[6] + 9) != '\0'" (pointer_expression "*(char *)(param_1[6] + 9)" * (cast_expression "(char *)(param_1[6] + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + 9)" ( (binary_expression "param_1[6] + 9" (subscript_expression "param_1[6]" identifier [ number_literal ]) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_0002b330();\n  }" { (expression_statement "FUN_0002b330();" (call_expression "FUN_0002b330()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (*param_1 == 0) {\n    iVar3 = param_1[7];\n    if ((1 < iVar3 - 5U) && (iVar3 != 0)) goto LAB_00085244;\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    local_34 = *piVar8;\n    if (*(char *)(iVar11 + 8) != '\0') goto LAB_00084fef;\nLAB_000852b9:\n    iVar3 = FUN_0007cba0();\n    iVar7 = param_1[1];\n    if (iVar3 == 0 && param_1[3] == 0) {\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }\n    if (iVar3 != 0) {\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }\n    local_4c = 1;\nLAB_0008501f:\n    if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }\n    iVar11 = param_1[6];\n    piVar8 = *(int **)(iVar7 + 4);\n    piVar10 = *(int **)(iVar11 + 4);\n    iVar3 = *piVar8;\nLAB_0008518c:\n    local_50 = piVar10[8];\n    local_48 = piVar8[8];\n    cVar9 = *(char *)(iVar3 + 5);\n    local_3c = piVar10[0xb];\n    if ((cVar9 != '\x05') || (local_48 == local_50)) {\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }\n    if (param_2 == 0) {\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }\n    iVar3 = 8;\n    if (local_3c < (uint)param_1[4]) {\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }\n    if (local_4c != 0) goto LAB_000851fb;\n    goto LAB_0008522b;\n  }" if (parenthesized_expression "(*param_1 == 0)" ( (binary_expression "*param_1 == 0" (pointer_expression "*param_1" * identifier) == number_literal) )) (compound_statement "{\n    iVar3 = param_1[7];\n    if ((1 < iVar3 - 5U) && (iVar3 != 0)) goto LAB_00085244;\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    local_34 = *piVar8;\n    if (*(char *)(iVar11 + 8) != '\0') goto LAB_00084fef;\nLAB_000852b9:\n    iVar3 = FUN_0007cba0();\n    iVar7 = param_1[1];\n    if (iVar3 == 0 && param_1[3] == 0) {\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }\n    if (iVar3 != 0) {\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }\n    local_4c = 1;\nLAB_0008501f:\n    if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }\n    iVar11 = param_1[6];\n    piVar8 = *(int **)(iVar7 + 4);\n    piVar10 = *(int **)(iVar11 + 4);\n    iVar3 = *piVar8;\nLAB_0008518c:\n    local_50 = piVar10[8];\n    local_48 = piVar8[8];\n    cVar9 = *(char *)(iVar3 + 5);\n    local_3c = piVar10[0xb];\n    if ((cVar9 != '\x05') || (local_48 == local_50)) {\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }\n    if (param_2 == 0) {\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }\n    iVar3 = 8;\n    if (local_3c < (uint)param_1[4]) {\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }\n    if (local_4c != 0) goto LAB_000851fb;\n    goto LAB_0008522b;\n  }" { (expression_statement "iVar3 = param_1[7];" (assignment_expression "iVar3 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (if_statement "if ((1 < iVar3 - 5U) && (iVar3 != 0)) goto LAB_00085244;" if (parenthesized_expression "((1 < iVar3 - 5U) && (iVar3 != 0))" ( (binary_expression "(1 < iVar3 - 5U) && (iVar3 != 0)" (parenthesized_expression "(1 < iVar3 - 5U)" ( (binary_expression "1 < iVar3 - 5U" number_literal < (binary_expression "iVar3 - 5U" identifier - number_literal)) )) && (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_00085244;" goto statement_identifier ;)) (expression_statement "iVar11 = param_1[6];" (assignment_expression "iVar11 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "piVar10 = *(int **)(iVar11 + 4);" (assignment_expression "piVar10 = *(int **)(iVar11 + 4)" identifier = (pointer_expression "*(int **)(iVar11 + 4)" * (cast_expression "(int **)(iVar11 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_5c = *piVar10;" (assignment_expression "local_5c = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "piVar8 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar8 = *(int **)(param_1[1] + 4)" identifier = (pointer_expression "*(int **)(param_1[1] + 4)" * (cast_expression "(int **)(param_1[1] + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[1] + 4)" ( (binary_expression "param_1[1] + 4" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "local_34 = *piVar8;" (assignment_expression "local_34 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (if_statement "if (*(char *)(iVar11 + 8) != '\0') goto LAB_00084fef;" if (parenthesized_expression "(*(char *)(iVar11 + 8) != '\0')" ( (binary_expression "*(char *)(iVar11 + 8) != '\0'" (pointer_expression "*(char *)(iVar11 + 8)" * (cast_expression "(char *)(iVar11 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 8)" ( (binary_expression "iVar11 + 8" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00084fef;" goto statement_identifier ;)) (labeled_statement "LAB_000852b9:\n    iVar3 = FUN_0007cba0();" statement_identifier : (expression_statement "iVar3 = FUN_0007cba0();" (assignment_expression "iVar3 = FUN_0007cba0()" identifier = (call_expression "FUN_0007cba0()" identifier (argument_list "()" ( )))) ;)) (expression_statement "iVar7 = param_1[1];" (assignment_expression "iVar7 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 == 0 && param_1[3] == 0) {\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }" if (parenthesized_expression "(iVar3 == 0 && param_1[3] == 0)" ( (binary_expression "iVar3 == 0 && param_1[3] == 0" (binary_expression "iVar3 == 0" identifier == number_literal) && (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) == number_literal)) )) (compound_statement "{\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }" { (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00084ffe;" goto statement_identifier ;) })) (if_statement "if (iVar3 != 0) {\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }" { (expression_statement "piVar8 = *(int **)(iVar7 + 4);" (assignment_expression "piVar8 = *(int **)(iVar7 + 4)" identifier = (pointer_expression "*(int **)(iVar7 + 4)" * (cast_expression "(int **)(iVar7 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" identifier = number_literal) ;) (expression_statement "piVar10 = *(int **)(param_1[6] + 4);" (assignment_expression "piVar10 = *(int **)(param_1[6] + 4)" identifier = (pointer_expression "*(int **)(param_1[6] + 4)" * (cast_expression "(int **)(param_1[6] + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[6] + 4)" ( (binary_expression "param_1[6] + 4" (subscript_expression "param_1[6]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "iVar7 = *piVar8;" (assignment_expression "iVar7 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (goto_statement "goto LAB_00085051;" goto statement_identifier ;) })) (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" identifier = number_literal) ;) (labeled_statement "LAB_0008501f:\n    if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }" statement_identifier : (if_statement "if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }" if (parenthesized_expression "(param_1[3] == 0)" ( (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }" { (expression_statement "iVar3 = FUN_0007cba0();" (assignment_expression "iVar3 = FUN_0007cba0()" identifier = (call_expression "FUN_0007cba0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }" { (expression_statement "iVar11 = param_1[6];" (assignment_expression "iVar11 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "param_1[3] = 1;" (assignment_expression "param_1[3] = 1" (subscript_expression "param_1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar8 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar8 = *(int **)(param_1[1] + 4)" identifier = (pointer_expression "*(int **)(param_1[1] + 4)" * (cast_expression "(int **)(param_1[1] + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[1] + 4)" ( (binary_expression "param_1[1] + 4" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "piVar10 = *(int **)(iVar11 + 4);" (assignment_expression "piVar10 = *(int **)(iVar11 + 4)" identifier = (pointer_expression "*(int **)(iVar11 + 4)" * (cast_expression "(int **)(iVar11 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *piVar8;" (assignment_expression "iVar3 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (goto_statement "goto LAB_0008518c;" goto statement_identifier ;) })) (labeled_statement "LAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);" statement_identifier : (expression_statement "piVar10 = *(int **)(param_1[6] + 4);" (assignment_expression "piVar10 = *(int **)(param_1[6] + 4)" identifier = (pointer_expression "*(int **)(param_1[6] + 4)" * (cast_expression "(int **)(param_1[6] + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[6] + 4)" ( (binary_expression "param_1[6] + 4" (subscript_expression "param_1[6]" identifier [ number_literal ]) + number_literal) ))))) ;)) (expression_statement "piVar8 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar8 = *(int **)(param_1[1] + 4)" identifier = (pointer_expression "*(int **)(param_1[1] + 4)" * (cast_expression "(int **)(param_1[1] + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[1] + 4)" ( (binary_expression "param_1[1] + 4" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "iVar7 = *piVar8;" (assignment_expression "iVar7 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (labeled_statement "LAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);" statement_identifier : (expression_statement "cVar9 = *(char *)(iVar7 + 5);" (assignment_expression "cVar9 = *(char *)(iVar7 + 5)" identifier = (pointer_expression "*(char *)(iVar7 + 5)" * (cast_expression "(char *)(iVar7 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 5)" ( (binary_expression "iVar7 + 5" identifier + number_literal) ))))) ;)) (expression_statement "local_50 = piVar10[8];" (assignment_expression "local_50 = piVar10[8]" identifier = (subscript_expression "piVar10[8]" identifier [ number_literal ])) ;) (expression_statement "local_48 = piVar8[8];" (assignment_expression "local_48 = piVar8[8]" identifier = (subscript_expression "piVar8[8]" identifier [ number_literal ])) ;) (expression_statement "local_3c = piVar10[0xb];" (assignment_expression "local_3c = piVar10[0xb]" identifier = (subscript_expression "piVar10[0xb]" identifier [ number_literal ])) ;) (labeled_statement "LAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;" statement_identifier : (if_statement "if (iVar3 != 0x65) goto LAB_000851f0;" if (parenthesized_expression "(iVar3 != 0x65)" ( (binary_expression "iVar3 != 0x65" identifier != number_literal) )) (goto_statement "goto LAB_000851f0;" goto statement_identifier ;))) (labeled_statement "LAB_00085077:\n      iVar11 = param_1[1];" statement_identifier : (expression_statement "iVar11 = param_1[1];" (assignment_expression "iVar11 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;)) (if_statement "if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }" if (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) )) (compound_statement "{\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }" { (if_statement "if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }" if (parenthesized_expression "(*(char *)(iVar11 + 9) != '\0')" ( (binary_expression "*(char *)(iVar11 + 9) != '\0'" (pointer_expression "*(char *)(iVar11 + 9)" * (cast_expression "(char *)(iVar11 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 9)" ( (binary_expression "iVar11 + 9" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          FUN_0002b330();\n        }" { (expression_statement "FUN_0002b330();" (call_expression "FUN_0002b330()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0" (pointer_expression "*(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c)" * (cast_expression "(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar11 + 4) + 0x2c)" ( (binary_expression "*(int *)(iVar11 + 4) + 0x2c" (pointer_expression "*(int *)(iVar11 + 4)" * (cast_expression "(int *)(iVar11 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) (if_statement "if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }" if (parenthesized_expression "(*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0)" ( (binary_expression "*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0" (pointer_expression "*(int *)(*(int *)(iVar11 + 4) + 0x2c)" * (cast_expression "(int *)(*(int *)(iVar11 + 4) + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar11 + 4) + 0x2c)" ( (binary_expression "*(int *)(iVar11 + 4) + 0x2c" (pointer_expression "*(int *)(iVar11 + 4)" * (cast_expression "(int *)(iVar11 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }" { (expression_statement "iVar3 = FUN_0007cac0();" (assignment_expression "iVar3 = FUN_0007cac0()" identifier = (call_expression "FUN_0007cac0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }" if (parenthesized_expression "(*(char *)(iVar11 + 9) == '\0')" ( (binary_expression "*(char *)(iVar11 + 9) == '\0'" (pointer_expression "*(char *)(iVar11 + 9)" * (cast_expression "(char *)(iVar11 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 9)" ( (binary_expression "iVar11 + 9" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }" { (expression_statement "bVar12 = iVar3 == 0 || iVar3 == 0x65;" (assignment_expression "bVar12 = iVar3 == 0 || iVar3 == 0x65" identifier = (binary_expression "iVar3 == 0 || iVar3 == 0x65" (binary_expression "iVar3 == 0" identifier == number_literal) || (binary_expression "iVar3 == 0x65" identifier == number_literal))) ;) }) (else_clause "else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }" else (compound_statement "{\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }" { (expression_statement "iVar7 = *(int *)(iVar11 + 0xc) + -1;" (assignment_expression "iVar7 = *(int *)(iVar11 + 0xc) + -1" identifier = (binary_expression "*(int *)(iVar11 + 0xc) + -1" (pointer_expression "*(int *)(iVar11 + 0xc)" * (cast_expression "(int *)(iVar11 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0xc)" ( (binary_expression "iVar11 + 0xc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(iVar11 + 0xc) = iVar7;" (assignment_expression "*(int *)(iVar11 + 0xc) = iVar7" (pointer_expression "*(int *)(iVar11 + 0xc)" * (cast_expression "(int *)(iVar11 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0xc)" ( (binary_expression "iVar11 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "bVar12 = iVar3 == 0x65 || iVar3 == 0;" (assignment_expression "bVar12 = iVar3 == 0x65 || iVar3 == 0" identifier = (binary_expression "iVar3 == 0x65 || iVar3 == 0" (binary_expression "iVar3 == 0x65" identifier == number_literal) || (binary_expression "iVar3 == 0" identifier == number_literal))) ;) (if_statement "if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n              FUN_0002b3c0();\n            }" { (expression_statement "FUN_0002b3c0();" (call_expression "FUN_0002b3c0()" identifier (argument_list "()" ( ))) ;) })) }))) (if_statement "if (!bVar12) goto LAB_000851f0;" if (parenthesized_expression "(!bVar12)" ( (unary_expression "!bVar12" ! identifier) )) (goto_statement "goto LAB_000851f0;" goto statement_identifier ;)) }) (else_clause "else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }" else (if_statement "if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }" if (parenthesized_expression "(*(char *)(iVar11 + 9) != '\0')" ( (binary_expression "*(char *)(iVar11 + 9) != '\0'" (pointer_expression "*(char *)(iVar11 + 9)" * (cast_expression "(char *)(iVar11 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 9)" ( (binary_expression "iVar11 + 9" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }" { (expression_statement "piVar8 = (int *)(iVar11 + 0xc);" (assignment_expression "piVar8 = (int *)(iVar11 + 0xc)" identifier = (cast_expression "(int *)(iVar11 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0xc)" ( (binary_expression "iVar11 + 0xc" identifier + number_literal) )))) ;) (expression_statement "*piVar8 = *piVar8 + -1;" (assignment_expression "*piVar8 = *piVar8 + -1" (pointer_expression "*piVar8" * identifier) = (binary_expression "*piVar8 + -1" (pointer_expression "*piVar8" * identifier) + number_literal)) ;) (if_statement "if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }" if (parenthesized_expression "(*piVar8 == 0)" ( (binary_expression "*piVar8 == 0" (pointer_expression "*piVar8" * identifier) == number_literal) )) (compound_statement "{\n            FUN_0002b3c0();\n          }" { (expression_statement "FUN_0002b3c0();" (call_expression "FUN_0002b3c0()" identifier (argument_list "()" ( ))) ;) })) })))) (expression_statement "local_3c = 1;" (assignment_expression "local_3c = 1" identifier = number_literal) ;) })) (expression_statement "iVar3 = FUN_0007d3e0();" (assignment_expression "iVar3 = FUN_0007d3e0()" identifier = (call_expression "FUN_0007d3e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }" { (if_statement "if (*param_1 != 0) {\n          FUN_00039e00();\n        }" if (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n          FUN_00039e00();\n        }" { (expression_statement "FUN_00039e00();" (call_expression "FUN_00039e00()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }" if (parenthesized_expression "((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0))" ( (binary_expression "(cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)" (parenthesized_expression "(cVar9 != '\x05')" ( (binary_expression "cVar9 != '\x05'" identifier != (char_literal "'\x05'" ' escape_sequence ')) )) || (parenthesized_expression "(iVar3 = FUN_0007d450(), iVar3 == 0)" ( (comma_expression "iVar3 = FUN_0007d450(), iVar3 == 0" (assignment_expression "iVar3 = FUN_0007d450()" identifier = (call_expression "FUN_0007d450()" identifier (argument_list "()" ( )))) , (binary_expression "iVar3 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }" { (if_statement "if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }" if (parenthesized_expression "((int)local_48 <= (int)local_50)" ( (binary_expression "(int)local_48 <= (int)local_50" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }" { (expression_statement "*(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;" (assignment_expression "*(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c" (pointer_expression "*(uint *)(local_34 + 0x18)" * (cast_expression "(uint *)(local_34 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_34 + 0x18)" ( (binary_expression "local_34 + 0x18" identifier + number_literal) )))) = (binary_expression "((int)local_50 / (int)local_48) * local_3c" (parenthesized_expression "((int)local_50 / (int)local_48)" ( (binary_expression "(int)local_50 / (int)local_48" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) / (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier)) )) * identifier)) ;) (expression_statement "iVar3 = FUN_000846f0();" (assignment_expression "iVar3 = FUN_000846f0()" identifier = (call_expression "FUN_000846f0()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_000855f2;" goto statement_identifier ;) })) (expression_statement "uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);" (assignment_expression "uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50)" identifier = (binary_expression "(int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50)" (cast_expression "(int)((local_3c - 1) + (int)local_48 / (int)local_50)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((local_3c - 1) + (int)local_48 / (int)local_50)" ( (binary_expression "(local_3c - 1) + (int)local_48 / (int)local_50" (parenthesized_expression "(local_3c - 1)" ( (binary_expression "local_3c - 1" identifier - number_literal) )) + (binary_expression "(int)local_48 / (int)local_50" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) / (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier))) ))) / (parenthesized_expression "((int)local_48 / (int)local_50)" ( (binary_expression "(int)local_48 / (int)local_50" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) / (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);" (assignment_expression "uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)" identifier = (binary_expression "*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)" (pointer_expression "*(uint *)(unaff_EBP + 0xc420e)" * (cast_expression "(uint *)(unaff_EBP + 0xc420e)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0xc420e)" ( (binary_expression "unaff_EBP + 0xc420e" identifier + number_literal) )))) / (pointer_expression "*(uint *)(*(int *)(param_1[1] + 4) + 0x20)" * (cast_expression "(uint *)(*(int *)(param_1[1] + 4) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1[1] + 4) + 0x20)" ( (binary_expression "*(int *)(param_1[1] + 4) + 0x20" (pointer_expression "*(int *)(param_1[1] + 4)" * (cast_expression "(int *)(param_1[1] + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 4)" ( (binary_expression "param_1[1] + 4" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) + number_literal) )))))) ;) (if_statement "if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }" if (parenthesized_expression "(uVar5 + 1 == uVar4)" ( (binary_expression "uVar5 + 1 == uVar4" (binary_expression "uVar5 + 1" identifier + number_literal) == identifier) )) (compound_statement "{\n            uVar4 = uVar5;\n          }" { (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" identifier = identifier) ;) })) (expression_statement "lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;" (assignment_expression "lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50" identifier = (binary_expression "(longlong)(int)local_3c * (longlong)(int)local_50" (cast_expression "(longlong)(int)local_3c" ( (type_descriptor "longlong" type_identifier) ) (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier)) * (cast_expression "(longlong)(int)local_50" ( (type_descriptor "longlong" type_identifier) ) (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "piVar8 = *(int **)(local_34 + 0x3c);" (assignment_expression "piVar8 = *(int **)(local_34 + 0x3c)" identifier = (pointer_expression "*(int **)(local_34 + 0x3c)" * (cast_expression "(int **)(local_34 + 0x3c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_34 + 0x3c)" ( (binary_expression "local_34 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(uint *)(local_34 + 0x18);" (assignment_expression "uVar5 = *(uint *)(local_34 + 0x18)" identifier = (pointer_expression "*(uint *)(local_34 + 0x18)" * (cast_expression "(uint *)(local_34 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_34 + 0x18)" ( (binary_expression "local_34 + 0x18" identifier + number_literal) ))))) ;) (do_statement "do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);" do (compound_statement "{\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          }" { (if_statement "if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }" if (parenthesized_expression "((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4))))" ( (binary_expression "(uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))" (parenthesized_expression "(uVar5 < uVar4)" ( (binary_expression "uVar5 < uVar4" identifier < identifier) )) || (parenthesized_expression "((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))" ( (parenthesized_expression "(uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4))" ( (comma_expression "uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)" (assignment_expression "uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)" identifier = (binary_expression "*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)" (pointer_expression "*(uint *)(unaff_EBP + 0xc420e)" * (cast_expression "(uint *)(unaff_EBP + 0xc420e)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0xc420e)" ( (binary_expression "unaff_EBP + 0xc420e" identifier + number_literal) )))) / (pointer_expression "*(uint *)(*(int *)(param_1[1] + 4) + 0x20)" * (cast_expression "(uint *)(*(int *)(param_1[1] + 4) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1[1] + 4) + 0x20)" ( (binary_expression "*(int *)(param_1[1] + 4) + 0x20" (pointer_expression "*(int *)(param_1[1] + 4)" * (cast_expression "(int *)(param_1[1] + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 4)" ( (binary_expression "param_1[1] + 4" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) + number_literal) )))))) , (binary_expression "uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)" (binary_expression "uVar6 + 1 == uVar4" (binary_expression "uVar6 + 1" identifier + number_literal) == identifier) && (parenthesized_expression "(uVar4 = uVar6 + 2, uVar5 < uVar4)" ( (comma_expression "uVar4 = uVar6 + 2, uVar5 < uVar4" (assignment_expression "uVar4 = uVar6 + 2" identifier = (binary_expression "uVar6 + 2" identifier + number_literal)) , (binary_expression "uVar5 < uVar4" identifier < identifier)) )))) )) ))) )) (compound_statement "{\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }" { (expression_statement "iVar3 = FUN_000846f0();" (assignment_expression "iVar3 = FUN_000846f0()" identifier = (call_expression "FUN_000846f0()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);" (assignment_expression "local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e)" identifier = (binary_expression "local_48 + *(int *)(unaff_EBP + 0xc420e)" identifier + (pointer_expression "*(int *)(unaff_EBP + 0xc420e)" * (cast_expression "(int *)(unaff_EBP + 0xc420e)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0xc420e)" ( (binary_expression "unaff_EBP + 0xc420e" identifier + number_literal) )))))) ;) (expression_statement "local_3c = (uint)lVar1;" (assignment_expression "local_3c = (uint)lVar1" identifier = (cast_expression "(uint)lVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_38 = (int)((ulonglong)lVar1 >> 0x20);" (assignment_expression "local_38 = (int)((ulonglong)lVar1 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar11 = local_38 - ((int)local_48 >> 0x1f);" (assignment_expression "iVar11 = local_38 - ((int)local_48 >> 0x1f)" identifier = (binary_expression "local_38 - ((int)local_48 >> 0x1f)" identifier - (parenthesized_expression "((int)local_48 >> 0x1f)" ( (binary_expression "(int)local_48 >> 0x1f" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "lVar2 = (longlong)(int)local_48;" (assignment_expression "lVar2 = (longlong)(int)local_48" identifier = (cast_expression "(longlong)(int)local_48" ( (type_descriptor "longlong" type_identifier) ) (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }" if (parenthesized_expression "((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0)" ( (binary_expression "(SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0" (parenthesized_expression "(SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48)))" ( (binary_expression "SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))" (call_expression "SBORROW4(local_38,(int)local_48 >> 0x1f)" identifier (argument_list "(local_38,(int)local_48 >> 0x1f)" ( identifier , (binary_expression "(int)local_48 >> 0x1f" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) != (call_expression "SBORROW4(iVar11,(uint)(local_3c < local_48))" identifier (argument_list "(iVar11,(uint)(local_3c < local_48))" ( identifier , (call_expression "(uint)(local_3c < local_48)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_3c < local_48)" ( (binary_expression "local_3c < local_48" identifier < identifier) ))) )))) )) != (binary_expression "(int)(iVar11 - (uint)(local_3c < local_48)) < 0" (cast_expression "(int)(iVar11 - (uint)(local_3c < local_48))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar11 - (uint)(local_3c < local_48))" ( (binary_expression "iVar11 - (uint)(local_3c < local_48)" identifier - (call_expression "(uint)(local_3c < local_48)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_3c < local_48)" ( (binary_expression "local_3c < local_48" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n                lVar2 = lVar1;\n              }" { (expression_statement "lVar2 = lVar1;" (assignment_expression "lVar2 = lVar1" identifier = identifier) ;) })) (expression_statement "iVar7 = (int)((ulonglong)lVar2 >> 0x20);" (assignment_expression "iVar7 = (int)((ulonglong)lVar2 >> 0x20)" identifier = (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) )))) ;) (expression_statement "uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;" (assignment_expression "uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50" identifier = (binary_expression "*(int *)(unaff_EBP + 0xc420e) + local_50" (pointer_expression "*(int *)(unaff_EBP + 0xc420e)" * (cast_expression "(int *)(unaff_EBP + 0xc420e)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0xc420e)" ( (binary_expression "unaff_EBP + 0xc420e" identifier + number_literal) )))) + identifier)) ;) (expression_statement "iVar11 = (int)uVar4 >> 0x1f;" (assignment_expression "iVar11 = (int)uVar4 >> 0x1f" identifier = (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;" if (parenthesized_expression "((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0))" ( (binary_expression "(iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)" ( (comma_expression "uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0" (assignment_expression "uVar5 = (uint)(uVar4 < (uint)lVar2)" identifier = (call_expression "(uint)(uVar4 < (uint)lVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < (uint)lVar2)" ( (binary_expression "uVar4 < (uint)lVar2" identifier < (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) , (binary_expression "(SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0" (parenthesized_expression "(SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5))" ( (binary_expression "SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)" (call_expression "SBORROW4(iVar11,iVar7)" identifier (argument_list "(iVar11,iVar7)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar11 - iVar7,uVar5)" identifier (argument_list "(iVar11 - iVar7,uVar5)" ( (binary_expression "iVar11 - iVar7" identifier - identifier) , identifier )))) )) == (binary_expression "(int)((iVar11 - iVar7) - uVar5) < 0" (cast_expression "(int)((iVar11 - iVar7) - uVar5)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar11 - iVar7) - uVar5)" ( (binary_expression "(iVar11 - iVar7) - uVar5" (parenthesized_expression "(iVar11 - iVar7)" ( (binary_expression "iVar11 - iVar7" identifier - identifier) )) - identifier) ))) < number_literal))) ))) )) (goto_statement "goto LAB_000853a0;" goto statement_identifier ;)) (goto_statement "goto LAB_00085660;" goto statement_identifier ;) })) (expression_statement "iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);" (assignment_expression "iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0)" identifier = (call_expression "(**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0)" (parenthesized_expression "(**(code **)(local_34 + 200))" ( (pointer_expression "**(code **)(local_34 + 200)" * (pointer_expression "*(code **)(local_34 + 200)" * (cast_expression "(code **)(local_34 + 200)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_34 + 200)" ( (binary_expression "local_34 + 200" identifier + number_literal) ))))) )) (argument_list "(local_34,uVar4,&local_2c,0)" ( identifier , identifier , (pointer_expression "&local_2c" & identifier) , number_literal )))) ;) (if_statement "if (iVar3 != 0) break;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = FUN_00079770();" (assignment_expression "iVar3 = FUN_00079770()" identifier = (call_expression "FUN_00079770()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_2c != 0) {\n              FUN_0001b1a0();\n            }" if (parenthesized_expression "(local_2c != 0)" ( (binary_expression "local_2c != 0" identifier != number_literal) )) (compound_statement "{\n              FUN_0001b1a0();\n            }" { (expression_statement "FUN_0001b1a0();" (call_expression "FUN_0001b1a0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) ;) })) })) (goto_statement "goto LAB_000851f0;" goto statement_identifier ;) }))) (expression_statement "iVar11 = param_1[6];" (assignment_expression "iVar11 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "piVar8 = *(int **)(iVar7 + 4);" (assignment_expression "piVar8 = *(int **)(iVar7 + 4)" identifier = (pointer_expression "*(int **)(iVar7 + 4)" * (cast_expression "(int **)(iVar7 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) ;) (expression_statement "piVar10 = *(int **)(iVar11 + 4);" (assignment_expression "piVar10 = *(int **)(iVar11 + 4)" identifier = (pointer_expression "*(int **)(iVar11 + 4)" * (cast_expression "(int **)(iVar11 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *piVar8;" (assignment_expression "iVar3 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (labeled_statement "LAB_0008518c:\n    local_50 = piVar10[8];" statement_identifier : (expression_statement "local_50 = piVar10[8];" (assignment_expression "local_50 = piVar10[8]" identifier = (subscript_expression "piVar10[8]" identifier [ number_literal ])) ;)) (expression_statement "local_48 = piVar8[8];" (assignment_expression "local_48 = piVar8[8]" identifier = (subscript_expression "piVar8[8]" identifier [ number_literal ])) ;) (expression_statement "cVar9 = *(char *)(iVar3 + 5);" (assignment_expression "cVar9 = *(char *)(iVar3 + 5)" identifier = (pointer_expression "*(char *)(iVar3 + 5)" * (cast_expression "(char *)(iVar3 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 5)" ( (binary_expression "iVar3 + 5" identifier + number_literal) ))))) ;) (expression_statement "local_3c = piVar10[0xb];" (assignment_expression "local_3c = piVar10[0xb]" identifier = (subscript_expression "piVar10[0xb]" identifier [ number_literal ])) ;) (if_statement "if ((cVar9 != '\x05') || (local_48 == local_50)) {\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }" if (parenthesized_expression "((cVar9 != '\x05') || (local_48 == local_50))" ( (binary_expression "(cVar9 != '\x05') || (local_48 == local_50)" (parenthesized_expression "(cVar9 != '\x05')" ( (binary_expression "cVar9 != '\x05'" identifier != (char_literal "'\x05'" ' escape_sequence ')) )) || (parenthesized_expression "(local_48 == local_50)" ( (binary_expression "local_48 == local_50" identifier == identifier) ))) )) (compound_statement "{\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }" { (if_statement "if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }" { (labeled_statement "LAB_0008551a:\n        uVar4 = param_1[4];" statement_identifier : (expression_statement "uVar4 = param_1[4];" (assignment_expression "uVar4 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;)) }) (else_clause "else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }" else (compound_statement "{\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }" { (expression_statement "uVar4 = param_1[4];" (assignment_expression "uVar4 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (if_statement "if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }" if (parenthesized_expression "(uVar4 <= local_3c)" ( (binary_expression "uVar4 <= local_3c" identifier <= identifier) )) (compound_statement "{\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (if_statement "if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }" if (parenthesized_expression "(((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0))" ( (binary_expression "((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)" (parenthesized_expression "((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0))" ( (binary_expression "(*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)" (parenthesized_expression "(*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4)" ( (binary_expression "*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4" (binary_expression "*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1" (binary_expression "*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20)" (pointer_expression "*(uint *)(unaff_EBP + 0xc420e)" * (cast_expression "(uint *)(unaff_EBP + 0xc420e)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0xc420e)" ( (binary_expression "unaff_EBP + 0xc420e" identifier + number_literal) )))) / (pointer_expression "*(uint *)(*(int *)(iVar11 + 4) + 0x20)" * (cast_expression "(uint *)(*(int *)(iVar11 + 4) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar11 + 4) + 0x20)" ( (binary_expression "*(int *)(iVar11 + 4) + 0x20" (pointer_expression "*(int *)(iVar11 + 4)" * (cast_expression "(int *)(iVar11 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) )))) + number_literal) ))))) + number_literal) != identifier) )) && (parenthesized_expression "(iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)" ( (comma_expression "iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0" (assignment_expression "iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2)" identifier = (call_expression "(**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2)" (parenthesized_expression "(**(code **)(local_5c + 200))" ( (pointer_expression "**(code **)(local_5c + 200)" * (pointer_expression "*(code **)(local_5c + 200)" * (cast_expression "(code **)(local_5c + 200)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_5c + 200)" ( (binary_expression "local_5c + 200" identifier + number_literal) ))))) )) (argument_list "(local_5c,uVar4,&local_2c,2)" ( identifier , identifier , (pointer_expression "&local_2c" & identifier) , number_literal )))) , (binary_expression "iVar3 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)" ( (comma_expression "iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0" (assignment_expression "iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0)" identifier = (call_expression "FUN_000797c0(*(undefined4 *)(local_2c + 4),0)" identifier (argument_list "(*(undefined4 *)(local_2c + 4),0)" ( (pointer_expression "*(undefined4 *)(local_2c + 4)" * (cast_expression "(undefined4 *)(local_2c + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 4)" ( (binary_expression "local_2c + 4" identifier + number_literal) )))) , number_literal )))) , (binary_expression "local_2c != 0" identifier != number_literal)) ))) )) (compound_statement "{\n              FUN_0001b1a0();\n            }" { (expression_statement "FUN_0001b1a0();" (call_expression "FUN_0001b1a0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = param_1[4] + 1;" (assignment_expression "uVar4 = param_1[4] + 1" identifier = (binary_expression "param_1[4] + 1" (subscript_expression "param_1[4]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[4] = uVar4;" (assignment_expression "param_1[4] = uVar4" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;" if (parenthesized_expression "(((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4))" ( (binary_expression "((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)" (parenthesized_expression "((param_2 <= iVar7) && (-1 < param_2))" ( (binary_expression "(param_2 <= iVar7) && (-1 < param_2)" (parenthesized_expression "(param_2 <= iVar7)" ( (binary_expression "param_2 <= iVar7" identifier <= identifier) )) && (parenthesized_expression "(-1 < param_2)" ( (binary_expression "-1 < param_2" number_literal < identifier) ))) )) || (parenthesized_expression "(local_3c < uVar4)" ( (binary_expression "local_3c < uVar4" identifier < identifier) ))) )) (break_statement "break;" break ;)) (if_statement "if (iVar3 != 0) goto LAB_0008506e;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008506e;" goto statement_identifier ;)) (expression_statement "iVar11 = param_1[6];" (assignment_expression "iVar11 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) })) (if_statement "if (iVar3 == 0) goto LAB_0008551a;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0008551a;" goto statement_identifier ;)) (goto_statement "goto LAB_0008506e;" goto statement_identifier ;) })) }))) (expression_statement "param_1[9] = local_3c;" (assignment_expression "param_1[9] = local_3c" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[8] = (local_3c - uVar4) + 1;" (assignment_expression "param_1[8] = (local_3c - uVar4) + 1" (subscript_expression "param_1[8]" identifier [ number_literal ]) = (binary_expression "(local_3c - uVar4) + 1" (parenthesized_expression "(local_3c - uVar4)" ( (binary_expression "local_3c - uVar4" identifier - identifier) )) + number_literal)) ;) (if_statement "if (local_3c < uVar4) goto LAB_00085077;" if (parenthesized_expression "(local_3c < uVar4)" ( (binary_expression "local_3c < uVar4" identifier < identifier) )) (goto_statement "goto LAB_00085077;" goto statement_identifier ;)) (if_statement "if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }" if (parenthesized_expression "(param_1[10] == 0)" ( (binary_expression "param_1[10] == 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }" { (expression_statement "iVar3 = **(int **)(param_1[6] + 4);" (assignment_expression "iVar3 = **(int **)(param_1[6] + 4)" identifier = (pointer_expression "**(int **)(param_1[6] + 4)" * (pointer_expression "*(int **)(param_1[6] + 4)" * (cast_expression "(int **)(param_1[6] + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[6] + 4)" ( (binary_expression "param_1[6] + 4" (subscript_expression "param_1[6]" identifier [ number_literal ]) + number_literal) )))))) ;) (expression_statement "param_1[0xb] = *(int *)(iVar3 + 0x58);" (assignment_expression "param_1[0xb] = *(int *)(iVar3 + 0x58)" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (pointer_expression "*(int *)(iVar3 + 0x58)" * (cast_expression "(int *)(iVar3 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x58)" ( (binary_expression "iVar3 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(iVar3 + 0x58) = param_1;" (assignment_expression "*(int **)(iVar3 + 0x58) = param_1" (pointer_expression "*(int **)(iVar3 + 0x58)" * (cast_expression "(int **)(iVar3 + 0x58)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x58)" ( (binary_expression "iVar3 + 0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[10] = 1;" (assignment_expression "param_1[10] = 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (goto_statement "goto joined_r0x0008561f;" goto statement_identifier ;) })) (if_statement "if (param_2 == 0) {\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }" { (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" identifier = number_literal) ;) (if_statement "if (local_4c == 0) goto LAB_0008522b;" if (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) (goto_statement "goto LAB_0008522b;" goto statement_identifier ;)) (goto_statement "goto LAB_000851fb;" goto statement_identifier ;) })) (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" identifier = number_literal) ;) (if_statement "if (local_3c < (uint)param_1[4]) {\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }" if (parenthesized_expression "(local_3c < (uint)param_1[4])" ( (binary_expression "local_3c < (uint)param_1[4]" identifier < (cast_expression "(uint)param_1[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }" { (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" identifier = number_literal) ;) (goto_statement "goto LAB_000851f0;" goto statement_identifier ;) })) (if_statement "if (local_4c != 0) goto LAB_000851fb;" if (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) )) (goto_statement "goto LAB_000851fb;" goto statement_identifier ;)) (goto_statement "goto LAB_0008522b;" goto statement_identifier ;) })) (expression_statement "FUN_000197c0(*(undefined4 *)(*param_1 + 0xc));" (call_expression "FUN_000197c0(*(undefined4 *)(*param_1 + 0xc))" identifier (argument_list "(*(undefined4 *)(*param_1 + 0xc))" ( (pointer_expression "*(undefined4 *)(*param_1 + 0xc)" * (cast_expression "(undefined4 *)(*param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0xc)" ( (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" * identifier) + number_literal) )))) ))) ;) (expression_statement "iVar3 = param_1[7];" (assignment_expression "iVar3 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (if_statement "if ((iVar3 - 5U < 2) || (iVar3 == 0)) {\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    iVar7 = *piVar8;\n    local_34 = iVar7;\n    if ((*param_1 != 0) && ((char)piVar10[5] == '\x02')) {\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }\n    if (*(char *)(iVar11 + 8) == '\0') goto LAB_000852b9;\nLAB_00084fef:\n    local_4c = param_1[3];\n    if (local_4c == 0) {\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }\n    local_4c = 0;\n    iVar3 = local_34;\n    goto LAB_0008518c;\n  }" if (parenthesized_expression "((iVar3 - 5U < 2) || (iVar3 == 0))" ( (binary_expression "(iVar3 - 5U < 2) || (iVar3 == 0)" (parenthesized_expression "(iVar3 - 5U < 2)" ( (binary_expression "iVar3 - 5U < 2" (binary_expression "iVar3 - 5U" identifier - number_literal) < number_literal) )) || (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    iVar7 = *piVar8;\n    local_34 = iVar7;\n    if ((*param_1 != 0) && ((char)piVar10[5] == '\x02')) {\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }\n    if (*(char *)(iVar11 + 8) == '\0') goto LAB_000852b9;\nLAB_00084fef:\n    local_4c = param_1[3];\n    if (local_4c == 0) {\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }\n    local_4c = 0;\n    iVar3 = local_34;\n    goto LAB_0008518c;\n  }" { (expression_statement "iVar11 = param_1[6];" (assignment_expression "iVar11 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "piVar10 = *(int **)(iVar11 + 4);" (assignment_expression "piVar10 = *(int **)(iVar11 + 4)" identifier = (pointer_expression "*(int **)(iVar11 + 4)" * (cast_expression "(int **)(iVar11 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_5c = *piVar10;" (assignment_expression "local_5c = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "piVar8 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar8 = *(int **)(param_1[1] + 4)" identifier = (pointer_expression "*(int **)(param_1[1] + 4)" * (cast_expression "(int **)(param_1[1] + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[1] + 4)" ( (binary_expression "param_1[1] + 4" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "iVar7 = *piVar8;" (assignment_expression "iVar7 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "local_34 = iVar7;" (assignment_expression "local_34 = iVar7" identifier = identifier) ;) (if_statement "if ((*param_1 != 0) && ((char)piVar10[5] == '\x02')) {\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }" if (parenthesized_expression "((*param_1 != 0) && ((char)piVar10[5] == '\x02'))" ( (binary_expression "(*param_1 != 0) && ((char)piVar10[5] == '\x02')" (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) && (parenthesized_expression "((char)piVar10[5] == '\x02')" ( (binary_expression "(char)piVar10[5] == '\x02'" (cast_expression "(char)piVar10[5]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar10[5]" identifier [ number_literal ])) == (char_literal "'\x02'" ' escape_sequence ')) ))) )) (compound_statement "{\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }" { (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "iVar3 = 5;" (assignment_expression "iVar3 = 5" identifier = number_literal) ;) (goto_statement "goto LAB_00085051;" goto statement_identifier ;) })) (if_statement "if (*(char *)(iVar11 + 8) == '\0') goto LAB_000852b9;" if (parenthesized_expression "(*(char *)(iVar11 + 8) == '\0')" ( (binary_expression "*(char *)(iVar11 + 8) == '\0'" (pointer_expression "*(char *)(iVar11 + 8)" * (cast_expression "(char *)(iVar11 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 8)" ( (binary_expression "iVar11 + 8" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000852b9;" goto statement_identifier ;)) (labeled_statement "LAB_00084fef:\n    local_4c = param_1[3];" statement_identifier : (expression_statement "local_4c = param_1[3];" (assignment_expression "local_4c = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;)) (if_statement "if (local_4c == 0) {\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }" if (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }" { (labeled_statement "LAB_00084ffe:\n      iVar3 = FUN_0003a660(0);" statement_identifier : (expression_statement "iVar3 = FUN_0003a660(0);" (assignment_expression "iVar3 = FUN_0003a660(0)" identifier = (call_expression "FUN_0003a660(0)" identifier (argument_list "(0)" ( number_literal )))) ;)) (if_statement "if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }" if (parenthesized_expression "(iVar3 != 7)" ( (binary_expression "iVar3 != 7" identifier != number_literal) )) (compound_statement "{\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }" { (expression_statement "iVar7 = param_1[1];" (assignment_expression "iVar7 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_0008501f;" goto statement_identifier ;) })) (goto_statement "goto LAB_00085043;" goto statement_identifier ;) })) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "iVar3 = local_34;" (assignment_expression "iVar3 = local_34" identifier = identifier) ;) (goto_statement "goto LAB_0008518c;" goto statement_identifier ;) })) (goto_statement "goto LAB_0008522e;" goto statement_identifier ;) (while_statement "while( true ) {\n    bVar12 = CARRY4(uVar4,local_50);\n    uVar4 = uVar4 + local_50;\n    iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12;\n    if ((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)) break;\nLAB_00085660:\n    local_2c = 0;\n    uVar14 = 0;\n    puVar13 = &local_2c;\n    iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f);\n    iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14);\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    bVar12 = CARRY4(uVar4,local_50);\n    uVar4 = uVar4 + local_50;\n    iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12;\n    if ((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)) break;\nLAB_00085660:\n    local_2c = 0;\n    uVar14 = 0;\n    puVar13 = &local_2c;\n    iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f);\n    iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14);\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }\n  }" { (expression_statement "bVar12 = CARRY4(uVar4,local_50);" (assignment_expression "bVar12 = CARRY4(uVar4,local_50)" identifier = (call_expression "CARRY4(uVar4,local_50)" identifier (argument_list "(uVar4,local_50)" ( identifier , identifier )))) ;) (expression_statement "uVar4 = uVar4 + local_50;" (assignment_expression "uVar4 = uVar4 + local_50" identifier = (binary_expression "uVar4 + local_50" identifier + identifier)) ;) (expression_statement "iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12;" (assignment_expression "iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12" identifier = (binary_expression "iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12" (binary_expression "iVar11 + ((int)local_50 >> 0x1f)" identifier + (parenthesized_expression "((int)local_50 >> 0x1f)" ( (binary_expression "(int)local_50 >> 0x1f" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if ((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)) break;" if (parenthesized_expression "((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0))" ( (binary_expression "(iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)" ( (comma_expression "uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0" (assignment_expression "uVar5 = (uint)(uVar4 < (uint)lVar2)" identifier = (call_expression "(uint)(uVar4 < (uint)lVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < (uint)lVar2)" ( (binary_expression "uVar4 < (uint)lVar2" identifier < (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) , (binary_expression "(SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0" (parenthesized_expression "(SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5))" ( (binary_expression "SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)" (call_expression "SBORROW4(iVar11,iVar7)" identifier (argument_list "(iVar11,iVar7)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar11 - iVar7,uVar5)" identifier (argument_list "(iVar11 - iVar7,uVar5)" ( (binary_expression "iVar11 - iVar7" identifier - identifier) , identifier )))) )) == (binary_expression "(int)((iVar11 - iVar7) - uVar5) < 0" (cast_expression "(int)((iVar11 - iVar7) - uVar5)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar11 - iVar7) - uVar5)" ( (binary_expression "(iVar11 - iVar7) - uVar5" (parenthesized_expression "(iVar11 - iVar7)" ( (binary_expression "iVar11 - iVar7" identifier - identifier) )) - identifier) ))) < number_literal))) ))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00085660:\n    local_2c = 0;" statement_identifier : (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;)) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "puVar13 = &local_2c;" (assignment_expression "puVar13 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) (expression_statement "iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f);" (assignment_expression "iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f)" identifier = (call_expression "FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f)" identifier (argument_list "(uVar4,iVar11,local_50,(int)local_50 >> 0x1f)" ( identifier , identifier , identifier , (binary_expression "(int)local_50 >> 0x1f" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14);" (assignment_expression "iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14)" identifier = (call_expression "(**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14)" (parenthesized_expression "(**(code **)(local_5c + 200))" ( (pointer_expression "**(code **)(local_5c + 200)" * (pointer_expression "*(code **)(local_5c + 200)" * (cast_expression "(code **)(local_5c + 200)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_5c + 200)" ( (binary_expression "local_5c + 200" identifier + number_literal) ))))) )) (argument_list "(local_5c,iVar3 + 1,puVar13,uVar14)" ( identifier , (binary_expression "iVar3 + 1" identifier + number_literal) , identifier , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }" { (expression_statement "iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);" (assignment_expression "iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11)" identifier = (call_expression "(**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11)" (parenthesized_expression "(**(code **)(*piVar8 + 0xc))" ( (pointer_expression "**(code **)(*piVar8 + 0xc)" * (pointer_expression "*(code **)(*piVar8 + 0xc)" * (cast_expression "(code **)(*piVar8 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar8 + 0xc)" ( (binary_expression "*piVar8 + 0xc" (pointer_expression "*piVar8" * identifier) + number_literal) ))))) )) (argument_list "(piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11)" ( identifier , (pointer_expression "*(undefined4 *)(local_2c + 4)" * (cast_expression "(undefined4 *)(local_2c + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 4)" ( (binary_expression "local_2c + 4" identifier + number_literal) )))) , identifier , identifier , identifier )))) ;) (if_statement "if (local_2c != 0) goto LAB_000856f0;" if (parenthesized_expression "(local_2c != 0)" ( (binary_expression "local_2c != 0" identifier != number_literal) )) (goto_statement "goto LAB_000856f0;" goto statement_identifier ;)) }) (else_clause "else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }" else (compound_statement "{\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }" { (if_statement "if (local_2c == 0) goto LAB_000851f0;" if (parenthesized_expression "(local_2c == 0)" ( (binary_expression "local_2c == 0" identifier == number_literal) )) (goto_statement "goto LAB_000851f0;" goto statement_identifier ;)) (labeled_statement "LAB_000856f0:\n      FUN_0001b1a0();" statement_identifier : (expression_statement "FUN_0001b1a0();" (call_expression "FUN_0001b1a0()" identifier (argument_list "()" ( ))) ;)) }))) })) (labeled_statement "LAB_000853a0:\n  if (((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))) {\n    iVar3 = FUN_0002a940();\nLAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;\n    iVar3 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    iVar11 = param_1[6];\nLAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);\n    if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar9 != '\0') {\n      FUN_0007c140();\n    }\n  }\n  else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }" statement_identifier : (if_statement "if (((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))) {\n    iVar3 = FUN_0002a940();\nLAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;\n    iVar3 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    iVar11 = param_1[6];\nLAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);\n    if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar9 != '\0') {\n      FUN_0007c140();\n    }\n  }\n  else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }" if (parenthesized_expression "(((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0))))" ( (binary_expression "((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))" (parenthesized_expression "((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0))" ( (binary_expression "(iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)" (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)" ( (comma_expression "iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0" (assignment_expression "iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c)" identifier = (call_expression "(**(code **)(*piVar8 + 0x18))(piVar8,&local_2c)" (parenthesized_expression "(**(code **)(*piVar8 + 0x18))" ( (pointer_expression "**(code **)(*piVar8 + 0x18)" * (pointer_expression "*(code **)(*piVar8 + 0x18)" * (cast_expression "(code **)(*piVar8 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar8 + 0x18)" ( (binary_expression "*piVar8 + 0x18" (pointer_expression "*piVar8" * identifier) + number_literal) ))))) )) (argument_list "(piVar8,&local_2c)" ( identifier , (pointer_expression "&local_2c" & identifier) )))) , (binary_expression "iVar3 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))" ( (parenthesized_expression "((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0))" ( (binary_expression "(SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)" (binary_expression "(SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0" (parenthesized_expression "(SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c)))" ( (binary_expression "SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))" (call_expression "SBORROW4(local_38,local_28)" identifier (argument_list "(local_38,local_28)" ( identifier , identifier ))) != (call_expression "SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))" identifier (argument_list "(local_38 - local_28,(uint)(local_3c < local_2c))" ( (binary_expression "local_38 - local_28" identifier - identifier) , (call_expression "(uint)(local_3c < local_2c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_3c < local_2c)" ( (binary_expression "local_3c < local_2c" identifier < identifier) ))) )))) )) == (binary_expression "(int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0" (cast_expression "(int)((local_38 - local_28) - (uint)(local_3c < local_2c))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((local_38 - local_28) - (uint)(local_3c < local_2c))" ( (binary_expression "(local_38 - local_28) - (uint)(local_3c < local_2c)" (parenthesized_expression "(local_38 - local_28)" ( (binary_expression "local_38 - local_28" identifier - identifier) )) - (call_expression "(uint)(local_3c < local_2c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_3c < local_2c)" ( (binary_expression "local_3c < local_2c" identifier < identifier) )))) ))) < number_literal)) || (parenthesized_expression "(iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)" ( (comma_expression "iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0" (assignment_expression "iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1)" identifier = (call_expression "(**(code **)(*piVar8 + 0x10))(piVar8,lVar1)" (parenthesized_expression "(**(code **)(*piVar8 + 0x10))" ( (pointer_expression "**(code **)(*piVar8 + 0x10)" * (pointer_expression "*(code **)(*piVar8 + 0x10)" * (cast_expression "(code **)(*piVar8 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar8 + 0x10)" ( (binary_expression "*piVar8 + 0x10" (pointer_expression "*piVar8" * identifier) + number_literal) ))))) )) (argument_list "(piVar8,lVar1)" ( identifier , identifier )))) , (binary_expression "iVar3 == 0" identifier == number_literal)) ))) )) ))) )) (compound_statement "{\n    iVar3 = FUN_0002a940();\nLAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;\n    iVar3 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    iVar11 = param_1[6];\nLAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);\n    if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar9 != '\0') {\n      FUN_0007c140();\n    }\n  }" { (expression_statement "iVar3 = FUN_0002a940();" (assignment_expression "iVar3 = FUN_0002a940()" identifier = (call_expression "FUN_0002a940()" identifier (argument_list "()" ( )))) ;) (labeled_statement "LAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;" statement_identifier : (if_statement "if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;" if (parenthesized_expression "((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))" ( (binary_expression "(iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0)))" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) || (parenthesized_expression "((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0)))" ( (parenthesized_expression "(*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))" ( (binary_expression "*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0)" (binary_expression "*(char *)(param_1[1] + 8) != '\0'" (pointer_expression "*(char *)(param_1[1] + 8)" * (cast_expression "(char *)(param_1[1] + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 8)" ( (binary_expression "param_1[1] + 8" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(iVar3 = FUN_0007c140(), iVar3 != 0)" ( (comma_expression "iVar3 = FUN_0007c140(), iVar3 != 0" (assignment_expression "iVar3 = FUN_0007c140()" identifier = (call_expression "FUN_0007c140()" identifier (argument_list "()" ( )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) ))) )) (goto_statement "goto LAB_000851f0;" goto statement_identifier ;))) (expression_statement "iVar3 = 0x65;" (assignment_expression "iVar3 = 0x65" identifier = number_literal) ;) (labeled_statement "joined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;" statement_identifier : (if_statement "if (local_4c == 0) goto LAB_0008522b;" if (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) (goto_statement "goto LAB_0008522b;" goto statement_identifier ;))) (labeled_statement "LAB_000851f8:\n    iVar11 = param_1[6];" statement_identifier : (expression_statement "iVar11 = param_1[6];" (assignment_expression "iVar11 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;)) (labeled_statement "LAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);" statement_identifier : (expression_statement "cVar9 = *(char *)(iVar11 + 8);" (assignment_expression "cVar9 = *(char *)(iVar11 + 8)" identifier = (pointer_expression "*(char *)(iVar11 + 8)" * (cast_expression "(char *)(iVar11 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 8)" ( (binary_expression "iVar11 + 8" identifier + number_literal) ))))) ;)) (if_statement "if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }" if (parenthesized_expression "(cVar9 == '\x02')" ( (binary_expression "cVar9 == '\x02'" identifier == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }" { (expression_statement "FUN_00084c70();" (call_expression "FUN_00084c70()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar9 = *(char *)(param_1[6] + 8);" (assignment_expression "cVar9 = *(char *)(param_1[6] + 8)" identifier = (pointer_expression "*(char *)(param_1[6] + 8)" * (cast_expression "(char *)(param_1[6] + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + 8)" ( (binary_expression "param_1[6] + 8" (subscript_expression "param_1[6]" identifier [ number_literal ]) + number_literal) ))))) ;) })) (if_statement "if (cVar9 != '\0') {\n      FUN_0007c140();\n    }" if (parenthesized_expression "(cVar9 != '\0')" ( (binary_expression "cVar9 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_0007c140();\n    }" { (expression_statement "FUN_0007c140();" (call_expression "FUN_0007c140()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }" else (compound_statement "{\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }" { (labeled_statement "LAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;" statement_identifier : (if_statement "if (local_4c != 0) goto LAB_000851f8;" if (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) )) (goto_statement "goto LAB_000851f8;" goto statement_identifier ;))) })))) (if_statement "if (iVar3 == 0xc0a) {\n    iVar3 = 7;\n  }" if (parenthesized_expression "(iVar3 == 0xc0a)" ( (binary_expression "iVar3 == 0xc0a" identifier == number_literal) )) (compound_statement "{\n    iVar3 = 7;\n  }" { (expression_statement "iVar3 = 7;" (assignment_expression "iVar3 = 7" identifier = number_literal) ;) })) (labeled_statement "LAB_0008522b:\n  param_1[7] = iVar3;" statement_identifier : (expression_statement "param_1[7] = iVar3;" (assignment_expression "param_1[7] = iVar3" (subscript_expression "param_1[7]" identifier [ number_literal ]) = identifier) ;)) (labeled_statement "LAB_0008522e:\n  if (*param_1 != 0) {\n    FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));\n  }" statement_identifier : (if_statement "if (*param_1 != 0) {\n    FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));\n  }" if (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n    FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));\n  }" { (expression_statement "FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));" (call_expression "FUN_000197f0(*(undefined4 *)(*param_1 + 0xc))" identifier (argument_list "(*(undefined4 *)(*param_1 + 0xc))" ( (pointer_expression "*(undefined4 *)(*param_1 + 0xc)" * (cast_expression "(undefined4 *)(*param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0xc)" ( (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" * identifier) + number_literal) )))) ))) ;) }))) (labeled_statement "LAB_00085244:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar8 = (int *)(param_1[6] + 0xc);\n    *piVar8 = *piVar8 + -1;\n    if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }\n  }" statement_identifier : (if_statement "if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar8 = (int *)(param_1[6] + 0xc);\n    *piVar8 = *piVar8 + -1;\n    if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }\n  }" if (parenthesized_expression "(*(char *)(param_1[6] + 9) != '\0')" ( (binary_expression "*(char *)(param_1[6] + 9) != '\0'" (pointer_expression "*(char *)(param_1[6] + 9)" * (cast_expression "(char *)(param_1[6] + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + 9)" ( (binary_expression "param_1[6] + 9" (subscript_expression "param_1[6]" identifier [ number_literal ]) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    piVar8 = (int *)(param_1[6] + 0xc);\n    *piVar8 = *piVar8 + -1;\n    if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }\n  }" { (expression_statement "piVar8 = (int *)(param_1[6] + 0xc);" (assignment_expression "piVar8 = (int *)(param_1[6] + 0xc)" identifier = (cast_expression "(int *)(param_1[6] + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + 0xc)" ( (binary_expression "param_1[6] + 0xc" (subscript_expression "param_1[6]" identifier [ number_literal ]) + number_literal) )))) ;) (expression_statement "*piVar8 = *piVar8 + -1;" (assignment_expression "*piVar8 = *piVar8 + -1" (pointer_expression "*piVar8" * identifier) = (binary_expression "*piVar8 + -1" (pointer_expression "*piVar8" * identifier) + number_literal)) ;) (if_statement "if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }" if (parenthesized_expression "(*piVar8 == 0)" ( (binary_expression "*piVar8 == 0" (pointer_expression "*piVar8" * identifier) == number_literal) )) (compound_statement "{\n      FUN_0002b3c0();\n    }" { (expression_statement "FUN_0002b3c0();" (call_expression "FUN_0002b3c0()" identifier (argument_list "()" ( ))) ;) })) }))) (expression_statement "FUN_000197f0(*(undefined4 *)(param_1[5] + 0xc));" (call_expression "FUN_000197f0(*(undefined4 *)(param_1[5] + 0xc))" identifier (argument_list "(*(undefined4 *)(param_1[5] + 0xc))" ( (pointer_expression "*(undefined4 *)(param_1[5] + 0xc)" * (cast_expression "(undefined4 *)(param_1[5] + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[5] + 0xc)" ( (binary_expression "param_1[5] + 0xc" (subscript_expression "param_1[5]" identifier [ number_literal ]) + number_literal) )))) ))) ;) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f4bf0();\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_000f4bf0();\n  }" { (expression_statement "FUN_000f4bf0();" (call_expression "FUN_000f4bf0()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (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 ;) (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 (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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 ')) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression (subscript_expression IDENT [ LIT ]) == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (labeled_statement 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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) || (binary_expression IDENT == LIT))) ;) }) (else_clause else (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) || (binary_expression IDENT == LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }))) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })))) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ))) / (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) * (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) + LIT) )))))) , (binary_expression (binary_expression (binary_expression IDENT + LIT) == IDENT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT < IDENT)) )))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_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) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) != (call_expression IDENT (argument_list ( IDENT , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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) )))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) , (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , IDENT )))) )) == (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - IDENT) ))) < LIT))) ))) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) })) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression IDENT == IDENT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) + LIT) != IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , LIT )))) , (binary_expression IDENT == LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) || (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == 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 (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_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 ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (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 ')) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) , (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , IDENT )))) )) == (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - IDENT) ))) < LIT))) ))) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) }))) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , (pointer_expression & IDENT) )))) , (binary_expression IDENT == LIT)) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_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)) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) != (char_literal ' escape_sequence ')) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) ))) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (labeled_statement statement_identifier : (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 == (char_literal ' escape_sequence ')) )) (compound_statement { (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 (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;))) })))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) ))) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + 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 (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return IDENT ;) })))
(function_definition "int FUN_00084f50(int *param_1,int param_2)\n\n{\n  longlong lVar1;\n  longlong lVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int *piVar8;\n  char cVar9;\n  int *piVar10;\n  int iVar11;\n  int unaff_EBP;\n  int in_GS_OFFSET;\n  bool bVar12;\n  uint *puVar13;\n  undefined4 uVar14;\n  int local_5c;\n  uint local_50;\n  int local_4c;\n  uint local_48;\n  uint local_3c;\n  int local_38;\n  int local_34;\n  uint local_2c;\n  int local_28;\n  int local_20;\n  \n  FUN_00019701();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  FUN_000197c0(*(undefined4 *)(param_1[5] + 0xc));\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    FUN_0002b330();\n  }\n  if (*param_1 == 0) {\n    iVar3 = param_1[7];\n    if ((1 < iVar3 - 5U) && (iVar3 != 0)) goto LAB_00085244;\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    local_34 = *piVar8;\n    if (*(char *)(iVar11 + 8) != '\0') goto LAB_00084fef;\nLAB_000852b9:\n    iVar3 = FUN_0007cba0();\n    iVar7 = param_1[1];\n    if (iVar3 == 0 && param_1[3] == 0) {\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }\n    if (iVar3 != 0) {\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }\n    local_4c = 1;\nLAB_0008501f:\n    if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }\n    iVar11 = param_1[6];\n    piVar8 = *(int **)(iVar7 + 4);\n    piVar10 = *(int **)(iVar11 + 4);\n    iVar3 = *piVar8;\nLAB_0008518c:\n    local_50 = piVar10[8];\n    local_48 = piVar8[8];\n    cVar9 = *(char *)(iVar3 + 5);\n    local_3c = piVar10[0xb];\n    if ((cVar9 != '\x05') || (local_48 == local_50)) {\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }\n    if (param_2 == 0) {\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }\n    iVar3 = 8;\n    if (local_3c < (uint)param_1[4]) {\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }\n    if (local_4c != 0) goto LAB_000851fb;\n    goto LAB_0008522b;\n  }\n  FUN_000197c0(*(undefined4 *)(*param_1 + 0xc));\n  iVar3 = param_1[7];\n  if ((iVar3 - 5U < 2) || (iVar3 == 0)) {\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    iVar7 = *piVar8;\n    local_34 = iVar7;\n    if ((*param_1 != 0) && ((char)piVar10[5] == '\x02')) {\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }\n    if (*(char *)(iVar11 + 8) == '\0') goto LAB_000852b9;\nLAB_00084fef:\n    local_4c = param_1[3];\n    if (local_4c == 0) {\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }\n    local_4c = 0;\n    iVar3 = local_34;\n    goto LAB_0008518c;\n  }\n  goto LAB_0008522e;\n  while( true ) {\n    bVar12 = CARRY4(uVar4,local_50);\n    uVar4 = uVar4 + local_50;\n    iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12;\n    if ((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)) break;\nLAB_00085660:\n    local_2c = 0;\n    uVar14 = 0;\n    puVar13 = &local_2c;\n    iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f);\n    iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14);\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }\n  }\nLAB_000853a0:\n  if (((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))) {\n    iVar3 = FUN_0002a940();\nLAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;\n    iVar3 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    iVar11 = param_1[6];\nLAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);\n    if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar9 != '\0') {\n      FUN_0007c140();\n    }\n  }\n  else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }\n  if (iVar3 == 0xc0a) {\n    iVar3 = 7;\n  }\nLAB_0008522b:\n  param_1[7] = iVar3;\nLAB_0008522e:\n  if (*param_1 != 0) {\n    FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));\n  }\nLAB_00085244:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar8 = (int *)(param_1[6] + 0xc);\n    *piVar8 = *piVar8 + -1;\n    if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }\n  }\n  FUN_000197f0(*(undefined4 *)(param_1[5] + 0xc));\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f4bf0();\n  }\n  return iVar3;\n}" (primitive_type "int") (function_declarator "FUN_00084f50(int *param_1,int param_2)" (identifier "FUN_00084f50") (parameter_list "(int *param_1,int param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  longlong lVar1;\n  longlong lVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int *piVar8;\n  char cVar9;\n  int *piVar10;\n  int iVar11;\n  int unaff_EBP;\n  int in_GS_OFFSET;\n  bool bVar12;\n  uint *puVar13;\n  undefined4 uVar14;\n  int local_5c;\n  uint local_50;\n  int local_4c;\n  uint local_48;\n  uint local_3c;\n  int local_38;\n  int local_34;\n  uint local_2c;\n  int local_28;\n  int local_20;\n  \n  FUN_00019701();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  FUN_000197c0(*(undefined4 *)(param_1[5] + 0xc));\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    FUN_0002b330();\n  }\n  if (*param_1 == 0) {\n    iVar3 = param_1[7];\n    if ((1 < iVar3 - 5U) && (iVar3 != 0)) goto LAB_00085244;\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    local_34 = *piVar8;\n    if (*(char *)(iVar11 + 8) != '\0') goto LAB_00084fef;\nLAB_000852b9:\n    iVar3 = FUN_0007cba0();\n    iVar7 = param_1[1];\n    if (iVar3 == 0 && param_1[3] == 0) {\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }\n    if (iVar3 != 0) {\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }\n    local_4c = 1;\nLAB_0008501f:\n    if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }\n    iVar11 = param_1[6];\n    piVar8 = *(int **)(iVar7 + 4);\n    piVar10 = *(int **)(iVar11 + 4);\n    iVar3 = *piVar8;\nLAB_0008518c:\n    local_50 = piVar10[8];\n    local_48 = piVar8[8];\n    cVar9 = *(char *)(iVar3 + 5);\n    local_3c = piVar10[0xb];\n    if ((cVar9 != '\x05') || (local_48 == local_50)) {\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }\n    if (param_2 == 0) {\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }\n    iVar3 = 8;\n    if (local_3c < (uint)param_1[4]) {\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }\n    if (local_4c != 0) goto LAB_000851fb;\n    goto LAB_0008522b;\n  }\n  FUN_000197c0(*(undefined4 *)(*param_1 + 0xc));\n  iVar3 = param_1[7];\n  if ((iVar3 - 5U < 2) || (iVar3 == 0)) {\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    iVar7 = *piVar8;\n    local_34 = iVar7;\n    if ((*param_1 != 0) && ((char)piVar10[5] == '\x02')) {\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }\n    if (*(char *)(iVar11 + 8) == '\0') goto LAB_000852b9;\nLAB_00084fef:\n    local_4c = param_1[3];\n    if (local_4c == 0) {\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }\n    local_4c = 0;\n    iVar3 = local_34;\n    goto LAB_0008518c;\n  }\n  goto LAB_0008522e;\n  while( true ) {\n    bVar12 = CARRY4(uVar4,local_50);\n    uVar4 = uVar4 + local_50;\n    iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12;\n    if ((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)) break;\nLAB_00085660:\n    local_2c = 0;\n    uVar14 = 0;\n    puVar13 = &local_2c;\n    iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f);\n    iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14);\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }\n  }\nLAB_000853a0:\n  if (((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))) {\n    iVar3 = FUN_0002a940();\nLAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;\n    iVar3 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    iVar11 = param_1[6];\nLAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);\n    if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar9 != '\0') {\n      FUN_0007c140();\n    }\n  }\n  else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }\n  if (iVar3 == 0xc0a) {\n    iVar3 = 7;\n  }\nLAB_0008522b:\n  param_1[7] = iVar3;\nLAB_0008522e:\n  if (*param_1 != 0) {\n    FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));\n  }\nLAB_00085244:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar8 = (int *)(param_1[6] + 0xc);\n    *piVar8 = *piVar8 + -1;\n    if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }\n  }\n  FUN_000197f0(*(undefined4 *)(param_1[5] + 0xc));\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f4bf0();\n  }\n  return iVar3;\n}" ({ "{") (declaration "longlong lVar1;" (type_identifier "longlong") (identifier "lVar1") (; ";")) (declaration "longlong lVar2;" (type_identifier "longlong") (identifier "lVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "char cVar9;" (primitive_type "char") (identifier "cVar9") (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int unaff_EBP;" (primitive_type "int") (identifier "unaff_EBP") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar12;" (primitive_type "bool") (identifier "bVar12") (; ";")) (declaration "uint *puVar13;" (type_identifier "uint") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "undefined4 uVar14;" (type_identifier "undefined4") (identifier "uVar14") (; ";")) (declaration "int local_5c;" (primitive_type "int") (identifier "local_5c") (; ";")) (declaration "uint local_50;" (type_identifier "uint") (identifier "local_50") (; ";")) (declaration "int local_4c;" (primitive_type "int") (identifier "local_4c") (; ";")) (declaration "uint local_48;" (type_identifier "uint") (identifier "local_48") (; ";")) (declaration "uint local_3c;" (type_identifier "uint") (identifier "local_3c") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "int local_34;" (primitive_type "int") (identifier "local_34") (; ";")) (declaration "uint local_2c;" (type_identifier "uint") (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_00019701();" (call_expression "FUN_00019701()" (identifier "FUN_00019701") (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 "FUN_000197c0(*(undefined4 *)(param_1[5] + 0xc));" (call_expression "FUN_000197c0(*(undefined4 *)(param_1[5] + 0xc))" (identifier "FUN_000197c0") (argument_list "(*(undefined4 *)(param_1[5] + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(param_1[5] + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1[5] + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[5] + 0xc)" (( "(") (binary_expression "param_1[5] + 0xc" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (if_statement "if (*(char *)(param_1[6] + 9) != '\0') {\n    FUN_0002b330();\n  }" (if "if") (parenthesized_expression "(*(char *)(param_1[6] + 9) != '\0')" (( "(") (binary_expression "*(char *)(param_1[6] + 9) != '\0'" (pointer_expression "*(char *)(param_1[6] + 9)" (* "*") (cast_expression "(char *)(param_1[6] + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[6] + 9)" (( "(") (binary_expression "param_1[6] + 9" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (+ "+") (number_literal "9")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    FUN_0002b330();\n  }" ({ "{") (expression_statement "FUN_0002b330();" (call_expression "FUN_0002b330()" (identifier "FUN_0002b330") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (*param_1 == 0) {\n    iVar3 = param_1[7];\n    if ((1 < iVar3 - 5U) && (iVar3 != 0)) goto LAB_00085244;\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    local_34 = *piVar8;\n    if (*(char *)(iVar11 + 8) != '\0') goto LAB_00084fef;\nLAB_000852b9:\n    iVar3 = FUN_0007cba0();\n    iVar7 = param_1[1];\n    if (iVar3 == 0 && param_1[3] == 0) {\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }\n    if (iVar3 != 0) {\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }\n    local_4c = 1;\nLAB_0008501f:\n    if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }\n    iVar11 = param_1[6];\n    piVar8 = *(int **)(iVar7 + 4);\n    piVar10 = *(int **)(iVar11 + 4);\n    iVar3 = *piVar8;\nLAB_0008518c:\n    local_50 = piVar10[8];\n    local_48 = piVar8[8];\n    cVar9 = *(char *)(iVar3 + 5);\n    local_3c = piVar10[0xb];\n    if ((cVar9 != '\x05') || (local_48 == local_50)) {\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }\n    if (param_2 == 0) {\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }\n    iVar3 = 8;\n    if (local_3c < (uint)param_1[4]) {\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }\n    if (local_4c != 0) goto LAB_000851fb;\n    goto LAB_0008522b;\n  }" (if "if") (parenthesized_expression "(*param_1 == 0)" (( "(") (binary_expression "*param_1 == 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar3 = param_1[7];\n    if ((1 < iVar3 - 5U) && (iVar3 != 0)) goto LAB_00085244;\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    local_34 = *piVar8;\n    if (*(char *)(iVar11 + 8) != '\0') goto LAB_00084fef;\nLAB_000852b9:\n    iVar3 = FUN_0007cba0();\n    iVar7 = param_1[1];\n    if (iVar3 == 0 && param_1[3] == 0) {\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }\n    if (iVar3 != 0) {\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }\n    local_4c = 1;\nLAB_0008501f:\n    if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }\n    iVar11 = param_1[6];\n    piVar8 = *(int **)(iVar7 + 4);\n    piVar10 = *(int **)(iVar11 + 4);\n    iVar3 = *piVar8;\nLAB_0008518c:\n    local_50 = piVar10[8];\n    local_48 = piVar8[8];\n    cVar9 = *(char *)(iVar3 + 5);\n    local_3c = piVar10[0xb];\n    if ((cVar9 != '\x05') || (local_48 == local_50)) {\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }\n    if (param_2 == 0) {\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }\n    iVar3 = 8;\n    if (local_3c < (uint)param_1[4]) {\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }\n    if (local_4c != 0) goto LAB_000851fb;\n    goto LAB_0008522b;\n  }" ({ "{") (expression_statement "iVar3 = param_1[7];" (assignment_expression "iVar3 = param_1[7]" (identifier "iVar3") (= "=") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if ((1 < iVar3 - 5U) && (iVar3 != 0)) goto LAB_00085244;" (if "if") (parenthesized_expression "((1 < iVar3 - 5U) && (iVar3 != 0))" (( "(") (binary_expression "(1 < iVar3 - 5U) && (iVar3 != 0)" (parenthesized_expression "(1 < iVar3 - 5U)" (( "(") (binary_expression "1 < iVar3 - 5U" (number_literal "1") (< "<") (binary_expression "iVar3 - 5U" (identifier "iVar3") (- "-") (number_literal "5U"))) () ")")) (&& "&&") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00085244;" (goto "goto") (statement_identifier "LAB_00085244") (; ";"))) (expression_statement "iVar11 = param_1[6];" (assignment_expression "iVar11 = param_1[6]" (identifier "iVar11") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "piVar10 = *(int **)(iVar11 + 4);" (assignment_expression "piVar10 = *(int **)(iVar11 + 4)" (identifier "piVar10") (= "=") (pointer_expression "*(int **)(iVar11 + 4)" (* "*") (cast_expression "(int **)(iVar11 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar11 + 4)" (( "(") (binary_expression "iVar11 + 4" (identifier "iVar11") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "local_5c = *piVar10;" (assignment_expression "local_5c = *piVar10" (identifier "local_5c") (= "=") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) (; ";")) (expression_statement "piVar8 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar8 = *(int **)(param_1[1] + 4)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(param_1[1] + 4)" (* "*") (cast_expression "(int **)(param_1[1] + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1[1] + 4)" (( "(") (binary_expression "param_1[1] + 4" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "local_34 = *piVar8;" (assignment_expression "local_34 = *piVar8" (identifier "local_34") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (if_statement "if (*(char *)(iVar11 + 8) != '\0') goto LAB_00084fef;" (if "if") (parenthesized_expression "(*(char *)(iVar11 + 8) != '\0')" (( "(") (binary_expression "*(char *)(iVar11 + 8) != '\0'" (pointer_expression "*(char *)(iVar11 + 8)" (* "*") (cast_expression "(char *)(iVar11 + 8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 8)" (( "(") (binary_expression "iVar11 + 8" (identifier "iVar11") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00084fef;" (goto "goto") (statement_identifier "LAB_00084fef") (; ";"))) (labeled_statement "LAB_000852b9:\n    iVar3 = FUN_0007cba0();" (statement_identifier "LAB_000852b9") (: ":") (expression_statement "iVar3 = FUN_0007cba0();" (assignment_expression "iVar3 = FUN_0007cba0()" (identifier "iVar3") (= "=") (call_expression "FUN_0007cba0()" (identifier "FUN_0007cba0") (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "iVar7 = param_1[1];" (assignment_expression "iVar7 = param_1[1]" (identifier "iVar7") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (iVar3 == 0 && param_1[3] == 0) {\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }" (if "if") (parenthesized_expression "(iVar3 == 0 && param_1[3] == 0)" (( "(") (binary_expression "iVar3 == 0 && param_1[3] == 0" (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) (&& "&&") (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n      local_4c = 1;\n      goto LAB_00084ffe;\n    }" ({ "{") (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" (identifier "local_4c") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00084ffe;" (goto "goto") (statement_identifier "LAB_00084ffe") (; ";")) (} "}"))) (if_statement "if (iVar3 != 0) {\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      piVar8 = *(int **)(iVar7 + 4);\n      local_4c = 1;\n      piVar10 = *(int **)(param_1[6] + 4);\n      iVar7 = *piVar8;\n      goto LAB_00085051;\n    }" ({ "{") (expression_statement "piVar8 = *(int **)(iVar7 + 4);" (assignment_expression "piVar8 = *(int **)(iVar7 + 4)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(iVar7 + 4)" (* "*") (cast_expression "(int **)(iVar7 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar7 + 4)" (( "(") (binary_expression "iVar7 + 4" (identifier "iVar7") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" (identifier "local_4c") (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar10 = *(int **)(param_1[6] + 4);" (assignment_expression "piVar10 = *(int **)(param_1[6] + 4)" (identifier "piVar10") (= "=") (pointer_expression "*(int **)(param_1[6] + 4)" (* "*") (cast_expression "(int **)(param_1[6] + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1[6] + 4)" (( "(") (binary_expression "param_1[6] + 4" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar7 = *piVar8;" (assignment_expression "iVar7 = *piVar8" (identifier "iVar7") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (goto_statement "goto LAB_00085051;" (goto "goto") (statement_identifier "LAB_00085051") (; ";")) (} "}"))) (expression_statement "local_4c = 1;" (assignment_expression "local_4c = 1" (identifier "local_4c") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_0008501f:\n    if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }" (statement_identifier "LAB_0008501f") (: ":") (if_statement "if (param_1[3] == 0) {\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }" (if "if") (parenthesized_expression "(param_1[3] == 0)" (( "(") (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar3 = FUN_0007cba0();\n      if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }\nLAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);\n      piVar8 = *(int **)(param_1[1] + 4);\n      iVar7 = *piVar8;\nLAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);\n      local_50 = piVar10[8];\n      local_48 = piVar8[8];\n      local_3c = piVar10[0xb];\nLAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;\nLAB_00085077:\n      iVar11 = param_1[1];\n      if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }\n      iVar3 = FUN_0007d3e0();\n      if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }\n      goto LAB_000851f0;\n    }" ({ "{") (expression_statement "iVar3 = FUN_0007cba0();" (assignment_expression "iVar3 = FUN_0007cba0()" (identifier "iVar3") (= "=") (call_expression "FUN_0007cba0()" (identifier "FUN_0007cba0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar11 = param_1[6];\n        param_1[3] = 1;\n        piVar8 = *(int **)(param_1[1] + 4);\n        piVar10 = *(int **)(iVar11 + 4);\n        iVar3 = *piVar8;\n        goto LAB_0008518c;\n      }" ({ "{") (expression_statement "iVar11 = param_1[6];" (assignment_expression "iVar11 = param_1[6]" (identifier "iVar11") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "param_1[3] = 1;" (assignment_expression "param_1[3] = 1" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar8 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar8 = *(int **)(param_1[1] + 4)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(param_1[1] + 4)" (* "*") (cast_expression "(int **)(param_1[1] + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1[1] + 4)" (( "(") (binary_expression "param_1[1] + 4" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "piVar10 = *(int **)(iVar11 + 4);" (assignment_expression "piVar10 = *(int **)(iVar11 + 4)" (identifier "piVar10") (= "=") (pointer_expression "*(int **)(iVar11 + 4)" (* "*") (cast_expression "(int **)(iVar11 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar11 + 4)" (( "(") (binary_expression "iVar11 + 4" (identifier "iVar11") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar3 = *piVar8;" (assignment_expression "iVar3 = *piVar8" (identifier "iVar3") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (goto_statement "goto LAB_0008518c;" (goto "goto") (statement_identifier "LAB_0008518c") (; ";")) (} "}"))) (labeled_statement "LAB_00085043:\n      piVar10 = *(int **)(param_1[6] + 4);" (statement_identifier "LAB_00085043") (: ":") (expression_statement "piVar10 = *(int **)(param_1[6] + 4);" (assignment_expression "piVar10 = *(int **)(param_1[6] + 4)" (identifier "piVar10") (= "=") (pointer_expression "*(int **)(param_1[6] + 4)" (* "*") (cast_expression "(int **)(param_1[6] + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1[6] + 4)" (( "(") (binary_expression "param_1[6] + 4" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (+ "+") (number_literal "4")) () ")"))))) (; ";"))) (expression_statement "piVar8 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar8 = *(int **)(param_1[1] + 4)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(param_1[1] + 4)" (* "*") (cast_expression "(int **)(param_1[1] + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1[1] + 4)" (( "(") (binary_expression "param_1[1] + 4" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar7 = *piVar8;" (assignment_expression "iVar7 = *piVar8" (identifier "iVar7") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (labeled_statement "LAB_00085051:\n      cVar9 = *(char *)(iVar7 + 5);" (statement_identifier "LAB_00085051") (: ":") (expression_statement "cVar9 = *(char *)(iVar7 + 5);" (assignment_expression "cVar9 = *(char *)(iVar7 + 5)" (identifier "cVar9") (= "=") (pointer_expression "*(char *)(iVar7 + 5)" (* "*") (cast_expression "(char *)(iVar7 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 5)" (( "(") (binary_expression "iVar7 + 5" (identifier "iVar7") (+ "+") (number_literal "5")) () ")"))))) (; ";"))) (expression_statement "local_50 = piVar10[8];" (assignment_expression "local_50 = piVar10[8]" (identifier "local_50") (= "=") (subscript_expression "piVar10[8]" (identifier "piVar10") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "local_48 = piVar8[8];" (assignment_expression "local_48 = piVar8[8]" (identifier "local_48") (= "=") (subscript_expression "piVar8[8]" (identifier "piVar8") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "local_3c = piVar10[0xb];" (assignment_expression "local_3c = piVar10[0xb]" (identifier "local_3c") (= "=") (subscript_expression "piVar10[0xb]" (identifier "piVar10") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (labeled_statement "LAB_0008506e:\n      if (iVar3 != 0x65) goto LAB_000851f0;" (statement_identifier "LAB_0008506e") (: ":") (if_statement "if (iVar3 != 0x65) goto LAB_000851f0;" (if "if") (parenthesized_expression "(iVar3 != 0x65)" (( "(") (binary_expression "iVar3 != 0x65" (identifier "iVar3") (!= "!=") (number_literal "0x65")) () ")")) (goto_statement "goto LAB_000851f0;" (goto "goto") (statement_identifier "LAB_000851f0") (; ";")))) (labeled_statement "LAB_00085077:\n      iVar11 = param_1[1];" (statement_identifier "LAB_00085077") (: ":") (expression_statement "iVar11 = param_1[1];" (assignment_expression "iVar11 = param_1[1]" (identifier "iVar11") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";"))) (if_statement "if (local_3c == 0) {\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }" (if "if") (parenthesized_expression "(local_3c == 0)" (( "(") (binary_expression "local_3c == 0" (identifier "local_3c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }\n        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;\n        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }\n        local_3c = 1;\n      }" ({ "{") (if_statement "if (*(char *)(iVar11 + 9) != '\0') {\n          FUN_0002b330();\n        }" (if "if") (parenthesized_expression "(*(char *)(iVar11 + 9) != '\0')" (( "(") (binary_expression "*(char *)(iVar11 + 9) != '\0'" (pointer_expression "*(char *)(iVar11 + 9)" (* "*") (cast_expression "(char *)(iVar11 + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 9)" (( "(") (binary_expression "iVar11 + 9" (identifier "iVar11") (+ "+") (number_literal "9")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          FUN_0002b330();\n        }" ({ "{") (expression_statement "FUN_0002b330();" (call_expression "FUN_0002b330()" (identifier "FUN_0002b330") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0" (pointer_expression "*(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c)" (* "*") (cast_expression "(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar11 + 4) + 0x2c)" (( "(") (binary_expression "*(int *)(iVar11 + 4) + 0x2c" (pointer_expression "*(int *)(iVar11 + 4)" (* "*") (cast_expression "(int *)(iVar11 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 4)" (( "(") (binary_expression "iVar11 + 4" (identifier "iVar11") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }\n        else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }" (if "if") (parenthesized_expression "(*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0)" (( "(") (binary_expression "*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0" (pointer_expression "*(int *)(*(int *)(iVar11 + 4) + 0x2c)" (* "*") (cast_expression "(int *)(*(int *)(iVar11 + 4) + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar11 + 4) + 0x2c)" (( "(") (binary_expression "*(int *)(iVar11 + 4) + 0x2c" (pointer_expression "*(int *)(iVar11 + 4)" (* "*") (cast_expression "(int *)(iVar11 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 4)" (( "(") (binary_expression "iVar11 + 4" (identifier "iVar11") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x2c")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar3 = FUN_0007cac0();\n          if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }\n          if (!bVar12) goto LAB_000851f0;\n        }" ({ "{") (expression_statement "iVar3 = FUN_0007cac0();" (assignment_expression "iVar3 = FUN_0007cac0()" (identifier "iVar3") (= "=") (call_expression "FUN_0007cac0()" (identifier "FUN_0007cac0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (*(char *)(iVar11 + 9) == '\0') {\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }\n          else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }" (if "if") (parenthesized_expression "(*(char *)(iVar11 + 9) == '\0')" (( "(") (binary_expression "*(char *)(iVar11 + 9) == '\0'" (pointer_expression "*(char *)(iVar11 + 9)" (* "*") (cast_expression "(char *)(iVar11 + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 9)" (( "(") (binary_expression "iVar11 + 9" (identifier "iVar11") (+ "+") (number_literal "9")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            bVar12 = iVar3 == 0 || iVar3 == 0x65;\n          }" ({ "{") (expression_statement "bVar12 = iVar3 == 0 || iVar3 == 0x65;" (assignment_expression "bVar12 = iVar3 == 0 || iVar3 == 0x65" (identifier "bVar12") (= "=") (binary_expression "iVar3 == 0 || iVar3 == 0x65" (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) (|| "||") (binary_expression "iVar3 == 0x65" (identifier "iVar3") (== "==") (number_literal "0x65")))) (; ";")) (} "}")) (else_clause "else {\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }" (else "else") (compound_statement "{\n            iVar7 = *(int *)(iVar11 + 0xc) + -1;\n            *(int *)(iVar11 + 0xc) = iVar7;\n            bVar12 = iVar3 == 0x65 || iVar3 == 0;\n            if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }\n          }" ({ "{") (expression_statement "iVar7 = *(int *)(iVar11 + 0xc) + -1;" (assignment_expression "iVar7 = *(int *)(iVar11 + 0xc) + -1" (identifier "iVar7") (= "=") (binary_expression "*(int *)(iVar11 + 0xc) + -1" (pointer_expression "*(int *)(iVar11 + 0xc)" (* "*") (cast_expression "(int *)(iVar11 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0xc)" (( "(") (binary_expression "iVar11 + 0xc" (identifier "iVar11") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(int *)(iVar11 + 0xc) = iVar7;" (assignment_expression "*(int *)(iVar11 + 0xc) = iVar7" (pointer_expression "*(int *)(iVar11 + 0xc)" (* "*") (cast_expression "(int *)(iVar11 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0xc)" (( "(") (binary_expression "iVar11 + 0xc" (identifier "iVar11") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "bVar12 = iVar3 == 0x65 || iVar3 == 0;" (assignment_expression "bVar12 = iVar3 == 0x65 || iVar3 == 0" (identifier "bVar12") (= "=") (binary_expression "iVar3 == 0x65 || iVar3 == 0" (binary_expression "iVar3 == 0x65" (identifier "iVar3") (== "==") (number_literal "0x65")) (|| "||") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")))) (; ";")) (if_statement "if (iVar7 == 0) {\n              FUN_0002b3c0();\n            }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_0002b3c0();\n            }" ({ "{") (expression_statement "FUN_0002b3c0();" (call_expression "FUN_0002b3c0()" (identifier "FUN_0002b3c0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (!bVar12) goto LAB_000851f0;" (if "if") (parenthesized_expression "(!bVar12)" (( "(") (unary_expression "!bVar12" (! "!") (identifier "bVar12")) () ")")) (goto_statement "goto LAB_000851f0;" (goto "goto") (statement_identifier "LAB_000851f0") (; ";"))) (} "}")) (else_clause "else if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }" (else "else") (if_statement "if (*(char *)(iVar11 + 9) != '\0') {\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }" (if "if") (parenthesized_expression "(*(char *)(iVar11 + 9) != '\0')" (( "(") (binary_expression "*(char *)(iVar11 + 9) != '\0'" (pointer_expression "*(char *)(iVar11 + 9)" (* "*") (cast_expression "(char *)(iVar11 + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 9)" (( "(") (binary_expression "iVar11 + 9" (identifier "iVar11") (+ "+") (number_literal "9")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          piVar8 = (int *)(iVar11 + 0xc);\n          *piVar8 = *piVar8 + -1;\n          if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }\n        }" ({ "{") (expression_statement "piVar8 = (int *)(iVar11 + 0xc);" (assignment_expression "piVar8 = (int *)(iVar11 + 0xc)" (identifier "piVar8") (= "=") (cast_expression "(int *)(iVar11 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0xc)" (( "(") (binary_expression "iVar11 + 0xc" (identifier "iVar11") (+ "+") (number_literal "0xc")) () ")")))) (; ";")) (expression_statement "*piVar8 = *piVar8 + -1;" (assignment_expression "*piVar8 = *piVar8 + -1" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (binary_expression "*piVar8 + -1" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (*piVar8 == 0) {\n            FUN_0002b3c0();\n          }" (if "if") (parenthesized_expression "(*piVar8 == 0)" (( "(") (binary_expression "*piVar8 == 0" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_0002b3c0();\n          }" ({ "{") (expression_statement "FUN_0002b3c0();" (call_expression "FUN_0002b3c0()" (identifier "FUN_0002b3c0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))))) (expression_statement "local_3c = 1;" (assignment_expression "local_3c = 1" (identifier "local_3c") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_0007d3e0();" (assignment_expression "iVar3 = FUN_0007d3e0()" (identifier "iVar3") (= "=") (call_expression "FUN_0007d3e0()" (identifier "FUN_0007d3e0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (*param_1 != 0) {\n          FUN_00039e00();\n        }\n        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }\n      }" ({ "{") (if_statement "if (*param_1 != 0) {\n          FUN_00039e00();\n        }" (if "if") (parenthesized_expression "(*param_1 != 0)" (( "(") (binary_expression "*param_1 != 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_00039e00();\n        }" ({ "{") (expression_statement "FUN_00039e00();" (call_expression "FUN_00039e00()" (identifier "FUN_00039e00") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }" (if "if") (parenthesized_expression "((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0))" (( "(") (binary_expression "(cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)" (parenthesized_expression "(cVar9 != '\x05')" (( "(") (binary_expression "cVar9 != '\x05'" (identifier "cVar9") (!= "!=") (char_literal "'\x05'" (' "'") (escape_sequence "\x05") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(iVar3 = FUN_0007d450(), iVar3 == 0)" (( "(") (comma_expression "iVar3 = FUN_0007d450(), iVar3 == 0" (assignment_expression "iVar3 = FUN_0007d450()" (identifier "iVar3") (= "=") (call_expression "FUN_0007d450()" (identifier "FUN_0007d450") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n          if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }\n          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);\n          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);\n          if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }\n          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;\n          piVar8 = *(int **)(local_34 + 0x3c);\n          uVar5 = *(uint *)(local_34 + 0x18);\n          do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);\n        }" ({ "{") (if_statement "if ((int)local_48 <= (int)local_50) {\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }" (if "if") (parenthesized_expression "((int)local_48 <= (int)local_50)" (( "(") (binary_expression "(int)local_48 <= (int)local_50" (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48")) (<= "<=") (cast_expression "(int)local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_50"))) () ")")) (compound_statement "{\n            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;\n            iVar3 = FUN_000846f0();\n            goto LAB_000855f2;\n          }" ({ "{") (expression_statement "*(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;" (assignment_expression "*(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c" (pointer_expression "*(uint *)(local_34 + 0x18)" (* "*") (cast_expression "(uint *)(local_34 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_34 + 0x18)" (( "(") (binary_expression "local_34 + 0x18" (identifier "local_34") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "((int)local_50 / (int)local_48) * local_3c" (parenthesized_expression "((int)local_50 / (int)local_48)" (( "(") (binary_expression "(int)local_50 / (int)local_48" (cast_expression "(int)local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_50")) (/ "/") (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48"))) () ")")) (* "*") (identifier "local_3c"))) (; ";")) (expression_statement "iVar3 = FUN_000846f0();" (assignment_expression "iVar3 = FUN_000846f0()" (identifier "iVar3") (= "=") (call_expression "FUN_000846f0()" (identifier "FUN_000846f0") (argument_list "()" (( "(") () ")")))) (; ";")) (goto_statement "goto LAB_000855f2;" (goto "goto") (statement_identifier "LAB_000855f2") (; ";")) (} "}"))) (expression_statement "uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50);" (assignment_expression "uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50)" (identifier "uVar4") (= "=") (binary_expression "(int)((local_3c - 1) + (int)local_48 / (int)local_50) /\n                  ((int)local_48 / (int)local_50)" (cast_expression "(int)((local_3c - 1) + (int)local_48 / (int)local_50)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((local_3c - 1) + (int)local_48 / (int)local_50)" (( "(") (binary_expression "(local_3c - 1) + (int)local_48 / (int)local_50" (parenthesized_expression "(local_3c - 1)" (( "(") (binary_expression "local_3c - 1" (identifier "local_3c") (- "-") (number_literal "1")) () ")")) (+ "+") (binary_expression "(int)local_48 / (int)local_50" (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48")) (/ "/") (cast_expression "(int)local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_50")))) () ")"))) (/ "/") (parenthesized_expression "((int)local_48 / (int)local_50)" (( "(") (binary_expression "(int)local_48 / (int)local_50" (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48")) (/ "/") (cast_expression "(int)local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_50"))) () ")")))) (; ";")) (expression_statement "uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);" (assignment_expression "uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)" (identifier "uVar5") (= "=") (binary_expression "*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)" (pointer_expression "*(uint *)(unaff_EBP + 0xc420e)" (* "*") (cast_expression "(uint *)(unaff_EBP + 0xc420e)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0xc420e)" (( "(") (binary_expression "unaff_EBP + 0xc420e" (identifier "unaff_EBP") (+ "+") (number_literal "0xc420e")) () ")")))) (/ "/") (pointer_expression "*(uint *)(*(int *)(param_1[1] + 4) + 0x20)" (* "*") (cast_expression "(uint *)(*(int *)(param_1[1] + 4) + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1[1] + 4) + 0x20)" (( "(") (binary_expression "*(int *)(param_1[1] + 4) + 0x20" (pointer_expression "*(int *)(param_1[1] + 4)" (* "*") (cast_expression "(int *)(param_1[1] + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + 4)" (( "(") (binary_expression "param_1[1] + 4" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x20")) () ")")))))) (; ";")) (if_statement "if (uVar5 + 1 == uVar4) {\n            uVar4 = uVar5;\n          }" (if "if") (parenthesized_expression "(uVar5 + 1 == uVar4)" (( "(") (binary_expression "uVar5 + 1 == uVar4" (binary_expression "uVar5 + 1" (identifier "uVar5") (+ "+") (number_literal "1")) (== "==") (identifier "uVar4")) () ")")) (compound_statement "{\n            uVar4 = uVar5;\n          }" ({ "{") (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" (identifier "uVar4") (= "=") (identifier "uVar5")) (; ";")) (} "}"))) (expression_statement "lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;" (assignment_expression "lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50" (identifier "lVar1") (= "=") (binary_expression "(longlong)(int)local_3c * (longlong)(int)local_50" (cast_expression "(longlong)(int)local_3c" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c"))) (* "*") (cast_expression "(longlong)(int)local_50" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (cast_expression "(int)local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_50"))))) (; ";")) (expression_statement "piVar8 = *(int **)(local_34 + 0x3c);" (assignment_expression "piVar8 = *(int **)(local_34 + 0x3c)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(local_34 + 0x3c)" (* "*") (cast_expression "(int **)(local_34 + 0x3c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_34 + 0x3c)" (( "(") (binary_expression "local_34 + 0x3c" (identifier "local_34") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "uVar5 = *(uint *)(local_34 + 0x18);" (assignment_expression "uVar5 = *(uint *)(local_34 + 0x18)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(local_34 + 0x18)" (* "*") (cast_expression "(uint *)(local_34 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_34 + 0x18)" (( "(") (binary_expression "local_34 + 0x18" (identifier "local_34") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (do_statement "do {\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          } while (iVar3 == 0);" (do "do") (compound_statement "{\n            if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }\n            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);\n            if (iVar3 != 0) break;\n            iVar3 = FUN_00079770();\n            if (local_2c != 0) {\n              FUN_0001b1a0();\n            }\n            uVar4 = uVar4 + 1;\n          }" ({ "{") (if_statement "if ((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }" (if "if") (parenthesized_expression "((uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4))))" (( "(") (binary_expression "(uVar5 < uVar4) ||\n               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))" (parenthesized_expression "(uVar5 < uVar4)" (( "(") (binary_expression "uVar5 < uVar4" (identifier "uVar5") (< "<") (identifier "uVar4")) () ")")) (|| "||") (parenthesized_expression "((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))" (( "(") (parenthesized_expression "(uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4))" (( "(") (comma_expression "uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)\n                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)" (assignment_expression "uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)" (identifier "uVar6") (= "=") (binary_expression "*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)" (pointer_expression "*(uint *)(unaff_EBP + 0xc420e)" (* "*") (cast_expression "(uint *)(unaff_EBP + 0xc420e)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0xc420e)" (( "(") (binary_expression "unaff_EBP + 0xc420e" (identifier "unaff_EBP") (+ "+") (number_literal "0xc420e")) () ")")))) (/ "/") (pointer_expression "*(uint *)(*(int *)(param_1[1] + 4) + 0x20)" (* "*") (cast_expression "(uint *)(*(int *)(param_1[1] + 4) + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1[1] + 4) + 0x20)" (( "(") (binary_expression "*(int *)(param_1[1] + 4) + 0x20" (pointer_expression "*(int *)(param_1[1] + 4)" (* "*") (cast_expression "(int *)(param_1[1] + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + 4)" (( "(") (binary_expression "param_1[1] + 4" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x20")) () ")")))))) (, ",") (binary_expression "uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)" (binary_expression "uVar6 + 1 == uVar4" (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1")) (== "==") (identifier "uVar4")) (&& "&&") (parenthesized_expression "(uVar4 = uVar6 + 2, uVar5 < uVar4)" (( "(") (comma_expression "uVar4 = uVar6 + 2, uVar5 < uVar4" (assignment_expression "uVar4 = uVar6 + 2" (identifier "uVar4") (= "=") (binary_expression "uVar6 + 2" (identifier "uVar6") (+ "+") (number_literal "2"))) (, ",") (binary_expression "uVar5 < uVar4" (identifier "uVar5") (< "<") (identifier "uVar4"))) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n              iVar3 = FUN_000846f0();\n              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);\n              local_3c = (uint)lVar1;\n              local_38 = (int)((ulonglong)lVar1 >> 0x20);\n              iVar11 = local_38 - ((int)local_48 >> 0x1f);\n              lVar2 = (longlong)(int)local_48;\n              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }\n              iVar7 = (int)((ulonglong)lVar2 >> 0x20);\n              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;\n              iVar11 = (int)uVar4 >> 0x1f;\n              if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;\n              goto LAB_00085660;\n            }" ({ "{") (expression_statement "iVar3 = FUN_000846f0();" (assignment_expression "iVar3 = FUN_000846f0()" (identifier "iVar3") (= "=") (call_expression "FUN_000846f0()" (identifier "FUN_000846f0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);" (assignment_expression "local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e)" (identifier "local_48") (= "=") (binary_expression "local_48 + *(int *)(unaff_EBP + 0xc420e)" (identifier "local_48") (+ "+") (pointer_expression "*(int *)(unaff_EBP + 0xc420e)" (* "*") (cast_expression "(int *)(unaff_EBP + 0xc420e)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0xc420e)" (( "(") (binary_expression "unaff_EBP + 0xc420e" (identifier "unaff_EBP") (+ "+") (number_literal "0xc420e")) () ")")))))) (; ";")) (expression_statement "local_3c = (uint)lVar1;" (assignment_expression "local_3c = (uint)lVar1" (identifier "local_3c") (= "=") (cast_expression "(uint)lVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar1"))) (; ";")) (expression_statement "local_38 = (int)((ulonglong)lVar1 >> 0x20);" (assignment_expression "local_38 = (int)((ulonglong)lVar1 >> 0x20)" (identifier "local_38") (= "=") (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar1")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "iVar11 = local_38 - ((int)local_48 >> 0x1f);" (assignment_expression "iVar11 = local_38 - ((int)local_48 >> 0x1f)" (identifier "iVar11") (= "=") (binary_expression "local_38 - ((int)local_48 >> 0x1f)" (identifier "local_38") (- "-") (parenthesized_expression "((int)local_48 >> 0x1f)" (( "(") (binary_expression "(int)local_48 >> 0x1f" (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48")) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "lVar2 = (longlong)(int)local_48;" (assignment_expression "lVar2 = (longlong)(int)local_48" (identifier "lVar2") (= "=") (cast_expression "(longlong)(int)local_48" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48")))) (; ";")) (if_statement "if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {\n                lVar2 = lVar1;\n              }" (if "if") (parenthesized_expression "((SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0)" (( "(") (binary_expression "(SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=\n                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0" (parenthesized_expression "(SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48)))" (( "(") (binary_expression "SBORROW4(local_38,(int)local_48 >> 0x1f) !=\n                  SBORROW4(iVar11,(uint)(local_3c < local_48))" (call_expression "SBORROW4(local_38,(int)local_48 >> 0x1f)" (identifier "SBORROW4") (argument_list "(local_38,(int)local_48 >> 0x1f)" (( "(") (identifier "local_38") (, ",") (binary_expression "(int)local_48 >> 0x1f" (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48")) (>> ">>") (number_literal "0x1f")) () ")"))) (!= "!=") (call_expression "SBORROW4(iVar11,(uint)(local_3c < local_48))" (identifier "SBORROW4") (argument_list "(iVar11,(uint)(local_3c < local_48))" (( "(") (identifier "iVar11") (, ",") (call_expression "(uint)(local_3c < local_48)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_3c < local_48)" (( "(") (binary_expression "local_3c < local_48" (identifier "local_3c") (< "<") (identifier "local_48")) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)(iVar11 - (uint)(local_3c < local_48)) < 0" (cast_expression "(int)(iVar11 - (uint)(local_3c < local_48))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar11 - (uint)(local_3c < local_48))" (( "(") (binary_expression "iVar11 - (uint)(local_3c < local_48)" (identifier "iVar11") (- "-") (call_expression "(uint)(local_3c < local_48)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_3c < local_48)" (( "(") (binary_expression "local_3c < local_48" (identifier "local_3c") (< "<") (identifier "local_48")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n                lVar2 = lVar1;\n              }" ({ "{") (expression_statement "lVar2 = lVar1;" (assignment_expression "lVar2 = lVar1" (identifier "lVar2") (= "=") (identifier "lVar1")) (; ";")) (} "}"))) (expression_statement "iVar7 = (int)((ulonglong)lVar2 >> 0x20);" (assignment_expression "iVar7 = (int)((ulonglong)lVar2 >> 0x20)" (identifier "iVar7") (= "=") (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")) () ")")))) (; ";")) (expression_statement "uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;" (assignment_expression "uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50" (identifier "uVar4") (= "=") (binary_expression "*(int *)(unaff_EBP + 0xc420e) + local_50" (pointer_expression "*(int *)(unaff_EBP + 0xc420e)" (* "*") (cast_expression "(int *)(unaff_EBP + 0xc420e)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0xc420e)" (( "(") (binary_expression "unaff_EBP + 0xc420e" (identifier "unaff_EBP") (+ "+") (number_literal "0xc420e")) () ")")))) (+ "+") (identifier "local_50"))) (; ";")) (expression_statement "iVar11 = (int)uVar4 >> 0x1f;" (assignment_expression "iVar11 = (int)uVar4 >> 0x1f" (identifier "iVar11") (= "=") (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "0x1f"))) (; ";")) (if_statement "if ((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;" (if "if") (parenthesized_expression "((iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0))" (( "(") (binary_expression "(iVar3 != 0) ||\n                 (uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)" (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0)" (( "(") (comma_expression "uVar5 = (uint)(uVar4 < (uint)lVar2),\n                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0" (assignment_expression "uVar5 = (uint)(uVar4 < (uint)lVar2)" (identifier "uVar5") (= "=") (call_expression "(uint)(uVar4 < (uint)lVar2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar4 < (uint)lVar2)" (( "(") (binary_expression "uVar4 < (uint)lVar2" (identifier "uVar4") (< "<") (cast_expression "(uint)lVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar2"))) () ")")))) (, ",") (binary_expression "(SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n                 (int)((iVar11 - iVar7) - uVar5) < 0" (parenthesized_expression "(SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5))" (( "(") (binary_expression "SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)" (call_expression "SBORROW4(iVar11,iVar7)" (identifier "SBORROW4") (argument_list "(iVar11,iVar7)" (( "(") (identifier "iVar11") (, ",") (identifier "iVar7") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar11 - iVar7,uVar5)" (identifier "SBORROW4") (argument_list "(iVar11 - iVar7,uVar5)" (( "(") (binary_expression "iVar11 - iVar7" (identifier "iVar11") (- "-") (identifier "iVar7")) (, ",") (identifier "uVar5") () ")")))) () ")")) (== "==") (binary_expression "(int)((iVar11 - iVar7) - uVar5) < 0" (cast_expression "(int)((iVar11 - iVar7) - uVar5)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((iVar11 - iVar7) - uVar5)" (( "(") (binary_expression "(iVar11 - iVar7) - uVar5" (parenthesized_expression "(iVar11 - iVar7)" (( "(") (binary_expression "iVar11 - iVar7" (identifier "iVar11") (- "-") (identifier "iVar7")) () ")")) (- "-") (identifier "uVar5")) () ")"))) (< "<") (number_literal "0")))) () ")"))) () ")")) (goto_statement "goto LAB_000853a0;" (goto "goto") (statement_identifier "LAB_000853a0") (; ";"))) (goto_statement "goto LAB_00085660;" (goto "goto") (statement_identifier "LAB_00085660") (; ";")) (} "}"))) (expression_statement "iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);" (assignment_expression "iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0)" (parenthesized_expression "(**(code **)(local_34 + 200))" (( "(") (pointer_expression "**(code **)(local_34 + 200)" (* "*") (pointer_expression "*(code **)(local_34 + 200)" (* "*") (cast_expression "(code **)(local_34 + 200)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_34 + 200)" (( "(") (binary_expression "local_34 + 200" (identifier "local_34") (+ "+") (number_literal "200")) () ")"))))) () ")")) (argument_list "(local_34,uVar4,&local_2c,0)" (( "(") (identifier "local_34") (, ",") (identifier "uVar4") (, ",") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar3 != 0) break;" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar3 = FUN_00079770();" (assignment_expression "iVar3 = FUN_00079770()" (identifier "iVar3") (= "=") (call_expression "FUN_00079770()" (identifier "FUN_00079770") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (local_2c != 0) {\n              FUN_0001b1a0();\n            }" (if "if") (parenthesized_expression "(local_2c != 0)" (( "(") (binary_expression "local_2c != 0" (identifier "local_2c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_0001b1a0();\n            }" ({ "{") (expression_statement "FUN_0001b1a0();" (call_expression "FUN_0001b1a0()" (identifier "FUN_0001b1a0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_000851f0;" (goto "goto") (statement_identifier "LAB_000851f0") (; ";")) (} "}")))) (expression_statement "iVar11 = param_1[6];" (assignment_expression "iVar11 = param_1[6]" (identifier "iVar11") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "piVar8 = *(int **)(iVar7 + 4);" (assignment_expression "piVar8 = *(int **)(iVar7 + 4)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(iVar7 + 4)" (* "*") (cast_expression "(int **)(iVar7 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar7 + 4)" (( "(") (binary_expression "iVar7 + 4" (identifier "iVar7") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "piVar10 = *(int **)(iVar11 + 4);" (assignment_expression "piVar10 = *(int **)(iVar11 + 4)" (identifier "piVar10") (= "=") (pointer_expression "*(int **)(iVar11 + 4)" (* "*") (cast_expression "(int **)(iVar11 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar11 + 4)" (( "(") (binary_expression "iVar11 + 4" (identifier "iVar11") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar3 = *piVar8;" (assignment_expression "iVar3 = *piVar8" (identifier "iVar3") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (labeled_statement "LAB_0008518c:\n    local_50 = piVar10[8];" (statement_identifier "LAB_0008518c") (: ":") (expression_statement "local_50 = piVar10[8];" (assignment_expression "local_50 = piVar10[8]" (identifier "local_50") (= "=") (subscript_expression "piVar10[8]" (identifier "piVar10") ([ "[") (number_literal "8") (] "]"))) (; ";"))) (expression_statement "local_48 = piVar8[8];" (assignment_expression "local_48 = piVar8[8]" (identifier "local_48") (= "=") (subscript_expression "piVar8[8]" (identifier "piVar8") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "cVar9 = *(char *)(iVar3 + 5);" (assignment_expression "cVar9 = *(char *)(iVar3 + 5)" (identifier "cVar9") (= "=") (pointer_expression "*(char *)(iVar3 + 5)" (* "*") (cast_expression "(char *)(iVar3 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 5)" (( "(") (binary_expression "iVar3 + 5" (identifier "iVar3") (+ "+") (number_literal "5")) () ")"))))) (; ";")) (expression_statement "local_3c = piVar10[0xb];" (assignment_expression "local_3c = piVar10[0xb]" (identifier "local_3c") (= "=") (subscript_expression "piVar10[0xb]" (identifier "piVar10") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (if_statement "if ((cVar9 != '\x05') || (local_48 == local_50)) {\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }" (if "if") (parenthesized_expression "((cVar9 != '\x05') || (local_48 == local_50))" (( "(") (binary_expression "(cVar9 != '\x05') || (local_48 == local_50)" (parenthesized_expression "(cVar9 != '\x05')" (( "(") (binary_expression "cVar9 != '\x05'" (identifier "cVar9") (!= "!=") (char_literal "'\x05'" (' "'") (escape_sequence "\x05") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(local_48 == local_50)" (( "(") (binary_expression "local_48 == local_50" (identifier "local_48") (== "==") (identifier "local_50")) () ")"))) () ")")) (compound_statement "{\n      if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }\n      param_1[9] = local_3c;\n      param_1[8] = (local_3c - uVar4) + 1;\n      if (local_3c < uVar4) goto LAB_00085077;\n      if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }\n      iVar3 = 0;\n      goto joined_r0x0008561f;\n    }" ({ "{") (if_statement "if (param_2 == 0) {\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }\n      else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0008551a:\n        uVar4 = param_1[4];\n      }" ({ "{") (labeled_statement "LAB_0008551a:\n        uVar4 = param_1[4];" (statement_identifier "LAB_0008551a") (: ":") (expression_statement "uVar4 = param_1[4];" (assignment_expression "uVar4 = param_1[4]" (identifier "uVar4") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";"))) (} "}")) (else_clause "else {\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }" (else "else") (compound_statement "{\n        uVar4 = param_1[4];\n        if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }\n      }" ({ "{") (expression_statement "uVar4 = param_1[4];" (assignment_expression "uVar4 = param_1[4]" (identifier "uVar4") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (uVar4 <= local_3c) {\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }" (if "if") (parenthesized_expression "(uVar4 <= local_3c)" (( "(") (binary_expression "uVar4 <= local_3c" (identifier "uVar4") (<= "<=") (identifier "local_3c")) () ")")) (compound_statement "{\n          iVar7 = 0;\n          while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }\n          if (iVar3 == 0) goto LAB_0008551a;\n          goto LAB_0008506e;\n        }" ({ "{") (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (while_statement "while( true ) {\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            iVar3 = 0;\n            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }\n            iVar7 = iVar7 + 1;\n            uVar4 = param_1[4] + 1;\n            param_1[4] = uVar4;\n            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;\n            if (iVar3 != 0) goto LAB_0008506e;\n            iVar11 = param_1[6];\n          }" ({ "{") (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (if_statement "if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001b1a0();\n            }" (if "if") (parenthesized_expression "(((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0))" (( "(") (binary_expression "((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&\n               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)" (parenthesized_expression "((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0))" (( "(") (binary_expression "(*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4) &&\n                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)" (parenthesized_expression "(*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4)" (( "(") (binary_expression "*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=\n                  uVar4" (binary_expression "*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1" (binary_expression "*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20)" (pointer_expression "*(uint *)(unaff_EBP + 0xc420e)" (* "*") (cast_expression "(uint *)(unaff_EBP + 0xc420e)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0xc420e)" (( "(") (binary_expression "unaff_EBP + 0xc420e" (identifier "unaff_EBP") (+ "+") (number_literal "0xc420e")) () ")")))) (/ "/") (pointer_expression "*(uint *)(*(int *)(iVar11 + 4) + 0x20)" (* "*") (cast_expression "(uint *)(*(int *)(iVar11 + 4) + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar11 + 4) + 0x20)" (( "(") (binary_expression "*(int *)(iVar11 + 4) + 0x20" (pointer_expression "*(int *)(iVar11 + 4)" (* "*") (cast_expression "(int *)(iVar11 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 4)" (( "(") (binary_expression "iVar11 + 4" (identifier "iVar11") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x20")) () ")"))))) (+ "+") (number_literal "1")) (!= "!=") (identifier "uVar4")) () ")")) (&& "&&") (parenthesized_expression "(iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)" (( "(") (comma_expression "iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0" (assignment_expression "iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2)" (parenthesized_expression "(**(code **)(local_5c + 200))" (( "(") (pointer_expression "**(code **)(local_5c + 200)" (* "*") (pointer_expression "*(code **)(local_5c + 200)" (* "*") (cast_expression "(code **)(local_5c + 200)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_5c + 200)" (( "(") (binary_expression "local_5c + 200" (identifier "local_5c") (+ "+") (number_literal "200")) () ")"))))) () ")")) (argument_list "(local_5c,uVar4,&local_2c,2)" (( "(") (identifier "local_5c") (, ",") (identifier "uVar4") (, ",") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) (, ",") (number_literal "2") () ")")))) (, ",") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)" (( "(") (comma_expression "iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0" (assignment_expression "iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0)" (identifier "iVar3") (= "=") (call_expression "FUN_000797c0(*(undefined4 *)(local_2c + 4),0)" (identifier "FUN_000797c0") (argument_list "(*(undefined4 *)(local_2c + 4),0)" (( "(") (pointer_expression "*(undefined4 *)(local_2c + 4)" (* "*") (cast_expression "(undefined4 *)(local_2c + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 4)" (( "(") (binary_expression "local_2c + 4" (identifier "local_2c") (+ "+") (number_literal "4")) () ")")))) (, ",") (number_literal "0") () ")")))) (, ",") (binary_expression "local_2c != 0" (identifier "local_2c") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n              FUN_0001b1a0();\n            }" ({ "{") (expression_statement "FUN_0001b1a0();" (call_expression "FUN_0001b1a0()" (identifier "FUN_0001b1a0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar4 = param_1[4] + 1;" (assignment_expression "uVar4 = param_1[4] + 1" (identifier "uVar4") (= "=") (binary_expression "param_1[4] + 1" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1[4] = uVar4;" (assignment_expression "param_1[4] = uVar4" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (if_statement "if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;" (if "if") (parenthesized_expression "(((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4))" (( "(") (binary_expression "((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)" (parenthesized_expression "((param_2 <= iVar7) && (-1 < param_2))" (( "(") (binary_expression "(param_2 <= iVar7) && (-1 < param_2)" (parenthesized_expression "(param_2 <= iVar7)" (( "(") (binary_expression "param_2 <= iVar7" (identifier "param_2") (<= "<=") (identifier "iVar7")) () ")")) (&& "&&") (parenthesized_expression "(-1 < param_2)" (( "(") (binary_expression "-1 < param_2" (number_literal "-1") (< "<") (identifier "param_2")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(local_3c < uVar4)" (( "(") (binary_expression "local_3c < uVar4" (identifier "local_3c") (< "<") (identifier "uVar4")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (iVar3 != 0) goto LAB_0008506e;" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0008506e;" (goto "goto") (statement_identifier "LAB_0008506e") (; ";"))) (expression_statement "iVar11 = param_1[6];" (assignment_expression "iVar11 = param_1[6]" (identifier "iVar11") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (} "}"))) (if_statement "if (iVar3 == 0) goto LAB_0008551a;" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0008551a;" (goto "goto") (statement_identifier "LAB_0008551a") (; ";"))) (goto_statement "goto LAB_0008506e;" (goto "goto") (statement_identifier "LAB_0008506e") (; ";")) (} "}"))) (} "}")))) (expression_statement "param_1[9] = local_3c;" (assignment_expression "param_1[9] = local_3c" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "local_3c")) (; ";")) (expression_statement "param_1[8] = (local_3c - uVar4) + 1;" (assignment_expression "param_1[8] = (local_3c - uVar4) + 1" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (binary_expression "(local_3c - uVar4) + 1" (parenthesized_expression "(local_3c - uVar4)" (( "(") (binary_expression "local_3c - uVar4" (identifier "local_3c") (- "-") (identifier "uVar4")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_3c < uVar4) goto LAB_00085077;" (if "if") (parenthesized_expression "(local_3c < uVar4)" (( "(") (binary_expression "local_3c < uVar4" (identifier "local_3c") (< "<") (identifier "uVar4")) () ")")) (goto_statement "goto LAB_00085077;" (goto "goto") (statement_identifier "LAB_00085077") (; ";"))) (if_statement "if (param_1[10] == 0) {\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }" (if "if") (parenthesized_expression "(param_1[10] == 0)" (( "(") (binary_expression "param_1[10] == 0" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar3 = **(int **)(param_1[6] + 4);\n        param_1[0xb] = *(int *)(iVar3 + 0x58);\n        *(int **)(iVar3 + 0x58) = param_1;\n        param_1[10] = 1;\n      }" ({ "{") (expression_statement "iVar3 = **(int **)(param_1[6] + 4);" (assignment_expression "iVar3 = **(int **)(param_1[6] + 4)" (identifier "iVar3") (= "=") (pointer_expression "**(int **)(param_1[6] + 4)" (* "*") (pointer_expression "*(int **)(param_1[6] + 4)" (* "*") (cast_expression "(int **)(param_1[6] + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1[6] + 4)" (( "(") (binary_expression "param_1[6] + 4" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (+ "+") (number_literal "4")) () ")")))))) (; ";")) (expression_statement "param_1[0xb] = *(int *)(iVar3 + 0x58);" (assignment_expression "param_1[0xb] = *(int *)(iVar3 + 0x58)" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (pointer_expression "*(int *)(iVar3 + 0x58)" (* "*") (cast_expression "(int *)(iVar3 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x58)" (( "(") (binary_expression "iVar3 + 0x58" (identifier "iVar3") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "*(int **)(iVar3 + 0x58) = param_1;" (assignment_expression "*(int **)(iVar3 + 0x58) = param_1" (pointer_expression "*(int **)(iVar3 + 0x58)" (* "*") (cast_expression "(int **)(iVar3 + 0x58)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0x58)" (( "(") (binary_expression "iVar3 + 0x58" (identifier "iVar3") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "param_1[10] = 1;" (assignment_expression "param_1[10] = 1" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto joined_r0x0008561f;" (goto "goto") (statement_identifier "joined_r0x0008561f") (; ";")) (} "}"))) (if_statement "if (param_2 == 0) {\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar3 = 8;\n      if (local_4c == 0) goto LAB_0008522b;\n      goto LAB_000851fb;\n    }" ({ "{") (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" (identifier "iVar3") (= "=") (number_literal "8")) (; ";")) (if_statement "if (local_4c == 0) goto LAB_0008522b;" (if "if") (parenthesized_expression "(local_4c == 0)" (( "(") (binary_expression "local_4c == 0" (identifier "local_4c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0008522b;" (goto "goto") (statement_identifier "LAB_0008522b") (; ";"))) (goto_statement "goto LAB_000851fb;" (goto "goto") (statement_identifier "LAB_000851fb") (; ";")) (} "}"))) (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" (identifier "iVar3") (= "=") (number_literal "8")) (; ";")) (if_statement "if (local_3c < (uint)param_1[4]) {\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }" (if "if") (parenthesized_expression "(local_3c < (uint)param_1[4])" (( "(") (binary_expression "local_3c < (uint)param_1[4]" (identifier "local_3c") (< "<") (cast_expression "(uint)param_1[4]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")))) () ")")) (compound_statement "{\n      iVar3 = 8;\n      goto LAB_000851f0;\n    }" ({ "{") (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" (identifier "iVar3") (= "=") (number_literal "8")) (; ";")) (goto_statement "goto LAB_000851f0;" (goto "goto") (statement_identifier "LAB_000851f0") (; ";")) (} "}"))) (if_statement "if (local_4c != 0) goto LAB_000851fb;" (if "if") (parenthesized_expression "(local_4c != 0)" (( "(") (binary_expression "local_4c != 0" (identifier "local_4c") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000851fb;" (goto "goto") (statement_identifier "LAB_000851fb") (; ";"))) (goto_statement "goto LAB_0008522b;" (goto "goto") (statement_identifier "LAB_0008522b") (; ";")) (} "}"))) (expression_statement "FUN_000197c0(*(undefined4 *)(*param_1 + 0xc));" (call_expression "FUN_000197c0(*(undefined4 *)(*param_1 + 0xc))" (identifier "FUN_000197c0") (argument_list "(*(undefined4 *)(*param_1 + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(*param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(*param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0xc)" (( "(") (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar3 = param_1[7];" (assignment_expression "iVar3 = param_1[7]" (identifier "iVar3") (= "=") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if ((iVar3 - 5U < 2) || (iVar3 == 0)) {\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    iVar7 = *piVar8;\n    local_34 = iVar7;\n    if ((*param_1 != 0) && ((char)piVar10[5] == '\x02')) {\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }\n    if (*(char *)(iVar11 + 8) == '\0') goto LAB_000852b9;\nLAB_00084fef:\n    local_4c = param_1[3];\n    if (local_4c == 0) {\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }\n    local_4c = 0;\n    iVar3 = local_34;\n    goto LAB_0008518c;\n  }" (if "if") (parenthesized_expression "((iVar3 - 5U < 2) || (iVar3 == 0))" (( "(") (binary_expression "(iVar3 - 5U < 2) || (iVar3 == 0)" (parenthesized_expression "(iVar3 - 5U < 2)" (( "(") (binary_expression "iVar3 - 5U < 2" (binary_expression "iVar3 - 5U" (identifier "iVar3") (- "-") (number_literal "5U")) (< "<") (number_literal "2")) () ")")) (|| "||") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    iVar11 = param_1[6];\n    piVar10 = *(int **)(iVar11 + 4);\n    local_5c = *piVar10;\n    piVar8 = *(int **)(param_1[1] + 4);\n    iVar7 = *piVar8;\n    local_34 = iVar7;\n    if ((*param_1 != 0) && ((char)piVar10[5] == '\x02')) {\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }\n    if (*(char *)(iVar11 + 8) == '\0') goto LAB_000852b9;\nLAB_00084fef:\n    local_4c = param_1[3];\n    if (local_4c == 0) {\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }\n    local_4c = 0;\n    iVar3 = local_34;\n    goto LAB_0008518c;\n  }" ({ "{") (expression_statement "iVar11 = param_1[6];" (assignment_expression "iVar11 = param_1[6]" (identifier "iVar11") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "piVar10 = *(int **)(iVar11 + 4);" (assignment_expression "piVar10 = *(int **)(iVar11 + 4)" (identifier "piVar10") (= "=") (pointer_expression "*(int **)(iVar11 + 4)" (* "*") (cast_expression "(int **)(iVar11 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar11 + 4)" (( "(") (binary_expression "iVar11 + 4" (identifier "iVar11") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "local_5c = *piVar10;" (assignment_expression "local_5c = *piVar10" (identifier "local_5c") (= "=") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) (; ";")) (expression_statement "piVar8 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar8 = *(int **)(param_1[1] + 4)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(param_1[1] + 4)" (* "*") (cast_expression "(int **)(param_1[1] + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1[1] + 4)" (( "(") (binary_expression "param_1[1] + 4" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar7 = *piVar8;" (assignment_expression "iVar7 = *piVar8" (identifier "iVar7") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "local_34 = iVar7;" (assignment_expression "local_34 = iVar7" (identifier "local_34") (= "=") (identifier "iVar7")) (; ";")) (if_statement "if ((*param_1 != 0) && ((char)piVar10[5] == '\x02')) {\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }" (if "if") (parenthesized_expression "((*param_1 != 0) && ((char)piVar10[5] == '\x02'))" (( "(") (binary_expression "(*param_1 != 0) && ((char)piVar10[5] == '\x02')" (parenthesized_expression "(*param_1 != 0)" (( "(") (binary_expression "*param_1 != 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((char)piVar10[5] == '\x02')" (( "(") (binary_expression "(char)piVar10[5] == '\x02'" (cast_expression "(char)piVar10[5]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "piVar10[5]" (identifier "piVar10") ([ "[") (number_literal "5") (] "]"))) (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      local_4c = 0;\n      iVar3 = 5;\n      goto LAB_00085051;\n    }" ({ "{") (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" (identifier "local_4c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar3 = 5;" (assignment_expression "iVar3 = 5" (identifier "iVar3") (= "=") (number_literal "5")) (; ";")) (goto_statement "goto LAB_00085051;" (goto "goto") (statement_identifier "LAB_00085051") (; ";")) (} "}"))) (if_statement "if (*(char *)(iVar11 + 8) == '\0') goto LAB_000852b9;" (if "if") (parenthesized_expression "(*(char *)(iVar11 + 8) == '\0')" (( "(") (binary_expression "*(char *)(iVar11 + 8) == '\0'" (pointer_expression "*(char *)(iVar11 + 8)" (* "*") (cast_expression "(char *)(iVar11 + 8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 8)" (( "(") (binary_expression "iVar11 + 8" (identifier "iVar11") (+ "+") (number_literal "8")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_000852b9;" (goto "goto") (statement_identifier "LAB_000852b9") (; ";"))) (labeled_statement "LAB_00084fef:\n    local_4c = param_1[3];" (statement_identifier "LAB_00084fef") (: ":") (expression_statement "local_4c = param_1[3];" (assignment_expression "local_4c = param_1[3]" (identifier "local_4c") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";"))) (if_statement "if (local_4c == 0) {\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }" (if "if") (parenthesized_expression "(local_4c == 0)" (( "(") (binary_expression "local_4c == 0" (identifier "local_4c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00084ffe:\n      iVar3 = FUN_0003a660(0);\n      if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }\n      goto LAB_00085043;\n    }" ({ "{") (labeled_statement "LAB_00084ffe:\n      iVar3 = FUN_0003a660(0);" (statement_identifier "LAB_00084ffe") (: ":") (expression_statement "iVar3 = FUN_0003a660(0);" (assignment_expression "iVar3 = FUN_0003a660(0)" (identifier "iVar3") (= "=") (call_expression "FUN_0003a660(0)" (identifier "FUN_0003a660") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";"))) (if_statement "if (iVar3 != 7) {\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }" (if "if") (parenthesized_expression "(iVar3 != 7)" (( "(") (binary_expression "iVar3 != 7" (identifier "iVar3") (!= "!=") (number_literal "7")) () ")")) (compound_statement "{\n        iVar7 = param_1[1];\n        goto LAB_0008501f;\n      }" ({ "{") (expression_statement "iVar7 = param_1[1];" (assignment_expression "iVar7 = param_1[1]" (identifier "iVar7") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (goto_statement "goto LAB_0008501f;" (goto "goto") (statement_identifier "LAB_0008501f") (; ";")) (} "}"))) (goto_statement "goto LAB_00085043;" (goto "goto") (statement_identifier "LAB_00085043") (; ";")) (} "}"))) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" (identifier "local_4c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar3 = local_34;" (assignment_expression "iVar3 = local_34" (identifier "iVar3") (= "=") (identifier "local_34")) (; ";")) (goto_statement "goto LAB_0008518c;" (goto "goto") (statement_identifier "LAB_0008518c") (; ";")) (} "}"))) (goto_statement "goto LAB_0008522e;" (goto "goto") (statement_identifier "LAB_0008522e") (; ";")) (while_statement "while( true ) {\n    bVar12 = CARRY4(uVar4,local_50);\n    uVar4 = uVar4 + local_50;\n    iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12;\n    if ((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)) break;\nLAB_00085660:\n    local_2c = 0;\n    uVar14 = 0;\n    puVar13 = &local_2c;\n    iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f);\n    iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14);\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    bVar12 = CARRY4(uVar4,local_50);\n    uVar4 = uVar4 + local_50;\n    iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12;\n    if ((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)) break;\nLAB_00085660:\n    local_2c = 0;\n    uVar14 = 0;\n    puVar13 = &local_2c;\n    iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f);\n    iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14);\n    if (iVar3 == 0) {\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }\n  }" ({ "{") (expression_statement "bVar12 = CARRY4(uVar4,local_50);" (assignment_expression "bVar12 = CARRY4(uVar4,local_50)" (identifier "bVar12") (= "=") (call_expression "CARRY4(uVar4,local_50)" (identifier "CARRY4") (argument_list "(uVar4,local_50)" (( "(") (identifier "uVar4") (, ",") (identifier "local_50") () ")")))) (; ";")) (expression_statement "uVar4 = uVar4 + local_50;" (assignment_expression "uVar4 = uVar4 + local_50" (identifier "uVar4") (= "=") (binary_expression "uVar4 + local_50" (identifier "uVar4") (+ "+") (identifier "local_50"))) (; ";")) (expression_statement "iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12;" (assignment_expression "iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12" (identifier "iVar11") (= "=") (binary_expression "iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12" (binary_expression "iVar11 + ((int)local_50 >> 0x1f)" (identifier "iVar11") (+ "+") (parenthesized_expression "((int)local_50 >> 0x1f)" (( "(") (binary_expression "(int)local_50 >> 0x1f" (cast_expression "(int)local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_50")) (>> ">>") (number_literal "0x1f")) () ")"))) (+ "+") (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")))) (; ";")) (if_statement "if ((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)) break;" (if "if") (parenthesized_expression "((iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0))" (( "(") (binary_expression "(iVar3 != 0) ||\n       (uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)" (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0)" (( "(") (comma_expression "uVar5 = (uint)(uVar4 < (uint)lVar2),\n       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0" (assignment_expression "uVar5 = (uint)(uVar4 < (uint)lVar2)" (identifier "uVar5") (= "=") (call_expression "(uint)(uVar4 < (uint)lVar2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar4 < (uint)lVar2)" (( "(") (binary_expression "uVar4 < (uint)lVar2" (identifier "uVar4") (< "<") (cast_expression "(uint)lVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar2"))) () ")")))) (, ",") (binary_expression "(SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==\n       (int)((iVar11 - iVar7) - uVar5) < 0" (parenthesized_expression "(SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5))" (( "(") (binary_expression "SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)" (call_expression "SBORROW4(iVar11,iVar7)" (identifier "SBORROW4") (argument_list "(iVar11,iVar7)" (( "(") (identifier "iVar11") (, ",") (identifier "iVar7") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar11 - iVar7,uVar5)" (identifier "SBORROW4") (argument_list "(iVar11 - iVar7,uVar5)" (( "(") (binary_expression "iVar11 - iVar7" (identifier "iVar11") (- "-") (identifier "iVar7")) (, ",") (identifier "uVar5") () ")")))) () ")")) (== "==") (binary_expression "(int)((iVar11 - iVar7) - uVar5) < 0" (cast_expression "(int)((iVar11 - iVar7) - uVar5)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((iVar11 - iVar7) - uVar5)" (( "(") (binary_expression "(iVar11 - iVar7) - uVar5" (parenthesized_expression "(iVar11 - iVar7)" (( "(") (binary_expression "iVar11 - iVar7" (identifier "iVar11") (- "-") (identifier "iVar7")) () ")")) (- "-") (identifier "uVar5")) () ")"))) (< "<") (number_literal "0")))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00085660:\n    local_2c = 0;" (statement_identifier "LAB_00085660") (: ":") (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";"))) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" (identifier "uVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar13 = &local_2c;" (assignment_expression "puVar13 = &local_2c" (identifier "puVar13") (= "=") (pointer_expression "&local_2c" (& "&") (identifier "local_2c"))) (; ";")) (expression_statement "iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f);" (assignment_expression "iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f)" (identifier "iVar3") (= "=") (call_expression "FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f)" (identifier "FUN_000f41f0") (argument_list "(uVar4,iVar11,local_50,(int)local_50 >> 0x1f)" (( "(") (identifier "uVar4") (, ",") (identifier "iVar11") (, ",") (identifier "local_50") (, ",") (binary_expression "(int)local_50 >> 0x1f" (cast_expression "(int)local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_50")) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14);" (assignment_expression "iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14)" (parenthesized_expression "(**(code **)(local_5c + 200))" (( "(") (pointer_expression "**(code **)(local_5c + 200)" (* "*") (pointer_expression "*(code **)(local_5c + 200)" (* "*") (cast_expression "(code **)(local_5c + 200)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_5c + 200)" (( "(") (binary_expression "local_5c + 200" (identifier "local_5c") (+ "+") (number_literal "200")) () ")"))))) () ")")) (argument_list "(local_5c,iVar3 + 1,puVar13,uVar14)" (( "(") (identifier "local_5c") (, ",") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1")) (, ",") (identifier "puVar13") (, ",") (identifier "uVar14") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);\n      if (local_2c != 0) goto LAB_000856f0;\n    }" ({ "{") (expression_statement "iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);" (assignment_expression "iVar3 = (**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(*piVar8 + 0xc))\n                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11)" (parenthesized_expression "(**(code **)(*piVar8 + 0xc))" (( "(") (pointer_expression "**(code **)(*piVar8 + 0xc)" (* "*") (pointer_expression "*(code **)(*piVar8 + 0xc)" (* "*") (cast_expression "(code **)(*piVar8 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar8 + 0xc)" (( "(") (binary_expression "*piVar8 + 0xc" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11)" (( "(") (identifier "piVar8") (, ",") (pointer_expression "*(undefined4 *)(local_2c + 4)" (* "*") (cast_expression "(undefined4 *)(local_2c + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 4)" (( "(") (binary_expression "local_2c + 4" (identifier "local_2c") (+ "+") (number_literal "4")) () ")")))) (, ",") (identifier "local_50") (, ",") (identifier "uVar4") (, ",") (identifier "iVar11") () ")")))) (; ";")) (if_statement "if (local_2c != 0) goto LAB_000856f0;" (if "if") (parenthesized_expression "(local_2c != 0)" (( "(") (binary_expression "local_2c != 0" (identifier "local_2c") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000856f0;" (goto "goto") (statement_identifier "LAB_000856f0") (; ";"))) (} "}")) (else_clause "else {\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }" (else "else") (compound_statement "{\n      if (local_2c == 0) goto LAB_000851f0;\nLAB_000856f0:\n      FUN_0001b1a0();\n    }" ({ "{") (if_statement "if (local_2c == 0) goto LAB_000851f0;" (if "if") (parenthesized_expression "(local_2c == 0)" (( "(") (binary_expression "local_2c == 0" (identifier "local_2c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000851f0;" (goto "goto") (statement_identifier "LAB_000851f0") (; ";"))) (labeled_statement "LAB_000856f0:\n      FUN_0001b1a0();" (statement_identifier "LAB_000856f0") (: ":") (expression_statement "FUN_0001b1a0();" (call_expression "FUN_0001b1a0()" (identifier "FUN_0001b1a0") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}")))) (} "}"))) (labeled_statement "LAB_000853a0:\n  if (((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))) {\n    iVar3 = FUN_0002a940();\nLAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;\n    iVar3 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    iVar11 = param_1[6];\nLAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);\n    if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar9 != '\0') {\n      FUN_0007c140();\n    }\n  }\n  else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }" (statement_identifier "LAB_000853a0") (: ":") (if_statement "if (((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))) {\n    iVar3 = FUN_0002a940();\nLAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;\n    iVar3 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    iVar11 = param_1[6];\nLAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);\n    if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar9 != '\0') {\n      FUN_0007c140();\n    }\n  }\n  else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }" (if "if") (parenthesized_expression "(((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0))))" (( "(") (binary_expression "((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&\n     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))" (parenthesized_expression "((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0))" (( "(") (binary_expression "(iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)" (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)" (( "(") (comma_expression "iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0" (assignment_expression "iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(*piVar8 + 0x18))(piVar8,&local_2c)" (parenthesized_expression "(**(code **)(*piVar8 + 0x18))" (( "(") (pointer_expression "**(code **)(*piVar8 + 0x18)" (* "*") (pointer_expression "*(code **)(*piVar8 + 0x18)" (* "*") (cast_expression "(code **)(*piVar8 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar8 + 0x18)" (( "(") (binary_expression "*piVar8 + 0x18" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(piVar8,&local_2c)" (( "(") (identifier "piVar8") (, ",") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) () ")")))) (, ",") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))" (( "(") (parenthesized_expression "((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0))" (( "(") (binary_expression "(SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||\n      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)" (binary_expression "(SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==\n       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0" (parenthesized_expression "(SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c)))" (( "(") (binary_expression "SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))" (call_expression "SBORROW4(local_38,local_28)" (identifier "SBORROW4") (argument_list "(local_38,local_28)" (( "(") (identifier "local_38") (, ",") (identifier "local_28") () ")"))) (!= "!=") (call_expression "SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))" (identifier "SBORROW4") (argument_list "(local_38 - local_28,(uint)(local_3c < local_2c))" (( "(") (binary_expression "local_38 - local_28" (identifier "local_38") (- "-") (identifier "local_28")) (, ",") (call_expression "(uint)(local_3c < local_2c)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_3c < local_2c)" (( "(") (binary_expression "local_3c < local_2c" (identifier "local_3c") (< "<") (identifier "local_2c")) () ")"))) () ")")))) () ")")) (== "==") (binary_expression "(int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0" (cast_expression "(int)((local_38 - local_28) - (uint)(local_3c < local_2c))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((local_38 - local_28) - (uint)(local_3c < local_2c))" (( "(") (binary_expression "(local_38 - local_28) - (uint)(local_3c < local_2c)" (parenthesized_expression "(local_38 - local_28)" (( "(") (binary_expression "local_38 - local_28" (identifier "local_38") (- "-") (identifier "local_28")) () ")")) (- "-") (call_expression "(uint)(local_3c < local_2c)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_3c < local_2c)" (( "(") (binary_expression "local_3c < local_2c" (identifier "local_3c") (< "<") (identifier "local_2c")) () ")")))) () ")"))) (< "<") (number_literal "0"))) (|| "||") (parenthesized_expression "(iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)" (( "(") (comma_expression "iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0" (assignment_expression "iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(*piVar8 + 0x10))(piVar8,lVar1)" (parenthesized_expression "(**(code **)(*piVar8 + 0x10))" (( "(") (pointer_expression "**(code **)(*piVar8 + 0x10)" (* "*") (pointer_expression "*(code **)(*piVar8 + 0x10)" (* "*") (cast_expression "(code **)(*piVar8 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar8 + 0x10)" (( "(") (binary_expression "*piVar8 + 0x10" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(piVar8,lVar1)" (( "(") (identifier "piVar8") (, ",") (identifier "lVar1") () ")")))) (, ",") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    iVar3 = FUN_0002a940();\nLAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;\n    iVar3 = 0x65;\njoined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;\nLAB_000851f8:\n    iVar11 = param_1[6];\nLAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);\n    if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar9 != '\0') {\n      FUN_0007c140();\n    }\n  }" ({ "{") (expression_statement "iVar3 = FUN_0002a940();" (assignment_expression "iVar3 = FUN_0002a940()" (identifier "iVar3") (= "=") (call_expression "FUN_0002a940()" (identifier "FUN_0002a940") (argument_list "()" (( "(") () ")")))) (; ";")) (labeled_statement "LAB_000855f2:\n    if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;" (statement_identifier "LAB_000855f2") (: ":") (if_statement "if ((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))\n    goto LAB_000851f0;" (if "if") (parenthesized_expression "((iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))" (( "(") (binary_expression "(iVar3 != 0) ||\n       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0)))" (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0)))" (( "(") (parenthesized_expression "(*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))" (( "(") (binary_expression "*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0)" (binary_expression "*(char *)(param_1[1] + 8) != '\0'" (pointer_expression "*(char *)(param_1[1] + 8)" (* "*") (cast_expression "(char *)(param_1[1] + 8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + 8)" (( "(") (binary_expression "param_1[1] + 8" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "8")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (&& "&&") (parenthesized_expression "(iVar3 = FUN_0007c140(), iVar3 != 0)" (( "(") (comma_expression "iVar3 = FUN_0007c140(), iVar3 != 0" (assignment_expression "iVar3 = FUN_0007c140()" (identifier "iVar3") (= "=") (call_expression "FUN_0007c140()" (identifier "FUN_0007c140") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_000851f0;" (goto "goto") (statement_identifier "LAB_000851f0") (; ";")))) (expression_statement "iVar3 = 0x65;" (assignment_expression "iVar3 = 0x65" (identifier "iVar3") (= "=") (number_literal "0x65")) (; ";")) (labeled_statement "joined_r0x0008561f:\n    if (local_4c == 0) goto LAB_0008522b;" (statement_identifier "joined_r0x0008561f") (: ":") (if_statement "if (local_4c == 0) goto LAB_0008522b;" (if "if") (parenthesized_expression "(local_4c == 0)" (( "(") (binary_expression "local_4c == 0" (identifier "local_4c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0008522b;" (goto "goto") (statement_identifier "LAB_0008522b") (; ";")))) (labeled_statement "LAB_000851f8:\n    iVar11 = param_1[6];" (statement_identifier "LAB_000851f8") (: ":") (expression_statement "iVar11 = param_1[6];" (assignment_expression "iVar11 = param_1[6]" (identifier "iVar11") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";"))) (labeled_statement "LAB_000851fb:\n    cVar9 = *(char *)(iVar11 + 8);" (statement_identifier "LAB_000851fb") (: ":") (expression_statement "cVar9 = *(char *)(iVar11 + 8);" (assignment_expression "cVar9 = *(char *)(iVar11 + 8)" (identifier "cVar9") (= "=") (pointer_expression "*(char *)(iVar11 + 8)" (* "*") (cast_expression "(char *)(iVar11 + 8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 8)" (( "(") (binary_expression "iVar11 + 8" (identifier "iVar11") (+ "+") (number_literal "8")) () ")"))))) (; ";"))) (if_statement "if (cVar9 == '\x02') {\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }" (if "if") (parenthesized_expression "(cVar9 == '\x02')" (( "(") (binary_expression "cVar9 == '\x02'" (identifier "cVar9") (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n      FUN_00084c70();\n      cVar9 = *(char *)(param_1[6] + 8);\n    }" ({ "{") (expression_statement "FUN_00084c70();" (call_expression "FUN_00084c70()" (identifier "FUN_00084c70") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "cVar9 = *(char *)(param_1[6] + 8);" (assignment_expression "cVar9 = *(char *)(param_1[6] + 8)" (identifier "cVar9") (= "=") (pointer_expression "*(char *)(param_1[6] + 8)" (* "*") (cast_expression "(char *)(param_1[6] + 8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[6] + 8)" (( "(") (binary_expression "param_1[6] + 8" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (cVar9 != '\0') {\n      FUN_0007c140();\n    }" (if "if") (parenthesized_expression "(cVar9 != '\0')" (( "(") (binary_expression "cVar9 != '\0'" (identifier "cVar9") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      FUN_0007c140();\n    }" ({ "{") (expression_statement "FUN_0007c140();" (call_expression "FUN_0007c140()" (identifier "FUN_0007c140") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }" (else "else") (compound_statement "{\nLAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;\n  }" ({ "{") (labeled_statement "LAB_000851f0:\n    if (local_4c != 0) goto LAB_000851f8;" (statement_identifier "LAB_000851f0") (: ":") (if_statement "if (local_4c != 0) goto LAB_000851f8;" (if "if") (parenthesized_expression "(local_4c != 0)" (( "(") (binary_expression "local_4c != 0" (identifier "local_4c") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000851f8;" (goto "goto") (statement_identifier "LAB_000851f8") (; ";")))) (} "}"))))) (if_statement "if (iVar3 == 0xc0a) {\n    iVar3 = 7;\n  }" (if "if") (parenthesized_expression "(iVar3 == 0xc0a)" (( "(") (binary_expression "iVar3 == 0xc0a" (identifier "iVar3") (== "==") (number_literal "0xc0a")) () ")")) (compound_statement "{\n    iVar3 = 7;\n  }" ({ "{") (expression_statement "iVar3 = 7;" (assignment_expression "iVar3 = 7" (identifier "iVar3") (= "=") (number_literal "7")) (; ";")) (} "}"))) (labeled_statement "LAB_0008522b:\n  param_1[7] = iVar3;" (statement_identifier "LAB_0008522b") (: ":") (expression_statement "param_1[7] = iVar3;" (assignment_expression "param_1[7] = iVar3" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar3")) (; ";"))) (labeled_statement "LAB_0008522e:\n  if (*param_1 != 0) {\n    FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));\n  }" (statement_identifier "LAB_0008522e") (: ":") (if_statement "if (*param_1 != 0) {\n    FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));\n  }" (if "if") (parenthesized_expression "(*param_1 != 0)" (( "(") (binary_expression "*param_1 != 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));\n  }" ({ "{") (expression_statement "FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));" (call_expression "FUN_000197f0(*(undefined4 *)(*param_1 + 0xc))" (identifier "FUN_000197f0") (argument_list "(*(undefined4 *)(*param_1 + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(*param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(*param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0xc)" (( "(") (binary_expression "*param_1 + 0xc" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (} "}")))) (labeled_statement "LAB_00085244:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar8 = (int *)(param_1[6] + 0xc);\n    *piVar8 = *piVar8 + -1;\n    if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }\n  }" (statement_identifier "LAB_00085244") (: ":") (if_statement "if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar8 = (int *)(param_1[6] + 0xc);\n    *piVar8 = *piVar8 + -1;\n    if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }\n  }" (if "if") (parenthesized_expression "(*(char *)(param_1[6] + 9) != '\0')" (( "(") (binary_expression "*(char *)(param_1[6] + 9) != '\0'" (pointer_expression "*(char *)(param_1[6] + 9)" (* "*") (cast_expression "(char *)(param_1[6] + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[6] + 9)" (( "(") (binary_expression "param_1[6] + 9" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (+ "+") (number_literal "9")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    piVar8 = (int *)(param_1[6] + 0xc);\n    *piVar8 = *piVar8 + -1;\n    if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }\n  }" ({ "{") (expression_statement "piVar8 = (int *)(param_1[6] + 0xc);" (assignment_expression "piVar8 = (int *)(param_1[6] + 0xc)" (identifier "piVar8") (= "=") (cast_expression "(int *)(param_1[6] + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[6] + 0xc)" (( "(") (binary_expression "param_1[6] + 0xc" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (+ "+") (number_literal "0xc")) () ")")))) (; ";")) (expression_statement "*piVar8 = *piVar8 + -1;" (assignment_expression "*piVar8 = *piVar8 + -1" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (binary_expression "*piVar8 + -1" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (*piVar8 == 0) {\n      FUN_0002b3c0();\n    }" (if "if") (parenthesized_expression "(*piVar8 == 0)" (( "(") (binary_expression "*piVar8 == 0" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_0002b3c0();\n    }" ({ "{") (expression_statement "FUN_0002b3c0();" (call_expression "FUN_0002b3c0()" (identifier "FUN_0002b3c0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "FUN_000197f0(*(undefined4 *)(param_1[5] + 0xc));" (call_expression "FUN_000197f0(*(undefined4 *)(param_1[5] + 0xc))" (identifier "FUN_000197f0") (argument_list "(*(undefined4 *)(param_1[5] + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(param_1[5] + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1[5] + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[5] + 0xc)" (( "(") (binary_expression "param_1[5] + 0xc" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f4bf0();\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_000f4bf0();\n  }" ({ "{") (expression_statement "FUN_000f4bf0();" (call_expression "FUN_000f4bf0()" (identifier "FUN_000f4bf0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */
/* WARNING: Unknown calling convention */

int function_1(type_1 *p,int var_28)

{
  int *piVar1;
  type_2 var_12;
  type_3 *psVar3;
  type_4 lVar4;
  type_4 lVar5;
  int var_4;
  type_5 *pPVar7;
  type_6 var_16;
  type_6 var_15;
  type_6 var_17;
  type_7 *p_00;
  type_8 *pBVar11;
  type_8 *pBVar12;
  int var_8;
  type_2 *var_29;
  type_7 *pBVar14;
  type_9 *var_22;
  int var_24;
  int var_1;
  bool bVar17;
  type_9 **ppDVar18;
  int iVar19;
  type_8 *in_stack_ffffff94;
  type_5 *local_5c;
  type_10 var_23;
  int var_31;
  type_10 var_18;
  type_9 *var_6;
  int var_20;
  type_5 *local_34;
  type_9 *var_26;
  int var_36;
  int var_41;
  
  var_41 = *(int *)(var_1 + 0x14);
  var_2(p->pSrcDb->mutex);
  if (p->pSrc->sharable != '\0') {
    var_3(p->pSrc);
  }
  if (p->pDestDb == (type_11 *)0x0) {
    var_4 = p->rc;
    if ((1 < var_4 - 5U) && (var_4 != 0)) goto LAB_00085244;
    p_00 = p->pSrc;
    pBVar14 = p->pDest;
    pBVar12 = p_00->pBt;
    local_5c = pBVar12->pPager;
    pBVar11 = pBVar14->pBt;
    local_34 = pBVar11->pPager;
    if (p_00->inTrans != '\0') goto LAB_00084fef;
LAB_000852b9:
    var_4 = var_5(p_00,0,(int *)0x0);
    pBVar14 = p->pDest;
    if (var_4 == 0 && p->bDestLocked == 0) {
      var_31 = 1;
      pBVar12 = p->pSrc->pBt;
      goto LAB_00084ffe;
    }
    if (var_4 != 0) {
      pBVar11 = pBVar14->pBt;
      var_31 = 1;
      pBVar12 = p->pSrc->pBt;
      pPVar7 = pBVar11->pPager;
      goto LAB_00085051;
    }
    var_31 = 1;
LAB_0008501f:
    if (p->bDestLocked == 0) {
      var_4 = var_5(pBVar14,2,(int *)&p->iDestSchema);
      if (var_4 == 0) {
        p_00 = p->pSrc;
        p->bDestLocked = 1;
        pBVar11 = p->pDest->pBt;
        pBVar12 = p_00->pBt;
        pPVar7 = pBVar11->pPager;
        goto LAB_0008518c;
      }
LAB_00085043:
      pBVar12 = p->pSrc->pBt;
      pBVar11 = p->pDest->pBt;
      pPVar7 = pBVar11->pPager;
LAB_00085051:
      var_12 = pPVar7->journalMode;
      var_23 = pBVar12->pageSize;
      var_18 = pBVar11->pageSize;
      var_6 = (type_9 *)pBVar12->var_28;
LAB_0008506e:
      if (var_4 != 0x65) goto LAB_000851f0;
LAB_00085077:
      pBVar14 = p->pDest;
      if (var_6 == (type_9 *)0x0) {
        if (pBVar14->sharable != '\0') {
          var_3(pBVar14);
        }
        pBVar14->pBt->var_28 = 0;
        if (pBVar14->pBt->var_28 == 0) {
          var_4 = var_7(in_stack_ffffff94);
          if (pBVar14->sharable == '\0') {
            bVar17 = var_4 == 0 || var_4 == 0x65;
          }
          else {
            var_8 = pBVar14->wantToLock + -1;
            pBVar14->wantToLock = var_8;
            bVar17 = var_4 == 0x65 || var_4 == 0;
            if (var_8 == 0) {
              var_9(pBVar14);
            }
          }
          if (!bVar17) goto LAB_000851f0;
        }
        else if (pBVar14->sharable != '\0') {
          piVar1 = &pBVar14->wantToLock;
          *piVar1 = *piVar1 + -1;
          if (*piVar1 == 0) {
            var_9(pBVar14);
          }
        }
        pBVar14 = p->pDest;
        var_6 = (type_9 *)0x1;
      }
      var_4 = var_10(pBVar14,1,p->iDestSchema + 1);
      if (var_4 == 0) {
        if (p->pDestDb != (type_11 *)0x0) {
          var_11(p->pDestDb);
        }
        if ((var_12 != '\x05') || (var_4 = var_13(p->pDest,2), var_4 == 0)) {
          if ((int)var_18 <= (int)var_23) {
            local_34->dbSize = ((int)var_23 / (int)var_18) * (int)var_6;
            var_4 = var_14(local_34,(char *)0x0,0);
            goto LAB_000855f2;
          }
          var_16 = (int)((int)var_6 + (int)var_18 / (int)var_23 + -1) /
                  ((int)var_18 / (int)var_23);
          var_15 = (type_6)var_19 / p->pDest->pBt->pageSize;
          if (var_15 + 1 == var_16) {
            var_16 = var_15;
          }
          lVar4 = (type_4)(int)var_6 * (type_4)(int)var_23;
          psVar3 = local_34->fd;
          var_15 = local_34->dbSize;
          do {
            if ((var_15 < var_16) ||
               ((var_17 = (type_6)var_19 / p->pDest->pBt->pageSize, var_17 + 1 == var_16 &&
                (var_16 = var_17 + 2, var_15 < var_16)))) {
              var_4 = var_14(local_34,(char *)0x0,1);
              var_22 = (type_9 *)(var_18 + var_19);
              var_6 = (type_9 *)lVar4;
              var_20 = (int)((type_12)lVar4 >> 0x20);
              var_8 = var_20 - ((int)var_22 >> 0x1f);
              lVar5 = (type_4)(int)var_22;
              if ((var_21(var_20,(int)var_22 >> 0x1f) !=
                  var_21(var_8,(type_6)(var_6 < var_22))) !=
                  (int)(var_8 - (type_6)(var_6 < var_22)) < 0) {
                lVar5 = lVar4;
              }
              var_24 = (int)((type_12)lVar5 >> 0x20);
              var_16 = var_19 + var_23;
              var_8 = (int)var_16 >> 0x1f;
              if ((var_4 != 0) ||
                 (var_15 = (type_6)(var_16 < (type_6)lVar5),
                 (var_21(var_8,var_24) != var_21(var_8 - var_24,var_15)) ==
                 (int)((var_8 - var_24) - var_15) < 0)) goto LAB_000853a0;
              goto LAB_00085660;
            }
            var_4 = (*local_34->xGet)(local_34,var_16,&var_26,0);
            if (var_4 != 0) break;
            var_4 = var_25(var_26);
            if (var_26 != (type_9 *)0x0) {
              var_27(var_26);
            }
            var_16 = var_16 + 1;
          } while (var_4 == 0);
        }
      }
      goto LAB_000851f0;
    }
    p_00 = p->pSrc;
    pBVar11 = pBVar14->pBt;
    pBVar12 = p_00->pBt;
    pPVar7 = pBVar11->pPager;
LAB_0008518c:
    var_23 = pBVar12->pageSize;
    var_18 = pBVar11->pageSize;
    var_12 = pPVar7->journalMode;
    var_6 = (type_9 *)pBVar12->var_28;
    if ((var_12 != '\x05') || (var_18 == var_23)) {
      if (var_28 == 0) {
LAB_0008551a:
        var_29 = (type_2 *)p->iNext;
      }
      else {
        var_29 = (type_2 *)p->iNext;
        if (var_29 <= var_6) {
          var_8 = 0;
          while( true ) {
            var_4 = 0;
            if ((((type_2 *)((type_6)var_19 / p_00->pBt->pageSize + 1) != var_29) &&
                (var_4 = (*local_5c->xGet)(local_5c,(type_13)var_29,&var_26,2), var_4 == 0)) &&
               (var_4 = var_30((type_1 *)&p->pDest,(type_13)&p->pSrc,var_29,
                                      (int)var_26->pData,(type_1 *)0x0),
               var_26 != (type_9 *)0x0)) {
              var_27(var_26);
            }
            var_8 = var_8 + 1;
            var_29 = (type_2 *)(p->iNext + 1);
            p->iNext = (type_13)var_29;
            if (((var_28 <= var_8) && (-1 < var_28)) || (var_6 < var_29)) break;
            if (var_4 != 0) goto LAB_0008506e;
            p_00 = p->pSrc;
          }
          if (var_4 == 0) goto LAB_0008551a;
          goto LAB_0008506e;
        }
      }
      p->nPagecount = (type_13)var_6;
      p->nRemaining = (type_13)((int)var_6 + (1 - (int)var_29));
      if (var_6 < var_29) goto LAB_00085077;
      if (p->isAttached == 0) {
        pPVar7 = p->pSrc->pBt->pPager;
        p->pNext = pPVar7->pBackup;
        pPVar7->pBackup = p;
        p->isAttached = 1;
      }
      var_4 = 0;
      goto joined_r0x0008561f;
    }
    if (var_28 == 0) {
      var_4 = 8;
      if (var_31 == 0) goto LAB_0008522b;
      goto LAB_000851fb;
    }
    var_4 = 8;
    if (var_6 < (type_2 *)p->iNext) {
      var_4 = 8;
      goto LAB_000851f0;
    }
    if (var_31 != 0) goto LAB_000851fb;
    goto LAB_0008522b;
  }
  var_2(p->pDestDb->mutex);
  var_4 = p->rc;
  if ((var_4 - 5U < 2) || (var_4 == 0)) {
    p_00 = p->pSrc;
    pBVar14 = p->pDest;
    pBVar12 = p_00->pBt;
    local_5c = pBVar12->pPager;
    pBVar11 = pBVar14->pBt;
    pPVar7 = pBVar11->pPager;
    local_34 = pPVar7;
    if ((p->pDestDb != (type_11 *)0x0) && (pBVar12->inTransaction == '\x02')) {
      var_31 = 0;
      var_4 = 5;
      goto LAB_00085051;
    }
    if (p_00->inTrans == '\0') goto LAB_000852b9;
LAB_00084fef:
    var_31 = p->bDestLocked;
    if (var_31 == 0) {
LAB_00084ffe:
      var_4 = var_32(pBVar14,pBVar12->pageSize,-1,0);
      if (var_4 != 7) {
        pBVar14 = p->pDest;
        goto LAB_0008501f;
      }
      goto LAB_00085043;
    }
    var_31 = 0;
    pPVar7 = local_34;
    goto LAB_0008518c;
  }
  goto LAB_0008522e;
  while( true ) {
    bVar17 = var_33(var_16,var_23);
    var_16 = var_16 + var_23;
    var_8 = var_8 + ((int)var_23 >> 0x1f) + (type_6)bVar17;
    if ((var_4 != 0) ||
       (var_15 = (type_6)(var_16 < (type_6)lVar5),
       (var_21(var_8,var_24) != var_21(var_8 - var_24,var_15)) ==
       (int)((var_8 - var_24) - var_15) < 0)) break;
LAB_00085660:
    var_26 = (type_9 *)0x0;
    iVar19 = 0;
    ppDVar18 = &var_26;
    var_4 = var_34(var_16,var_8,var_23,(int)var_23 >> 0x1f);
    var_4 = (*local_5c->xGet)(local_5c,var_4 + 1,ppDVar18,iVar19);
    if (var_4 == 0) {
      var_4 = (*psVar3->pMethods->xWrite)(psVar3,var_26->pData,var_23,var_35(var_8,var_16));
      if (var_26 != (type_9 *)0x0) goto LAB_000856f0;
    }
    else {
      if (var_26 == (type_9 *)0x0) goto LAB_000851f0;
LAB_000856f0:
      var_27(var_26);
    }
  }
LAB_000853a0:
  if (((var_4 == 0) &&
      (var_4 = (*psVar3->pMethods->xFileSize)(psVar3,(type_14 *)&var_26), var_4 == 0)) &&
     (((var_21(var_20,var_36) != var_21(var_20 - var_36,(type_6)(var_6 < var_26))) ==
       (int)((var_20 - var_36) - (type_6)(var_6 < var_26)) < 0 ||
      (var_4 = (*psVar3->pMethods->xTruncate)(psVar3,lVar4), var_4 == 0)))) {
    var_4 = var_37(local_34,(char *)0x0);
LAB_000855f2:
    if ((var_4 != 0) ||
       ((p->pDest->inTrans != '\0' && (var_4 = var_38(p->pDest,0), var_4 != 0)))
       ) goto LAB_000851f0;
    var_4 = 0x65;
joined_r0x0008561f:
    if (var_31 == 0) goto LAB_0008522b;
LAB_000851f8:
    p_00 = p->pSrc;
LAB_000851fb:
    var_12 = p_00->inTrans;
    if (var_12 == '\x02') {
      var_39(p_00,(char *)0x0);
      p_00 = p->pSrc;
      var_12 = p_00->inTrans;
    }
    if (var_12 != '\0') {
      var_38(p_00,0);
    }
  }
  else {
LAB_000851f0:
    if (var_31 != 0) goto LAB_000851f8;
  }
  if (var_4 == 0xc0a) {
    var_4 = 7;
  }
LAB_0008522b:
  p->rc = var_4;
LAB_0008522e:
  if (p->pDestDb != (type_11 *)0x0) {
    var_40(p->pDestDb->mutex);
  }
LAB_00085244:
  pBVar14 = p->pSrc;
  if (pBVar14->sharable != '\0') {
    piVar1 = &pBVar14->wantToLock;
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      var_9(pBVar14);
    }
  }
  var_40(p->pSrcDb->mutex);
  if (var_41 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_42();
  }
  return var_4;
}


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

int MASKED(int *param_1,int param_2)

{
  longlong lVar1;
  longlong lVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  int *piVar8;
  char cVar9;
  int *piVar10;
  int iVar11;
  int unaff_EBP;
  int in_GS_OFFSET;
  bool bVar12;
  uint *puVar13;
  undefined4 uVar14;
  int local_5c;
  uint local_50;
  int local_4c;
  uint local_48;
  uint local_3c;
  int local_38;
  int local_34;
  uint local_2c;
  int local_28;
  int local_20;
  
  FUN_00019701();
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  FUN_000197c0(*(undefined4 *)(param_1[5] + 0xc));
  if (*(char *)(param_1[6] + 9) != '\0') {
    FUN_0002b330();
  }
  if (*param_1 == 0) {
    iVar3 = param_1[7];
    if ((1 < iVar3 - 5U) && (iVar3 != 0)) goto LAB_00085244;
    iVar11 = param_1[6];
    piVar10 = *(int **)(iVar11 + 4);
    local_5c = *piVar10;
    piVar8 = *(int **)(param_1[1] + 4);
    local_34 = *piVar8;
    if (*(char *)(iVar11 + 8) != '\0') goto LAB_00084fef;
LAB_000852b9:
    iVar3 = FUN_0007cba0();
    iVar7 = param_1[1];
    if (iVar3 == 0 && param_1[3] == 0) {
      local_4c = 1;
      goto LAB_00084ffe;
    }
    if (iVar3 != 0) {
      piVar8 = *(int **)(iVar7 + 4);
      local_4c = 1;
      piVar10 = *(int **)(param_1[6] + 4);
      iVar7 = *piVar8;
      goto LAB_00085051;
    }
    local_4c = 1;
LAB_0008501f:
    if (param_1[3] == 0) {
      iVar3 = FUN_0007cba0();
      if (iVar3 == 0) {
        iVar11 = param_1[6];
        param_1[3] = 1;
        piVar8 = *(int **)(param_1[1] + 4);
        piVar10 = *(int **)(iVar11 + 4);
        iVar3 = *piVar8;
        goto LAB_0008518c;
      }
LAB_00085043:
      piVar10 = *(int **)(param_1[6] + 4);
      piVar8 = *(int **)(param_1[1] + 4);
      iVar7 = *piVar8;
LAB_00085051:
      cVar9 = *(char *)(iVar7 + 5);
      local_50 = piVar10[8];
      local_48 = piVar8[8];
      local_3c = piVar10[0xb];
LAB_0008506e:
      if (iVar3 != 0x65) goto LAB_000851f0;
LAB_00085077:
      iVar11 = param_1[1];
      if (local_3c == 0) {
        if (*(char *)(iVar11 + 9) != '\0') {
          FUN_0002b330();
        }
        *(undefined4 *)(*(int *)(iVar11 + 4) + 0x2c) = 0;
        if (*(int *)(*(int *)(iVar11 + 4) + 0x2c) == 0) {
          iVar3 = FUN_0007cac0();
          if (*(char *)(iVar11 + 9) == '\0') {
            bVar12 = iVar3 == 0 || iVar3 == 0x65;
          }
          else {
            iVar7 = *(int *)(iVar11 + 0xc) + -1;
            *(int *)(iVar11 + 0xc) = iVar7;
            bVar12 = iVar3 == 0x65 || iVar3 == 0;
            if (iVar7 == 0) {
              FUN_0002b3c0();
            }
          }
          if (!bVar12) goto LAB_000851f0;
        }
        else if (*(char *)(iVar11 + 9) != '\0') {
          piVar8 = (int *)(iVar11 + 0xc);
          *piVar8 = *piVar8 + -1;
          if (*piVar8 == 0) {
            FUN_0002b3c0();
          }
        }
        local_3c = 1;
      }
      iVar3 = FUN_0007d3e0();
      if (iVar3 == 0) {
        if (*param_1 != 0) {
          FUN_00039e00();
        }
        if ((cVar9 != '\x05') || (iVar3 = FUN_0007d450(), iVar3 == 0)) {
          if ((int)local_48 <= (int)local_50) {
            *(uint *)(local_34 + 0x18) = ((int)local_50 / (int)local_48) * local_3c;
            iVar3 = FUN_000846f0();
            goto LAB_000855f2;
          }
          uVar4 = (int)((local_3c - 1) + (int)local_48 / (int)local_50) /
                  ((int)local_48 / (int)local_50);
          uVar5 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20);
          if (uVar5 + 1 == uVar4) {
            uVar4 = uVar5;
          }
          lVar1 = (longlong)(int)local_3c * (longlong)(int)local_50;
          piVar8 = *(int **)(local_34 + 0x3c);
          uVar5 = *(uint *)(local_34 + 0x18);
          do {
            if ((uVar5 < uVar4) ||
               ((uVar6 = *(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(param_1[1] + 4) + 0x20)
                , uVar6 + 1 == uVar4 && (uVar4 = uVar6 + 2, uVar5 < uVar4)))) {
              iVar3 = FUN_000846f0();
              local_48 = local_48 + *(int *)(unaff_EBP + 0xc420e);
              local_3c = (uint)lVar1;
              local_38 = (int)((ulonglong)lVar1 >> 0x20);
              iVar11 = local_38 - ((int)local_48 >> 0x1f);
              lVar2 = (longlong)(int)local_48;
              if ((SBORROW4(local_38,(int)local_48 >> 0x1f) !=
                  SBORROW4(iVar11,(uint)(local_3c < local_48))) !=
                  (int)(iVar11 - (uint)(local_3c < local_48)) < 0) {
                lVar2 = lVar1;
              }
              iVar7 = (int)((ulonglong)lVar2 >> 0x20);
              uVar4 = *(int *)(unaff_EBP + 0xc420e) + local_50;
              iVar11 = (int)uVar4 >> 0x1f;
              if ((iVar3 != 0) ||
                 (uVar5 = (uint)(uVar4 < (uint)lVar2),
                 (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==
                 (int)((iVar11 - iVar7) - uVar5) < 0)) goto LAB_000853a0;
              goto LAB_00085660;
            }
            iVar3 = (**(code **)(local_34 + 200))(local_34,uVar4,&local_2c,0);
            if (iVar3 != 0) break;
            iVar3 = FUN_00079770();
            if (local_2c != 0) {
              FUN_0001b1a0();
            }
            uVar4 = uVar4 + 1;
          } while (iVar3 == 0);
        }
      }
      goto LAB_000851f0;
    }
    iVar11 = param_1[6];
    piVar8 = *(int **)(iVar7 + 4);
    piVar10 = *(int **)(iVar11 + 4);
    iVar3 = *piVar8;
LAB_0008518c:
    local_50 = piVar10[8];
    local_48 = piVar8[8];
    cVar9 = *(char *)(iVar3 + 5);
    local_3c = piVar10[0xb];
    if ((cVar9 != '\x05') || (local_48 == local_50)) {
      if (param_2 == 0) {
LAB_0008551a:
        uVar4 = param_1[4];
      }
      else {
        uVar4 = param_1[4];
        if (uVar4 <= local_3c) {
          iVar7 = 0;
          while( true ) {
            iVar3 = 0;
            if (((*(uint *)(unaff_EBP + 0xc420e) / *(uint *)(*(int *)(iVar11 + 4) + 0x20) + 1 !=
                  uVar4) &&
                (iVar3 = (**(code **)(local_5c + 200))(local_5c,uVar4,&local_2c,2), iVar3 == 0)) &&
               (iVar3 = FUN_000797c0(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {
              FUN_0001b1a0();
            }
            iVar7 = iVar7 + 1;
            uVar4 = param_1[4] + 1;
            param_1[4] = uVar4;
            if (((param_2 <= iVar7) && (-1 < param_2)) || (local_3c < uVar4)) break;
            if (iVar3 != 0) goto LAB_0008506e;
            iVar11 = param_1[6];
          }
          if (iVar3 == 0) goto LAB_0008551a;
          goto LAB_0008506e;
        }
      }
      param_1[9] = local_3c;
      param_1[8] = (local_3c - uVar4) + 1;
      if (local_3c < uVar4) goto LAB_00085077;
      if (param_1[10] == 0) {
        iVar3 = **(int **)(param_1[6] + 4);
        param_1[0xb] = *(int *)(iVar3 + 0x58);
        *(int **)(iVar3 + 0x58) = param_1;
        param_1[10] = 1;
      }
      iVar3 = 0;
      goto joined_r0x0008561f;
    }
    if (param_2 == 0) {
      iVar3 = 8;
      if (local_4c == 0) goto LAB_0008522b;
      goto LAB_000851fb;
    }
    iVar3 = 8;
    if (local_3c < (uint)param_1[4]) {
      iVar3 = 8;
      goto LAB_000851f0;
    }
    if (local_4c != 0) goto LAB_000851fb;
    goto LAB_0008522b;
  }
  FUN_000197c0(*(undefined4 *)(*param_1 + 0xc));
  iVar3 = param_1[7];
  if ((iVar3 - 5U < 2) || (iVar3 == 0)) {
    iVar11 = param_1[6];
    piVar10 = *(int **)(iVar11 + 4);
    local_5c = *piVar10;
    piVar8 = *(int **)(param_1[1] + 4);
    iVar7 = *piVar8;
    local_34 = iVar7;
    if ((*param_1 != 0) && ((char)piVar10[5] == '\x02')) {
      local_4c = 0;
      iVar3 = 5;
      goto LAB_00085051;
    }
    if (*(char *)(iVar11 + 8) == '\0') goto LAB_000852b9;
LAB_00084fef:
    local_4c = param_1[3];
    if (local_4c == 0) {
LAB_00084ffe:
      iVar3 = FUN_0003a660(0);
      if (iVar3 != 7) {
        iVar7 = param_1[1];
        goto LAB_0008501f;
      }
      goto LAB_00085043;
    }
    local_4c = 0;
    iVar3 = local_34;
    goto LAB_0008518c;
  }
  goto LAB_0008522e;
  while( true ) {
    bVar12 = CARRY4(uVar4,local_50);
    uVar4 = uVar4 + local_50;
    iVar11 = iVar11 + ((int)local_50 >> 0x1f) + (uint)bVar12;
    if ((iVar3 != 0) ||
       (uVar5 = (uint)(uVar4 < (uint)lVar2),
       (SBORROW4(iVar11,iVar7) != SBORROW4(iVar11 - iVar7,uVar5)) ==
       (int)((iVar11 - iVar7) - uVar5) < 0)) break;
LAB_00085660:
    local_2c = 0;
    uVar14 = 0;
    puVar13 = &local_2c;
    iVar3 = FUN_000f41f0(uVar4,iVar11,local_50,(int)local_50 >> 0x1f);
    iVar3 = (**(code **)(local_5c + 200))(local_5c,iVar3 + 1,puVar13,uVar14);
    if (iVar3 == 0) {
      iVar3 = (**(code **)(*piVar8 + 0xc))
                        (piVar8,*(undefined4 *)(local_2c + 4),local_50,uVar4,iVar11);
      if (local_2c != 0) goto LAB_000856f0;
    }
    else {
      if (local_2c == 0) goto LAB_000851f0;
LAB_000856f0:
      FUN_0001b1a0();
    }
  }
LAB_000853a0:
  if (((iVar3 == 0) && (iVar3 = (**(code **)(*piVar8 + 0x18))(piVar8,&local_2c), iVar3 == 0)) &&
     (((SBORROW4(local_38,local_28) != SBORROW4(local_38 - local_28,(uint)(local_3c < local_2c))) ==
       (int)((local_38 - local_28) - (uint)(local_3c < local_2c)) < 0 ||
      (iVar3 = (**(code **)(*piVar8 + 0x10))(piVar8,lVar1), iVar3 == 0)))) {
    iVar3 = FUN_0002a940();
LAB_000855f2:
    if ((iVar3 != 0) ||
       ((*(char *)(param_1[1] + 8) != '\0' && (iVar3 = FUN_0007c140(), iVar3 != 0))))
    goto LAB_000851f0;
    iVar3 = 0x65;
joined_r0x0008561f:
    if (local_4c == 0) goto LAB_0008522b;
LAB_000851f8:
    iVar11 = param_1[6];
LAB_000851fb:
    cVar9 = *(char *)(iVar11 + 8);
    if (cVar9 == '\x02') {
      FUN_00084c70();
      cVar9 = *(char *)(param_1[6] + 8);
    }
    if (cVar9 != '\0') {
      FUN_0007c140();
    }
  }
  else {
LAB_000851f0:
    if (local_4c != 0) goto LAB_000851f8;
  }
  if (iVar3 == 0xc0a) {
    iVar3 = 7;
  }
LAB_0008522b:
  param_1[7] = iVar3;
LAB_0008522e:
  if (*param_1 != 0) {
    FUN_000197f0(*(undefined4 *)(*param_1 + 0xc));
  }
LAB_00085244:
  if (*(char *)(param_1[6] + 9) != '\0') {
    piVar8 = (int *)(param_1[6] + 0xc);
    *piVar8 = *piVar8 + -1;
    if (*piVar8 == 0) {
      FUN_0002b3c0();
    }
  }
  FUN_000197f0(*(undefined4 *)(param_1[5] + 0xc));
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000f4bf0();
  }
  return iVar3;
}

