
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Removing unreachable block (ram,0x00084572) */
/* WARNING: Removing unreachable block (ram,0x0008437b) */
/* WARNING: Removing unreachable block (ram,0x00084309) */
/* WARNING: Unknown calling convention */

int sqlite3_backup_step(sqlite3_backup *p,int nPage)

{
  int *piVar1;
  sqlite3_file *psVar2;
  longlong lVar3;
  byte bVar4;
  BtShared *pBVar5;
  Btree *pBVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  BtShared *pBVar10;
  u8 uVar11;
  Btree *p_00;
  Pgno PVar12;
  Pager *pPVar13;
  int rc;
  Pager *pPVar14;
  int iVar15;
  uint uVar16;
  int in_GS_OFFSET;
  bool bVar17;
  DbPage **ppDVar18;
  int iVar19;
  sqlite3_backup *in_stack_ffffff94;
  uint local_64;
  Pager *local_5c;
  u32 local_58;
  int local_54;
  int local_50;
  u32 local_4c;
  Pager *local_40;
  uint local_3c;
  int local_38;
  uint local_34;
  int local_30;
  DbPage *pSrcPg;
  undefined4 local_28;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x83c09;
  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) {
    iVar15 = p->rc;
    if ((1 < iVar15 - 5U) && (iVar15 != 0)) goto LAB_00083d33;
    pBVar6 = p->pDest;
    p_00 = p->pSrc;
    pBVar5 = pBVar6->pBt;
    pBVar10 = p_00->pBt;
    local_5c = pBVar5->pPager;
    pPVar13 = pBVar10->pPager;
    if (p_00->inTrans != '\0') goto LAB_00083c9d;
LAB_00083dad:
    iVar15 = sqlite3BtreeBeginTrans(p_00,0,(int *)0x0);
    if (iVar15 == 0 && p->bDestLocked == 0) {
      pBVar6 = p->pDest;
      local_50 = 1;
      pBVar10 = p->pSrc->pBt;
      goto LAB_00083e11;
    }
    pBVar6 = p->pDest;
    if (iVar15 != 0) {
      pBVar5 = pBVar6->pBt;
      local_50 = 1;
      local_40 = local_5c;
      local_5c = pBVar5->pPager;
      pBVar10 = p->pSrc->pBt;
      goto LAB_00083e6b;
    }
    local_50 = 1;
LAB_00083e2f:
    if (p->bDestLocked != 0) {
      p_00 = p->pSrc;
      pBVar5 = pBVar6->pBt;
      pBVar10 = p_00->pBt;
      pPVar14 = pBVar5->pPager;
LAB_00083cb8:
      local_4c = pBVar5->pageSize;
      local_58 = pBVar10->pageSize;
      local_64 = pBVar10->nPage;
      bVar17 = pPVar14->journalMode == '\x05';
      if (!bVar17) {
        local_40 = local_5c;
        iVar15 = 0;
        goto LAB_00083e8d;
      }
      if (local_4c == local_58) {
        PVar12 = p->iNext;
        if ((nPage != 0) && (PVar12 <= local_64)) {
          local_40 = local_5c;
          bVar17 = true;
          goto LAB_00083eae;
        }
        local_40 = local_5c;
        bVar17 = true;
        goto LAB_00083f79;
      }
      iVar15 = 8;
      if (local_50 == 0) goto LAB_00083d18;
      goto LAB_00083cf5;
    }
    iVar15 = sqlite3BtreeBeginTrans(pBVar6,2,(int *)&p->iDestSchema);
    if (iVar15 == 0) {
      p_00 = p->pSrc;
      p->bDestLocked = 1;
      pBVar5 = p->pDest->pBt;
      pBVar10 = p_00->pBt;
      pPVar14 = pBVar5->pPager;
      goto LAB_00083cb8;
    }
LAB_00083e51:
    pBVar5 = p->pDest->pBt;
    pBVar10 = p->pSrc->pBt;
    local_40 = local_5c;
    local_5c = pBVar5->pPager;
LAB_00083e6b:
    local_4c = pBVar5->pageSize;
    local_58 = pBVar10->pageSize;
    bVar17 = local_5c->journalMode == '\x05';
    local_64 = pBVar10->nPage;
LAB_00083e8d:
    if ((nPage != 0) && (PVar12 = p->iNext, PVar12 <= local_64)) {
      if (iVar15 == 0) {
LAB_00083eae:
        uVar16 = 0;
        uVar7 = local_58;
        while( true ) {
          if ((uint)sqlite3PendingByte / uVar7 + 1 == PVar12) {
            iVar15 = 0;
          }
          else {
            iVar19 = 2;
            ppDVar18 = &pSrcPg;
            iVar15 = (*pPVar13->xGet)(pPVar13,PVar12,&pSrcPg,2);
            if ((iVar15 == 0) &&
               (iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,
                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0)) {
              sqlite3PagerUnrefNotNull(pSrcPg);
            }
            PVar12 = p->iNext;
          }
          PVar12 = PVar12 + 1;
          uVar16 = uVar16 + 1;
          p->iNext = PVar12;
          if (((uint)nPage <= uVar16) || (local_64 < PVar12)) goto LAB_00083f72;
          if (iVar15 != 0) break;
          uVar7 = p->pSrc->pBt->pageSize;
        }
      }
LAB_00083fca:
      if (iVar15 != 0x65) goto LAB_000840d9;
LAB_00083fd3:
      pBVar6 = p->pDest;
      local_5c = (Pager *)local_64;
      if (local_64 == 0) {
        if (pBVar6->sharable != '\0') {
          sqlite3BtreeEnter(pBVar6);
        }
        pBVar5 = pBVar6->pBt;
        pBVar5->nPage = 0;
        iVar15 = newDatabase(pBVar5);
        if (pBVar6->sharable != '\0') {
          piVar1 = &pBVar6->wantToLock;
          *piVar1 = *piVar1 + -1;
          if (*piVar1 == 0) {
            sqlite3BtreeLeave(pBVar6);
          }
        }
        if ((iVar15 != 0) && (iVar15 != 0x65)) goto LAB_000840d9;
        pBVar6 = p->pDest;
        local_5c = (Pager *)0x1;
      }
      iVar15 = sqlite3BtreeUpdateMeta(pBVar6,1,p->iDestSchema + 1);
      if (iVar15 == 0) {
        if (p->pDestDb != (sqlite3 *)0x0) {
          sqlite3ResetAllSchemasOfConnection(p->pDestDb);
        }
        if ((!bVar17) || (iVar15 = sqlite3BtreeSetVersion(p->pDest,2), iVar15 == 0)) {
          if ((int)local_58 < (int)local_4c) {
            uVar7 = (int)(((int)local_5c - 1U) + (int)local_4c / (int)local_58) /
                    ((int)local_4c / (int)local_58);
            uVar16 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;
            if (uVar16 + 1 == uVar7) {
              uVar7 = uVar16;
            }
            lVar3 = (longlong)(int)local_5c * (longlong)(int)local_58;
            psVar2 = local_40->fd;
            uVar16 = local_40->dbSize;
LAB_00084096:
            do {
              if (uVar16 < uVar7) {
LAB_00084288:
                iVar15 = local_40->errCode;
                if (iVar15 == 0) {
                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&
                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;
                  local_3c = (uint)lVar3;
                  local_38 = (int)((ulonglong)lVar3 >> 0x20);
                  if (local_40->eState < 3) {
                    local_4c = local_4c + sqlite3PendingByte;
                    local_54 = (int)local_4c >> 0x1f;
                    if (lVar3 < (int)local_4c) {
                      local_4c = local_3c;
                      local_54 = local_38;
                    }
                    local_34 = sqlite3PendingByte + local_58;
                    local_30 = (int)local_34 >> 0x1f;
                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))
                    goto LAB_0008434c;
                  }
                  else {
                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);
                    local_4c = local_4c + sqlite3PendingByte;
                    local_54 = (int)local_4c >> 0x1f;
                    if (lVar3 < (int)local_4c) {
                      local_4c = local_3c;
                      local_54 = local_38;
                    }
                    local_34 = sqlite3PendingByte + local_58;
                    local_30 = (int)local_34 >> 0x1f;
                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))
                        ) || (iVar15 != 0)) goto LAB_00084344;
                  }
                  goto LAB_00084480;
                }
                break;
              }
              uVar8 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;
              uVar9 = uVar7;
              if (uVar8 + 1 == uVar7) {
                uVar9 = uVar8 + 2;
                if (uVar16 < uVar9) goto LAB_00084288;
                if (uVar9 == uVar7) {
                  do {
                    /* WARNING: Do nothing block with infinite loop */
                  } while( true );
                }
              }
              iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0);
              if (iVar15 != 0) break;
              iVar15 = sqlite3PagerWrite(pSrcPg);
              if (pSrcPg == (DbPage *)0x0) {
                uVar7 = uVar9 + 1;
                if (iVar15 != 0) break;
                goto LAB_00084096;
              }
              uVar7 = uVar9 + 1;
              sqlite3PagerUnrefNotNull(pSrcPg);
            } while (iVar15 == 0);
          }
          else {
            local_40->dbSize = ((int)local_58 / (int)local_4c) * (int)local_5c;
            iVar15 = local_40->errCode;
            if (iVar15 == 0) {
              if ((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||
                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)) {
                if (2 < local_40->eState) {
                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);
                  goto LAB_00084248;
                }
                goto LAB_00084250;
              }
LAB_00084446:
              iVar15 = 10;
              goto LAB_00083fad;
            }
          }
        }
      }
      goto LAB_000840d9;
    }
LAB_00083f72:
    if (iVar15 != 0) goto LAB_00083fca;
    PVar12 = p->iNext;
LAB_00083f79:
    p->nPagecount = local_64;
    p->nRemaining = (local_64 + 1) - PVar12;
    if (local_64 < PVar12) goto LAB_00083fd3;
    if (p->isAttached == 0) {
      pPVar13 = p->pSrc->pBt->pPager;
      p->pNext = pPVar13->pBackup;
      pPVar13->pBackup = p;
      p->isAttached = 1;
    }
    iVar15 = 0;
LAB_00083fad:
    if (local_50 != 0) goto LAB_00083fb9;
    goto LAB_00083d18;
  }
  sqlite3_mutex_enter(p->pDestDb->mutex);
  iVar15 = p->rc;
  if ((iVar15 - 5U < 2) || (iVar15 == 0)) {
    pBVar6 = p->pDest;
    p_00 = p->pSrc;
    pBVar5 = pBVar6->pBt;
    pBVar10 = p_00->pBt;
    local_5c = pBVar5->pPager;
    pPVar13 = pBVar10->pPager;
    if ((p->pDestDb != (sqlite3 *)0x0) && (pBVar10->inTransaction == '\x02')) {
      local_50 = 0;
      iVar15 = 5;
      local_40 = local_5c;
      goto LAB_00083e6b;
    }
    if (p_00->inTrans == '\0') goto LAB_00083dad;
LAB_00083c9d:
    local_50 = p->bDestLocked;
    if (local_50 == 0) {
LAB_00083e11:
      iVar15 = sqlite3BtreeSetPageSize(pBVar6,pBVar10->pageSize,0,0);
      if (iVar15 != 7) {
        pBVar6 = p->pDest;
        goto LAB_00083e2f;
      }
      goto LAB_00083e51;
    }
    local_50 = 0;
    pPVar14 = local_5c;
    goto LAB_00083cb8;
  }
  goto LAB_00083d1b;
  while( true ) {
    bVar17 = CARRY4(local_34,local_58);
    local_34 = local_34 + local_58;
    bVar4 = 1;
    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar17;
    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {
      bVar4 = 0;
    }
    if (!(bool)(iVar15 == 0 & bVar4)) break;
LAB_00084480:
    pSrcPg = (DbPage *)0x0;
    iVar19 = 0;
    ppDVar18 = &pSrcPg;
    iVar15 = __divdi3(local_34,local_30,local_58,(int)local_58 >> 0x1f);
    iVar15 = (*pPVar13->xGet)(pPVar13,iVar15 + 1,ppDVar18,iVar19);
    if (iVar15 == 0) {
      iVar15 = (*psVar2->pMethods->xWrite)
                         (psVar2,pSrcPg->pData,local_58,CONCAT44(local_30,local_34));
      if (pSrcPg != (DbPage *)0x0) goto LAB_000844e2;
    }
    else {
      if (pSrcPg == (DbPage *)0x0) goto LAB_000840d9;
LAB_000844e2:
      sqlite3PagerUnrefNotNull(pSrcPg);
    }
  }
LAB_00084344:
  if (iVar15 == 0) {
LAB_0008434c:
    iVar15 = (*psVar2->pMethods->xFileSize)(psVar2,(sqlite3_int64 *)&pSrcPg);
    if ((iVar15 == 0) &&
       ((CONCAT44(local_28,pSrcPg) <= lVar3 ||
        (iVar15 = (*psVar2->pMethods->xTruncate)(psVar2,lVar3), iVar15 == 0)))) {
      iVar15 = sqlite3PagerSync(local_40,(char *)0x0);
LAB_00084248:
      if (iVar15 == 0) {
LAB_00084250:
        if ((p->pDest->inTrans == '\0') ||
           (iVar15 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar15 == 0)) {
          iVar15 = 0x65;
          goto LAB_00083fad;
        }
      }
    }
  }
LAB_000840d9:
  if (local_50 != 0) {
LAB_00083fb9:
    p_00 = p->pSrc;
LAB_00083cf5:
    uVar11 = p_00->inTrans;
    if (uVar11 == '\x02') {
      sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0);
      p_00 = p->pSrc;
      uVar11 = p_00->inTrans;
    }
    if (uVar11 != '\0') {
      sqlite3BtreeCommitPhaseTwo(p_00,0);
    }
  }
  if (iVar15 == 0xc0a) {
    iVar15 = 7;
  }
LAB_00083d18:
  p->rc = iVar15;
LAB_00083d1b:
  if (p->pDestDb != (sqlite3 *)0x0) {
    sqlite3_mutex_leave(p->pDestDb->mutex);
  }
LAB_00083d33:
  pBVar6 = p->pSrc;
  if (pBVar6->sharable != '\0') {
    piVar1 = &pBVar6->wantToLock;
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      unlockBtreeMutex((Btree *)pBVar6->pBt,(Btree *)&pBVar6->locked);
    }
  }
  sqlite3_mutex_leave(p->pSrcDb->mutex);
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return iVar15;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Removing unreachable block (ram,0x00084572) */
/* WARNING: Removing unreachable block (ram,0x0008437b) */
/* WARNING: Removing unreachable block (ram,0x00084309) */

int sqlite3_backup_step(int *param_1,uint param_2)

{
  longlong lVar1;
  byte bVar2;
  int *piVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  int *piVar7;
  char cVar8;
  int iVar9;
  uint uVar10;
  int iVar11;
  int iVar12;
  uint uVar13;
  int in_GS_OFFSET;
  bool bVar14;
  undefined4 uVar15;
  uint local_64;
  uint local_5c;
  uint local_58;
  int local_54;
  int local_50;
  uint local_4c;
  int local_40;
  uint local_3c;
  int local_38;
  uint local_34;
  int local_30;
  int local_2c;
  undefined4 local_28;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x83c09;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  sqlite3_mutex_enter(*(undefined4 *)(param_1[5] + 0xc));
  if (*(char *)(param_1[6] + 9) != '\0') {
    FUN_00024b20();
  }
  if (*param_1 == 0) {
    iVar12 = param_1[7];
    if ((1 < iVar12 - 5U) && (iVar12 != 0)) goto LAB_00083d33;
    iVar9 = param_1[6];
    piVar3 = *(int **)(param_1[1] + 4);
    piVar7 = *(int **)(iVar9 + 4);
    local_5c = *piVar3;
    iVar11 = *piVar7;
    if (*(char *)(iVar9 + 8) != '\0') goto LAB_00083c9d;
LAB_00083dad:
    iVar12 = FUN_00080d90();
    if (iVar12 == 0 && param_1[3] == 0) {
      local_50 = 1;
      goto LAB_00083e11;
    }
    iVar4 = param_1[1];
    if (iVar12 != 0) {
      piVar3 = *(int **)(iVar4 + 4);
      local_50 = 1;
      local_40 = local_5c;
      local_5c = *piVar3;
      piVar7 = *(int **)(param_1[6] + 4);
      goto LAB_00083e6b;
    }
    local_50 = 1;
LAB_00083e2f:
    if (param_1[3] != 0) {
      iVar9 = param_1[6];
      piVar3 = *(int **)(iVar4 + 4);
      piVar7 = *(int **)(iVar9 + 4);
      uVar10 = *piVar3;
LAB_00083cb8:
      local_4c = piVar3[9];
      local_58 = piVar7[9];
      local_64 = piVar7[0xc];
      bVar14 = *(char *)(uVar10 + 5) == '\x05';
      if (!bVar14) {
        local_40 = local_5c;
        iVar12 = 0;
        goto LAB_00083e8d;
      }
      if (local_4c == local_58) {
        uVar10 = param_1[4];
        if ((param_2 != 0) && (uVar10 <= local_64)) {
          local_40 = local_5c;
          bVar14 = true;
          goto LAB_00083eae;
        }
        local_40 = local_5c;
        bVar14 = true;
        goto LAB_00083f79;
      }
      iVar12 = 8;
      if (local_50 == 0) goto LAB_00083d18;
      goto LAB_00083cf5;
    }
    iVar12 = FUN_00080d90();
    if (iVar12 == 0) {
      iVar9 = param_1[6];
      param_1[3] = 1;
      piVar3 = *(int **)(param_1[1] + 4);
      piVar7 = *(int **)(iVar9 + 4);
      uVar10 = *piVar3;
      goto LAB_00083cb8;
    }
LAB_00083e51:
    piVar3 = *(int **)(param_1[1] + 4);
    piVar7 = *(int **)(param_1[6] + 4);
    local_40 = local_5c;
    local_5c = *piVar3;
LAB_00083e6b:
    local_4c = piVar3[9];
    local_58 = piVar7[9];
    bVar14 = *(char *)(local_5c + 5) == '\x05';
    local_64 = piVar7[0xc];
LAB_00083e8d:
    if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {
      if (iVar12 == 0) {
LAB_00083eae:
        uVar13 = 0;
        uVar5 = local_58;
        while( true ) {
          if (DAT_00106358 / uVar5 + 1 == uVar10) {
            iVar12 = 0;
          }
          else {
            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);
            if ((iVar12 == 0) &&
               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {
              FUN_0001f280();
            }
            uVar10 = param_1[4];
          }
          uVar10 = uVar10 + 1;
          uVar13 = uVar13 + 1;
          param_1[4] = uVar10;
          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;
          if (iVar12 != 0) break;
          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);
        }
      }
LAB_00083fca:
      if (iVar12 != 0x65) goto LAB_000840d9;
LAB_00083fd3:
      iVar9 = param_1[1];
      local_5c = local_64;
      if (local_64 == 0) {
        if (*(char *)(iVar9 + 9) != '\0') {
          FUN_00024b20();
        }
        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;
        iVar12 = FUN_000761e0();
        if (*(char *)(iVar9 + 9) != '\0') {
          piVar3 = (int *)(iVar9 + 0xc);
          *piVar3 = *piVar3 + -1;
          if (*piVar3 == 0) {
            FUN_00024b40();
          }
        }
        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;
        local_5c = 1;
      }
      iVar12 = FUN_0007bde0();
      if (iVar12 == 0) {
        if (*param_1 != 0) {
          FUN_00057e80();
        }
        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {
          if ((int)local_58 < (int)local_4c) {
            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /
                     ((int)local_4c / (int)local_58);
            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);
            if (uVar5 + 1 == uVar10) {
              uVar10 = uVar5;
            }
            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;
            piVar3 = *(int **)(local_40 + 0x3c);
            uVar5 = *(uint *)(local_40 + 0x18);
LAB_00084096:
            do {
              if (uVar5 < uVar10) {
LAB_00084288:
                iVar12 = *(int *)(local_40 + 0x28);
                if (iVar12 == 0) {
                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))
                  goto LAB_00084446;
                  local_3c = (uint)lVar1;
                  local_38 = (int)((ulonglong)lVar1 >> 0x20);
                  if (*(byte *)(local_40 + 0x10) < 3) {
                    local_4c = local_4c + DAT_00106358;
                    local_54 = (int)local_4c >> 0x1f;
                    if (lVar1 < (int)local_4c) {
                      local_4c = local_3c;
                      local_54 = local_38;
                    }
                    local_34 = DAT_00106358 + local_58;
                    local_30 = (int)local_34 >> 0x1f;
                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))
                    goto LAB_0008434c;
                  }
                  else {
                    iVar12 = FUN_00082f70();
                    local_4c = local_4c + DAT_00106358;
                    local_54 = (int)local_4c >> 0x1f;
                    if (lVar1 < (int)local_4c) {
                      local_4c = local_3c;
                      local_54 = local_38;
                    }
                    local_34 = DAT_00106358 + local_58;
                    local_30 = (int)local_34 >> 0x1f;
                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))
                        ) || (iVar12 != 0)) goto LAB_00084344;
                  }
                  goto LAB_00084480;
                }
                break;
              }
              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);
              uVar13 = uVar10;
              if (uVar6 + 1 == uVar10) {
                uVar13 = uVar6 + 2;
                if (uVar5 < uVar13) goto LAB_00084288;
                if (uVar13 == uVar10) {
                  do {
                    /* WARNING: Do nothing block with infinite loop */
                  } while( true );
                }
              }
              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);
              if (iVar12 != 0) break;
              iVar12 = FUN_00076180();
              if (local_2c == 0) {
                uVar10 = uVar13 + 1;
                if (iVar12 != 0) break;
                goto LAB_00084096;
              }
              uVar10 = uVar13 + 1;
              FUN_0001f280();
            } while (iVar12 == 0);
          }
          else {
            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;
            iVar12 = *(int *)(local_40 + 0x28);
            if (iVar12 == 0) {
              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {
                if (2 < *(byte *)(local_40 + 0x10)) {
                  iVar12 = FUN_00082f70();
                  goto LAB_00084248;
                }
                goto LAB_00084250;
              }
LAB_00084446:
              iVar12 = 10;
              goto LAB_00083fad;
            }
          }
        }
      }
      goto LAB_000840d9;
    }
LAB_00083f72:
    if (iVar12 != 0) goto LAB_00083fca;
    uVar10 = param_1[4];
LAB_00083f79:
    param_1[9] = local_64;
    param_1[8] = (local_64 + 1) - uVar10;
    if (local_64 < uVar10) goto LAB_00083fd3;
    if (param_1[10] == 0) {
      iVar12 = **(int **)(param_1[6] + 4);
      param_1[0xb] = *(int *)(iVar12 + 0x58);
      *(int **)(iVar12 + 0x58) = param_1;
      param_1[10] = 1;
    }
    iVar12 = 0;
LAB_00083fad:
    if (local_50 != 0) goto LAB_00083fb9;
    goto LAB_00083d18;
  }
  sqlite3_mutex_enter(*(undefined4 *)(*param_1 + 0xc));
  iVar12 = param_1[7];
  if ((iVar12 - 5U < 2) || (iVar12 == 0)) {
    iVar9 = param_1[6];
    piVar3 = *(int **)(param_1[1] + 4);
    piVar7 = *(int **)(iVar9 + 4);
    local_5c = *piVar3;
    iVar11 = *piVar7;
    if ((*param_1 != 0) && ((char)piVar7[5] == '\x02')) {
      local_50 = 0;
      iVar12 = 5;
      local_40 = local_5c;
      goto LAB_00083e6b;
    }
    if (*(char *)(iVar9 + 8) == '\0') goto LAB_00083dad;
LAB_00083c9d:
    local_50 = param_1[3];
    if (local_50 == 0) {
LAB_00083e11:
      iVar12 = FUN_0004ad20(0);
      if (iVar12 != 7) {
        iVar4 = param_1[1];
        goto LAB_00083e2f;
      }
      goto LAB_00083e51;
    }
    local_50 = 0;
    uVar10 = local_5c;
    goto LAB_00083cb8;
  }
  goto LAB_00083d1b;
  while( true ) {
    bVar14 = CARRY4(local_34,local_58);
    local_34 = local_34 + local_58;
    bVar2 = 1;
    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14;
    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {
      bVar2 = 0;
    }
    if (!(bool)(iVar12 == 0 & bVar2)) break;
LAB_00084480:
    local_2c = 0;
    uVar15 = 0;
    piVar7 = &local_2c;
    iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f);
    iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15);
    if (iVar12 == 0) {
      iVar12 = (**(code **)(*piVar3 + 0xc))
                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);
      if (local_2c != 0) goto LAB_000844e2;
    }
    else {
      if (local_2c == 0) goto LAB_000840d9;
LAB_000844e2:
      FUN_0001f280();
    }
  }
LAB_00084344:
  if (iVar12 == 0) {
LAB_0008434c:
    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);
    if ((iVar12 == 0) &&
       ((CONCAT44(local_28,local_2c) <= lVar1 ||
        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {
      iVar12 = FUN_000249d0();
LAB_00084248:
      if (iVar12 == 0) {
LAB_00084250:
        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {
          iVar12 = 0x65;
          goto LAB_00083fad;
        }
      }
    }
  }
LAB_000840d9:
  if (local_50 != 0) {
LAB_00083fb9:
    iVar9 = param_1[6];
LAB_00083cf5:
    cVar8 = *(char *)(iVar9 + 8);
    if (cVar8 == '\x02') {
      FUN_000835d0();
      cVar8 = *(char *)(param_1[6] + 8);
    }
    if (cVar8 != '\0') {
      FUN_00080560();
    }
  }
  if (iVar12 == 0xc0a) {
    iVar12 = 7;
  }
LAB_00083d18:
  param_1[7] = iVar12;
LAB_00083d1b:
  if (*param_1 != 0) {
    sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc));
  }
LAB_00083d33:
  if (*(char *)(param_1[6] + 9) != '\0') {
    piVar3 = (int *)(param_1[6] + 0xc);
    *piVar3 = *piVar3 + -1;
    if (*piVar3 == 0) {
      FUN_00024a20();
    }
  }
  sqlite3_mutex_leave(*(undefined4 *)(param_1[5] + 0xc));
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000d1450();
  }
  return iVar12;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x0001ddf0
ADD EBX,0x823f7
SUB ESP,0x68
MOV ESI,dword ptr [ESP + 0x7c]
MOV dword ptr [ESP + 0x10],EBX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x58],EAX
XOR EAX,EAX
MOV EAX,dword ptr [ESI + 0x14]
PUSH dword ptr [EAX + 0xc]
CALL 0x000168d0
MOV EAX,dword ptr [ESI + 0x18]
ADD ESP,0x10
CMP byte ptr [EAX + 0x9],0x0
JNZ 0x00083df0
MOV EAX,dword ptr [ESI]
TEST EAX,EAX
JZ 0x00083d80
SUB ESP,0xc
PUSH dword ptr [EAX + 0xc]
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x000168d0
MOV EDI,dword ptr [ESI + 0x1c]
ADD ESP,0x10
LEA EAX,[EDI + -0x5]
CMP EAX,0x1
JBE 0x00083c70
TEST EDI,EDI
JNZ 0x00083d1b
MOV EDI,dword ptr [ESI + 0x4]
MOV EBX,dword ptr [ESI + 0x18]
CMP dword ptr [ESI],0x0
MOV EAX,dword ptr [EDI + 0x4]
MOV ECX,dword ptr [EBX + 0x4]
MOV EDX,dword ptr [EAX]
MOV EBP,dword ptr [ECX]
MOV dword ptr [ESP + 0x10],EDX
JZ 0x00083c93
CMP byte ptr [ECX + 0x14],0x2
JZ 0x00084130
CMP byte ptr [EBX + 0x8],0x0
JZ 0x00083dad
MOV EDX,dword ptr [ESI + 0xc]
TEST EDX,EDX
MOV dword ptr [ESP + 0x1c],EDX
JZ 0x00083e11
MOV EDI,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x1c],0x0
MOV EAX,dword ptr [EAX + 0x24]
MOV EDX,dword ptr [ECX + 0x24]
MOV ECX,dword ptr [ECX + 0x30]
MOV dword ptr [ESP + 0x20],EAX
MOVZX EAX,byte ptr [EDI + 0x5]
MOV dword ptr [ESP + 0x14],EDX
MOV dword ptr [ESP + 0x8],ECX
CMP AL,0x5
SETZ byte ptr [ESP + 0x28]
JNZ 0x000845ec
CMP dword ptr [ESP + 0x20],EDX
JZ 0x00084150
MOV EAX,dword ptr [ESP + 0x1c]
MOV EDI,0x8
TEST EAX,EAX
JZ 0x00083d18
MOVZX EDX,byte ptr [EBX + 0x8]
CMP DL,0x2
JZ 0x00084270
TEST DL,DL
JNZ 0x000841d0
CMP EDI,0xc0a
MOV EAX,0x7
CMOVZ EDI,EAX
MOV dword ptr [ESI + 0x1c],EDI
MOV EAX,dword ptr [ESI]
TEST EAX,EAX
JZ 0x00083d33
SUB ESP,0xc
PUSH dword ptr [EAX + 0xc]
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x00016830
ADD ESP,0x10
MOV EAX,dword ptr [ESI + 0x18]
CMP byte ptr [EAX + 0x9],0x0
JZ 0x00083d50
SUB dword ptr [EAX + 0xc],0x1
JNZ 0x00083d50
LEA EDX,[EAX + 0xa]
MOV EAX,dword ptr [EAX + 0x4]
CALL 0x00024a20
LEA ESI,[ESI]
MOV EAX,dword ptr [ESI + 0x14]
SUB ESP,0xc
PUSH dword ptr [EAX + 0xc]
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x00016830
ADD ESP,0x10
MOV EAX,EDI
MOV EDI,dword ptr [ESP + 0x4c]
XOR EDI,dword ptr GS:[0x14]
JNZ 0x000845ca
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,dword ptr [ESI + 0x1c]
LEA EAX,[EDI + -0x5]
CMP EAX,0x1
JBE 0x00083d8f
TEST EDI,EDI
JNZ 0x00083d33
MOV EDI,dword ptr [ESI + 0x4]
MOV EBX,dword ptr [ESI + 0x18]
MOV EAX,dword ptr [EDI + 0x4]
CMP byte ptr [EBX + 0x8],0x0
MOV ECX,dword ptr [EBX + 0x4]
MOV EDX,dword ptr [EAX]
MOV EBP,dword ptr [ECX]
MOV dword ptr [ESP + 0x10],EDX
JNZ 0x00083c9d
XOR ECX,ECX
XOR EDX,EDX
MOV EAX,EBX
CALL 0x00080d90
MOV EDI,EAX
OR EAX,dword ptr [ESI + 0xc]
JZ 0x00083e00
TEST EDI,EDI
MOV EAX,dword ptr [ESI + 0x4]
JZ 0x000845cf
MOV EDX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX + 0x4]
MOV EBX,dword ptr [ESI + 0x18]
MOV dword ptr [ESP + 0x1c],0x1
MOV dword ptr [ESP + 0x2c],EDX
MOV EDX,dword ptr [EAX]
MOV ECX,dword ptr [EBX + 0x4]
MOV dword ptr [ESP + 0x10],EDX
JMP 0x00083e6b
CALL 0x00024b20
JMP 0x00083c41
MOV EDX,dword ptr [ESI + 0x18]
MOV EDI,dword ptr [ESI + 0x4]
MOV dword ptr [ESP + 0x1c],0x1
MOV ECX,dword ptr [EDX + 0x4]
SUB ESP,0xc
MOV EDX,dword ptr [ECX + 0x24]
MOV EAX,EDI
PUSH 0x0
XOR ECX,ECX
CALL 0x0004ad20
ADD ESP,0x10
CMP EAX,0x7
MOV EDI,EAX
JZ 0x00083e51
MOV EAX,dword ptr [ESI + 0x4]
MOV EDI,dword ptr [ESI + 0xc]
TEST EDI,EDI
JNZ 0x000845dc
LEA ECX,[ESI + 0x8]
MOV EDX,0x2
CALL 0x00080d90
TEST EAX,EAX
MOV EDI,EAX
JZ 0x000843b8
MOV EAX,dword ptr [ESI + 0x4]
MOV EDX,dword ptr [ESP + 0x10]
MOV EBX,dword ptr [ESI + 0x18]
MOV EAX,dword ptr [EAX + 0x4]
MOV ECX,dword ptr [EBX + 0x4]
MOV dword ptr [ESP + 0x2c],EDX
MOV EDX,dword ptr [EAX]
MOV dword ptr [ESP + 0x10],EDX
MOV EAX,dword ptr [EAX + 0x24]
MOV EDX,dword ptr [ECX + 0x24]
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x14],EDX
CMP byte ptr [EAX + 0x5],0x5
MOV EAX,dword ptr [ECX + 0x30]
MOV dword ptr [ESP + 0x8],EAX
SETZ byte ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x74]
TEST EAX,EAX
JZ 0x00083f72
MOV ECX,dword ptr [ESI + 0x10]
CMP ECX,dword ptr [ESP + 0x8]
JA 0x00083f72
TEST EDI,EDI
JNZ 0x00083fca
LEA EAX,[ESP + 0x40]
XOR EBX,EBX
MOV EDI,EBX
MOV EBX,ECX
MOV ECX,EDX
MOV dword ptr [ESP + 0x10],EAX
LEA EAX,[ESI + 0x18]
MOV dword ptr [ESP + 0x18],EAX
JMP 0x00083f01
MOV EBX,dword ptr [ESI + 0x10]
ADD EBX,0x1
ADD EDI,0x1
CMP EDI,dword ptr [ESP + 0x74]
MOV dword ptr [ESI + 0x10],EBX
JNC 0x00083f70
CMP EBX,dword ptr [ESP + 0x8]
JA 0x00083f70
TEST EDX,EDX
JNZ 0x00083fc8
MOV EAX,dword ptr [ESI + 0x18]
MOV EAX,dword ptr [EAX + 0x4]
MOV ECX,dword ptr [EAX + 0x24]
MOV EAX,dword ptr [ESP + 0x4]
XOR EDX,EDX
MOV EAX,dword ptr [EAX + 0x358]
DIV ECX
ADD EAX,0x1
CMP EAX,EBX
JZ 0x00084128
PUSH 0x2
PUSH dword ptr [ESP + 0x14]
PUSH EBX
PUSH EBP
CALL dword ptr [EBP + 0xc8]
ADD ESP,0x10
TEST EAX,EAX
MOV EDX,EAX
JNZ 0x00083ed0
SUB ESP,0x8
LEA EAX,[ESI + 0x4]
MOV ECX,EBX
PUSH 0x0
MOV EDX,dword ptr [ESP + 0x4c]
PUSH dword ptr [EDX + 0x4]
MOV EDX,dword ptr [ESP + 0x28]
CALL 0x0007c390
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x50]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00083ed0
MOV dword ptr [ESP + 0x24],EDX
CALL 0x0001f280
MOV EDX,dword ptr [ESP + 0x24]
JMP 0x00083ed0
MOV EDI,EDX
TEST EDI,EDI
JNZ 0x00083fca
MOV EAX,dword ptr [ESI + 0x10]
MOV ECX,dword ptr [ESP + 0x8]
LEA EDX,[ECX + 0x1]
MOV dword ptr [ESI + 0x24],ECX
SUB EDX,EAX
CMP ECX,EAX
MOV dword ptr [ESI + 0x20],EDX
JC 0x00083fd3
MOV EBX,dword ptr [ESI + 0x28]
TEST EBX,EBX
JNZ 0x00083fab
MOV EBX,dword ptr [ESI + 0x18]
MOV EAX,dword ptr [EBX + 0x4]
MOV EAX,dword ptr [EAX]
MOV EDX,dword ptr [EAX + 0x58]
MOV dword ptr [ESI + 0x2c],EDX
MOV dword ptr [EAX + 0x58],ESI
MOV dword ptr [ESI + 0x28],0x1
XOR EDI,EDI
MOV EDX,dword ptr [ESP + 0x1c]
TEST EDX,EDX
JZ 0x00083d18
MOV EBX,dword ptr [ESI + 0x18]
JMP 0x00083cf5
MOV EDI,EDX
CMP EDI,0x65
JNZ 0x000840d9
MOV EAX,dword ptr [ESP + 0x8]
MOV EBX,dword ptr [ESI + 0x4]
TEST EAX,EAX
MOV dword ptr [ESP + 0x10],EAX
JZ 0x00084180
MOV EAX,dword ptr [ESI + 0x8]
MOV EDX,0x1
LEA ECX,[EAX + 0x1]
MOV EAX,EBX
CALL 0x0007bde0
TEST EAX,EAX
MOV EDI,EAX
JNZ 0x000840d9
MOV EAX,dword ptr [ESI]
TEST EAX,EAX
JZ 0x0008400d
CALL 0x00057e80
CMP byte ptr [ESP + 0x28],0x0
JNZ 0x0008440c
MOV EDI,dword ptr [ESP + 0x20]
CMP dword ptr [ESP + 0x14],EDI
JGE 0x000841f0
MOV EAX,EDI
MOV EDI,dword ptr [ESP + 0x14]
CDQ
IDIV EDI
MOV dword ptr [ESP + 0x8],EDI
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x10]
LEA EBX,[EAX + ECX*0x1 + -0x1]
MOV EAX,EBX
CDQ
IDIV ECX
MOV EDX,dword ptr [ESP + 0x4]
MOV EBX,EAX
MOV EAX,dword ptr [ESI + 0x4]
MOV ECX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [EDX + 0x358]
XOR EDX,EDX
DIV dword ptr [ECX + 0x24]
MOV ECX,EDI
LEA EDX,[EAX + 0x1]
CMP EDX,EBX
CMOVZ EBX,EAX
MOV EAX,dword ptr [ESP + 0x10]
SAR ECX,0x1f
MOV dword ptr [ESP + 0xc],ECX
IMUL EDI
MOV dword ptr [ESP + 0x30],EAX
MOV EAX,dword ptr [ESP + 0x2c]
MOV dword ptr [ESP + 0x34],EDX
MOV EDI,dword ptr [EAX + 0x3c]
MOV dword ptr [ESP + 0x24],EDI
MOV EDI,dword ptr [EAX + 0x18]
MOV dword ptr [ESP + 0x10],EDI
LEA EDI,[ESP + 0x40]
MOV dword ptr [ESP + 0x18],EDI
MOV EDI,EBP
MOV EBP,EAX
CMP dword ptr [ESP + 0x10],EBX
JC 0x00084288
MOV EAX,dword ptr [ESI + 0x4]
XOR EDX,EDX
MOV ECX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [EAX + 0x358]
DIV dword ptr [ECX + 0x24]
LEA EDX,[EAX + 0x1]
CMP EDX,EBX
JZ 0x000843e0
PUSH 0x0
PUSH dword ptr [ESP + 0x1c]
PUSH EBX
PUSH EBP
CALL dword ptr [EBP + 0xc8]
ADD ESP,0x10
TEST EAX,EAX
MOV EDX,EAX
JZ 0x000840f0
MOV EDI,EDX
MOV ECX,dword ptr [ESP + 0x1c]
TEST ECX,ECX
JZ 0x00083d0a
JMP 0x00083fb9
MOV EAX,dword ptr [ESP + 0x40]
CALL 0x00076180
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x40]
TEST EAX,EAX
JZ 0x000841e0
MOV dword ptr [ESP + 0x28],EDX
ADD EBX,0x1
CALL 0x0001f280
MOV EDX,dword ptr [ESP + 0x28]
TEST EDX,EDX
JZ 0x00084096
JMP 0x000840d7
XOR EDX,EDX
JMP 0x00083ed3
MOV dword ptr [ESP + 0x2c],EDX
MOV dword ptr [ESP + 0x1c],0x0
MOV EDI,0x5
JMP 0x00083e6b
MOV EBX,dword ptr [ESP + 0x74]
MOV EAX,dword ptr [ESI + 0x10]
TEST EBX,EBX
MOV ECX,EAX
JZ 0x000845b8
CMP dword ptr [ESP + 0x8],EAX
JC 0x000845b8
MOV EAX,dword ptr [ESP + 0x10]
MOV byte ptr [ESP + 0x28],0x1
MOV dword ptr [ESP + 0x2c],EAX
JMP 0x00083eae
CMP byte ptr [EBX + 0x9],0x0
JNZ 0x00084400
MOV EAX,dword ptr [EBX + 0x4]
MOV dword ptr [EAX + 0x30],0x0
CALL 0x000761e0
CMP byte ptr [EBX + 0x9],0x0
MOV EDI,EAX
JZ 0x000841ab
SUB dword ptr [EBX + 0xc],0x1
JZ 0x000843d2
TEST EDI,EDI
JZ 0x000841b8
CMP EDI,0x65
JNZ 0x000840d9
MOV EBX,dword ptr [ESI + 0x4]
MOV dword ptr [ESP + 0x10],0x1
JMP 0x00083fe6
XOR EDX,EDX
MOV EAX,EBX
CALL 0x00080560
JMP 0x00083d0a
ADD EBX,0x1
TEST EDX,EDX
JZ 0x00084096
JMP 0x000840d7
MOV EAX,dword ptr [ESP + 0x14]
MOV EDI,dword ptr [ESP + 0x2c]
CDQ
IDIV dword ptr [ESP + 0x20]
IMUL EAX,dword ptr [ESP + 0x10]
MOV dword ptr [EDI + 0x18],EAX
MOV EDI,dword ptr [EDI + 0x28]
TEST EDI,EDI
JNZ 0x000840d9
MOV EAX,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [EAX + 0x454]
TEST EAX,EAX
JZ 0x00084233
SUB ESP,0xc
PUSH 0x190
CALL EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00084446
MOV EAX,dword ptr [ESP + 0x2c]
CMP byte ptr [EAX + 0x10],0x2
JBE 0x00084250
XOR ECX,ECX
XOR EDX,EDX
CALL 0x00082f70
MOV EDI,EAX
TEST EDI,EDI
JNZ 0x000840d9
MOV EAX,dword ptr [ESI + 0x4]
CMP byte ptr [EAX + 0x8],0x0
JNZ 0x00084430
MOV EDI,0x65
JMP 0x00083fad
XOR EDX,EDX
MOV EAX,EBX
CALL 0x000835d0
MOV EBX,dword ptr [ESI + 0x18]
MOVZX EDX,byte ptr [EBX + 0x8]
JMP 0x00083d02
MOV EAX,dword ptr [ESP + 0x2c]
MOV EBP,EDI
MOV EDI,dword ptr [EAX + 0x28]
TEST EDI,EDI
JNZ 0x000840d9
MOV EAX,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [EAX + 0x454]
TEST EAX,EAX
JZ 0x000842bc
SUB ESP,0xc
PUSH 0x190
CALL EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00084446
MOV EAX,dword ptr [ESP + 0x2c]
CMP byte ptr [EAX + 0x10],0x2
JBE 0x00084543
MOV ECX,0x1
XOR EDX,EDX
CALL 0x00082f70
MOV EDI,EAX
MOV EAX,dword ptr [ESP + 0x4]
MOV ECX,dword ptr [EAX + 0x358]
MOV EAX,dword ptr [ESP + 0x20]
ADD EAX,ECX
MOV dword ptr [ESP + 0x10],ECX
MOV ECX,dword ptr [ESP + 0x30]
MOV EBX,EAX
MOV dword ptr [ESP + 0x20],EAX
SAR EBX,0x1f
MOV EAX,EBX
MOV dword ptr [ESP + 0x18],EBX
MOV EBX,dword ptr [ESP + 0x34]
CMP EAX,EBX
JL 0x0008431f
JG 0x0008430f
CMP dword ptr [ESP + 0x20],ECX
JBE 0x0008431f
MOV ECX,dword ptr [ESP + 0x30]
MOV EBX,dword ptr [ESP + 0x34]
MOV dword ptr [ESP + 0x20],ECX
MOV dword ptr [ESP + 0x18],EBX
MOV EDX,dword ptr [ESP + 0x10]
ADD EDX,dword ptr [ESP + 0x14]
MOV EBX,EDX
MOV dword ptr [ESP + 0x38],EDX
SAR EBX,0x1f
CMP dword ptr [ESP + 0x18],EBX
MOV dword ptr [ESP + 0x3c],EBX
JG 0x0008445a
JGE 0x00084450
TEST EDI,EDI
JNZ 0x000840d9
SUB ESP,0x8
MOV EDI,dword ptr [ESP + 0x2c]
LEA EDX,[ESP + 0x48]
MOV EAX,dword ptr [EDI]
PUSH EDX
PUSH EDI
CALL dword ptr [EAX + 0x18]
ADD ESP,0x10
TEST EAX,EAX
MOV EDI,EAX
JNZ 0x000840d9
MOV EDX,dword ptr [ESP + 0x34]
CMP EDX,dword ptr [ESP + 0x44]
MOV EAX,dword ptr [ESP + 0x30]
JL 0x00084381
JG 0x000843a3
CMP EAX,dword ptr [ESP + 0x40]
JNC 0x000843a3
SUB ESP,0x4
MOV EDI,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [EDI]
PUSH dword ptr [ESP + 0x38]
PUSH dword ptr [ESP + 0x38]
PUSH EDI
CALL dword ptr [EAX + 0x10]
ADD ESP,0x10
TEST EAX,EAX
MOV EDI,EAX
JNZ 0x000840d9
MOV EAX,dword ptr [ESP + 0x2c]
XOR EDX,EDX
CALL 0x000249d0
MOV EDI,EAX
JMP 0x00084248
MOV EAX,dword ptr [ESI + 0x4]
MOV EBX,dword ptr [ESI + 0x18]
MOV dword ptr [ESI + 0xc],0x1
MOV EAX,dword ptr [EAX + 0x4]
MOV ECX,dword ptr [EBX + 0x4]
MOV EDI,dword ptr [EAX]
JMP 0x00083cb8
MOV EAX,EBX
CALL 0x00024b40
JMP 0x000841ab
ADD EAX,0x2
CMP dword ptr [ESP + 0x10],EAX
JC 0x00084288
CMP EAX,EBX
JZ 0x000843f8
MOV EBX,EAX
JMP 0x000840c0
JMP 0x000843f8
MOV EAX,EBX
CALL 0x00024b20
JMP 0x0008418a
MOV EAX,dword ptr [ESI + 0x4]
MOV EDX,0x2
CALL 0x00081680
TEST EAX,EAX
MOV EDI,EAX
JZ 0x00084018
JMP 0x000840d9
XOR EDX,EDX
CALL 0x00080560
TEST EAX,EAX
MOV EDI,EAX
JZ 0x0008425d
JMP 0x000840d9
MOV EDI,0xa
JMP 0x00083fad
CMP dword ptr [ESP + 0x20],EDX
JBE 0x00084344
TEST EDI,EDI
JNZ 0x00084344
LEA EAX,[ESP + 0x40]
MOV dword ptr [ESP + 0x28],ESI
MOV EDI,dword ptr [ESP + 0x3c]
MOV ESI,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x10],EAX
LEA ESI,[ESI]
LEA EDI,[EDI]
MOV dword ptr [ESP + 0x40],0x0
PUSH 0x0
PUSH dword ptr [ESP + 0x14]
SUB ESP,0x8
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x1c]
PUSH EDI
PUSH ESI
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x000d0ac0
ADD ESP,0x18
ADD EAX,0x1
PUSH EAX
PUSH EBP
CALL dword ptr [EBP + 0xc8]
ADD ESP,0x10
TEST EAX,EAX
MOV EBX,EAX
JNZ 0x00084530
SUB ESP,0xc
MOV ECX,dword ptr [ESP + 0x30]
MOV EAX,dword ptr [ECX]
PUSH EDI
PUSH ESI
PUSH dword ptr [ESP + 0x28]
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
JZ 0x000844e7
CALL 0x0001f280
ADD ESI,dword ptr [ESP + 0x8]
MOV EAX,0x1
ADC EDI,dword ptr [ESP + 0xc]
TEST EBX,EBX
SETZ DL
CMP EDI,dword ptr [ESP + 0x18]
JL 0x00084510
JG 0x00084528
CMP ESI,dword ptr [ESP + 0x20]
JNC 0x00084528
MOV ESI,ESI
LEA EDI,[EDI]
TEST DL,AL
JNZ 0x00084480
MOV EDI,EBX
MOV ESI,dword ptr [ESP + 0x28]
JMP 0x00084344
XOR EAX,EAX
JMP 0x00084510
MOV EAX,dword ptr [ESP + 0x40]
TEST EAX,EAX
JNZ 0x000844e2
MOV EDI,EBX
MOV ESI,dword ptr [ESP + 0x28]
JMP 0x000840d9
MOV EAX,dword ptr [ESP + 0x4]
MOV ECX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EAX + 0x358]
ADD ECX,EAX
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,ECX
MOV dword ptr [ESP + 0x20],ECX
CDQ
MOV EAX,dword ptr [ESP + 0x30]
MOV EDI,EDX
MOV dword ptr [ESP + 0x18],EDX
MOV EDX,dword ptr [ESP + 0x34]
CMP EDI,EDX
JL 0x00084586
JG 0x00084576
CMP ECX,EAX
JBE 0x00084586
MOV EAX,dword ptr [ESP + 0x30]
MOV EDX,dword ptr [ESP + 0x34]
MOV dword ptr [ESP + 0x20],EAX
MOV dword ptr [ESP + 0x18],EDX
MOV EBX,dword ptr [ESP + 0x10]
ADD EBX,dword ptr [ESP + 0x14]
MOV EAX,EBX
MOV dword ptr [ESP + 0x38],EBX
CDQ
CMP dword ptr [ESP + 0x18],EDX
MOV dword ptr [ESP + 0x3c],EDX
JG 0x00084462
JL 0x0008434c
CMP dword ptr [ESP + 0x20],EBX
JA 0x00084462
JMP 0x0008434c
MOV EDI,dword ptr [ESP + 0x10]
MOV byte ptr [ESP + 0x28],0x1
MOV dword ptr [ESP + 0x2c],EDI
JMP 0x00083f79
CALL 0x000d1450
MOV dword ptr [ESP + 0x1c],0x1
JMP 0x00083e2f
MOV EBX,dword ptr [ESI + 0x18]
MOV EAX,dword ptr [EAX + 0x4]
MOV ECX,dword ptr [EBX + 0x4]
MOV EDI,dword ptr [EAX]
JMP 0x00083cb8
MOV EAX,dword ptr [ESP + 0x10]
XOR EDI,EDI
MOV dword ptr [ESP + 0x2c],EAX
JMP 0x00083e8d
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Removing unreachable block (ram,0x00084572) */\n/* WARNING: Removing unreachable block (ram,0x0008437b) */\n/* WARNING: Removing unreachable block (ram,0x00084309) */\n\nint sqlite3_backup_step(int *param_1,uint param_2)\n\n{\n  longlong lVar1;\n  byte bVar2;\n  int *piVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  int *piVar7;\n  char cVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  int in_GS_OFFSET;\n  bool bVar14;\n  undefined4 uVar15;\n  uint local_64;\n  uint local_5c;\n  uint local_58;\n  int local_54;\n  int local_50;\n  uint local_4c;\n  int local_40;\n  uint local_3c;\n  int local_38;\n  uint local_34;\n  int local_30;\n  int local_2c;\n  undefined4 local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x83c09;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  sqlite3_mutex_enter(*(undefined4 *)(param_1[5] + 0xc));\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    FUN_00024b20();\n  }\n  if (*param_1 == 0) {\n    iVar12 = param_1[7];\n    if ((1 < iVar12 - 5U) && (iVar12 != 0)) goto LAB_00083d33;\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if (*(char *)(iVar9 + 8) != '\0') goto LAB_00083c9d;\nLAB_00083dad:\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0 && param_1[3] == 0) {\n      local_50 = 1;\n      goto LAB_00083e11;\n    }\n    iVar4 = param_1[1];\n    if (iVar12 != 0) {\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }\n    local_50 = 1;\nLAB_00083e2f:\n    if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0) {\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }\nLAB_00083e51:\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(param_1[6] + 4);\n    local_40 = local_5c;\n    local_5c = *piVar3;\nLAB_00083e6b:\n    local_4c = piVar3[9];\n    local_58 = piVar7[9];\n    bVar14 = *(char *)(local_5c + 5) == '\x05';\n    local_64 = piVar7[0xc];\nLAB_00083e8d:\n    if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }\nLAB_00083f72:\n    if (iVar12 != 0) goto LAB_00083fca;\n    uVar10 = param_1[4];\nLAB_00083f79:\n    param_1[9] = local_64;\n    param_1[8] = (local_64 + 1) - uVar10;\n    if (local_64 < uVar10) goto LAB_00083fd3;\n    if (param_1[10] == 0) {\n      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 0x58) = param_1;\n      param_1[10] = 1;\n    }\n    iVar12 = 0;\nLAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;\n    goto LAB_00083d18;\n  }\n  sqlite3_mutex_enter(*(undefined4 *)(*param_1 + 0xc));\n  iVar12 = param_1[7];\n  if ((iVar12 - 5U < 2) || (iVar12 == 0)) {\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if ((*param_1 != 0) && ((char)piVar7[5] == '\x02')) {\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }\n    if (*(char *)(iVar9 + 8) == '\0') goto LAB_00083dad;\nLAB_00083c9d:\n    local_50 = param_1[3];\n    if (local_50 == 0) {\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }\n    local_50 = 0;\n    uVar10 = local_5c;\n    goto LAB_00083cb8;\n  }\n  goto LAB_00083d1b;\n  while( true ) {\n    bVar14 = CARRY4(local_34,local_58);\n    local_34 = local_34 + local_58;\n    bVar2 = 1;\n    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14;\n    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar2 = 0;\n    }\n    if (!(bool)(iVar12 == 0 & bVar2)) break;\nLAB_00084480:\n    local_2c = 0;\n    uVar15 = 0;\n    piVar7 = &local_2c;\n    iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f);\n    iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15);\n    if (iVar12 == 0) {\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }\n  }\nLAB_00084344:\n  if (iVar12 == 0) {\nLAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);\n    if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }\nLAB_000840d9:\n  if (local_50 != 0) {\nLAB_00083fb9:\n    iVar9 = param_1[6];\nLAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);\n    if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar8 != '\0') {\n      FUN_00080560();\n    }\n  }\n  if (iVar12 == 0xc0a) {\n    iVar12 = 7;\n  }\nLAB_00083d18:\n  param_1[7] = iVar12;\nLAB_00083d1b:\n  if (*param_1 != 0) {\n    sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc));\n  }\nLAB_00083d33:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar3 = (int *)(param_1[6] + 0xc);\n    *piVar3 = *piVar3 + -1;\n    if (*piVar3 == 0) {\n      FUN_00024a20();\n    }\n  }\n  sqlite3_mutex_leave(*(undefined4 *)(param_1[5] + 0xc));\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000d1450();\n  }\n  return iVar12;\n}\n\n" comment comment comment comment (function_definition "int sqlite3_backup_step(int *param_1,uint param_2)\n\n{\n  longlong lVar1;\n  byte bVar2;\n  int *piVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  int *piVar7;\n  char cVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  int in_GS_OFFSET;\n  bool bVar14;\n  undefined4 uVar15;\n  uint local_64;\n  uint local_5c;\n  uint local_58;\n  int local_54;\n  int local_50;\n  uint local_4c;\n  int local_40;\n  uint local_3c;\n  int local_38;\n  uint local_34;\n  int local_30;\n  int local_2c;\n  undefined4 local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x83c09;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  sqlite3_mutex_enter(*(undefined4 *)(param_1[5] + 0xc));\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    FUN_00024b20();\n  }\n  if (*param_1 == 0) {\n    iVar12 = param_1[7];\n    if ((1 < iVar12 - 5U) && (iVar12 != 0)) goto LAB_00083d33;\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if (*(char *)(iVar9 + 8) != '\0') goto LAB_00083c9d;\nLAB_00083dad:\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0 && param_1[3] == 0) {\n      local_50 = 1;\n      goto LAB_00083e11;\n    }\n    iVar4 = param_1[1];\n    if (iVar12 != 0) {\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }\n    local_50 = 1;\nLAB_00083e2f:\n    if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0) {\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }\nLAB_00083e51:\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(param_1[6] + 4);\n    local_40 = local_5c;\n    local_5c = *piVar3;\nLAB_00083e6b:\n    local_4c = piVar3[9];\n    local_58 = piVar7[9];\n    bVar14 = *(char *)(local_5c + 5) == '\x05';\n    local_64 = piVar7[0xc];\nLAB_00083e8d:\n    if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }\nLAB_00083f72:\n    if (iVar12 != 0) goto LAB_00083fca;\n    uVar10 = param_1[4];\nLAB_00083f79:\n    param_1[9] = local_64;\n    param_1[8] = (local_64 + 1) - uVar10;\n    if (local_64 < uVar10) goto LAB_00083fd3;\n    if (param_1[10] == 0) {\n      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 0x58) = param_1;\n      param_1[10] = 1;\n    }\n    iVar12 = 0;\nLAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;\n    goto LAB_00083d18;\n  }\n  sqlite3_mutex_enter(*(undefined4 *)(*param_1 + 0xc));\n  iVar12 = param_1[7];\n  if ((iVar12 - 5U < 2) || (iVar12 == 0)) {\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if ((*param_1 != 0) && ((char)piVar7[5] == '\x02')) {\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }\n    if (*(char *)(iVar9 + 8) == '\0') goto LAB_00083dad;\nLAB_00083c9d:\n    local_50 = param_1[3];\n    if (local_50 == 0) {\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }\n    local_50 = 0;\n    uVar10 = local_5c;\n    goto LAB_00083cb8;\n  }\n  goto LAB_00083d1b;\n  while( true ) {\n    bVar14 = CARRY4(local_34,local_58);\n    local_34 = local_34 + local_58;\n    bVar2 = 1;\n    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14;\n    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar2 = 0;\n    }\n    if (!(bool)(iVar12 == 0 & bVar2)) break;\nLAB_00084480:\n    local_2c = 0;\n    uVar15 = 0;\n    piVar7 = &local_2c;\n    iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f);\n    iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15);\n    if (iVar12 == 0) {\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }\n  }\nLAB_00084344:\n  if (iVar12 == 0) {\nLAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);\n    if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }\nLAB_000840d9:\n  if (local_50 != 0) {\nLAB_00083fb9:\n    iVar9 = param_1[6];\nLAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);\n    if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar8 != '\0') {\n      FUN_00080560();\n    }\n  }\n  if (iVar12 == 0xc0a) {\n    iVar12 = 7;\n  }\nLAB_00083d18:\n  param_1[7] = iVar12;\nLAB_00083d1b:\n  if (*param_1 != 0) {\n    sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc));\n  }\nLAB_00083d33:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar3 = (int *)(param_1[6] + 0xc);\n    *piVar3 = *piVar3 + -1;\n    if (*piVar3 == 0) {\n      FUN_00024a20();\n    }\n  }\n  sqlite3_mutex_leave(*(undefined4 *)(param_1[5] + 0xc));\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000d1450();\n  }\n  return iVar12;\n}" primitive_type (function_declarator "sqlite3_backup_step(int *param_1,uint param_2)" identifier (parameter_list "(int *param_1,uint param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  longlong lVar1;\n  byte bVar2;\n  int *piVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  int *piVar7;\n  char cVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  int in_GS_OFFSET;\n  bool bVar14;\n  undefined4 uVar15;\n  uint local_64;\n  uint local_5c;\n  uint local_58;\n  int local_54;\n  int local_50;\n  uint local_4c;\n  int local_40;\n  uint local_3c;\n  int local_38;\n  uint local_34;\n  int local_30;\n  int local_2c;\n  undefined4 local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x83c09;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  sqlite3_mutex_enter(*(undefined4 *)(param_1[5] + 0xc));\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    FUN_00024b20();\n  }\n  if (*param_1 == 0) {\n    iVar12 = param_1[7];\n    if ((1 < iVar12 - 5U) && (iVar12 != 0)) goto LAB_00083d33;\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if (*(char *)(iVar9 + 8) != '\0') goto LAB_00083c9d;\nLAB_00083dad:\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0 && param_1[3] == 0) {\n      local_50 = 1;\n      goto LAB_00083e11;\n    }\n    iVar4 = param_1[1];\n    if (iVar12 != 0) {\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }\n    local_50 = 1;\nLAB_00083e2f:\n    if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0) {\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }\nLAB_00083e51:\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(param_1[6] + 4);\n    local_40 = local_5c;\n    local_5c = *piVar3;\nLAB_00083e6b:\n    local_4c = piVar3[9];\n    local_58 = piVar7[9];\n    bVar14 = *(char *)(local_5c + 5) == '\x05';\n    local_64 = piVar7[0xc];\nLAB_00083e8d:\n    if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }\nLAB_00083f72:\n    if (iVar12 != 0) goto LAB_00083fca;\n    uVar10 = param_1[4];\nLAB_00083f79:\n    param_1[9] = local_64;\n    param_1[8] = (local_64 + 1) - uVar10;\n    if (local_64 < uVar10) goto LAB_00083fd3;\n    if (param_1[10] == 0) {\n      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 0x58) = param_1;\n      param_1[10] = 1;\n    }\n    iVar12 = 0;\nLAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;\n    goto LAB_00083d18;\n  }\n  sqlite3_mutex_enter(*(undefined4 *)(*param_1 + 0xc));\n  iVar12 = param_1[7];\n  if ((iVar12 - 5U < 2) || (iVar12 == 0)) {\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if ((*param_1 != 0) && ((char)piVar7[5] == '\x02')) {\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }\n    if (*(char *)(iVar9 + 8) == '\0') goto LAB_00083dad;\nLAB_00083c9d:\n    local_50 = param_1[3];\n    if (local_50 == 0) {\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }\n    local_50 = 0;\n    uVar10 = local_5c;\n    goto LAB_00083cb8;\n  }\n  goto LAB_00083d1b;\n  while( true ) {\n    bVar14 = CARRY4(local_34,local_58);\n    local_34 = local_34 + local_58;\n    bVar2 = 1;\n    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14;\n    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar2 = 0;\n    }\n    if (!(bool)(iVar12 == 0 & bVar2)) break;\nLAB_00084480:\n    local_2c = 0;\n    uVar15 = 0;\n    piVar7 = &local_2c;\n    iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f);\n    iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15);\n    if (iVar12 == 0) {\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }\n  }\nLAB_00084344:\n  if (iVar12 == 0) {\nLAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);\n    if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }\nLAB_000840d9:\n  if (local_50 != 0) {\nLAB_00083fb9:\n    iVar9 = param_1[6];\nLAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);\n    if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar8 != '\0') {\n      FUN_00080560();\n    }\n  }\n  if (iVar12 == 0xc0a) {\n    iVar12 = 7;\n  }\nLAB_00083d18:\n  param_1[7] = iVar12;\nLAB_00083d1b:\n  if (*param_1 != 0) {\n    sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc));\n  }\nLAB_00083d33:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar3 = (int *)(param_1[6] + 0xc);\n    *piVar3 = *piVar3 + -1;\n    if (*piVar3 == 0) {\n      FUN_00024a20();\n    }\n  }\n  sqlite3_mutex_leave(*(undefined4 *)(param_1[5] + 0xc));\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000d1450();\n  }\n  return iVar12;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "undefined4 uVar15;" type_identifier identifier ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "uint local_58;" type_identifier identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x83c09;" (assignment_expression "uStack_14 = 0x83c09" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "sqlite3_mutex_enter(*(undefined4 *)(param_1[5] + 0xc));" (call_expression "sqlite3_mutex_enter(*(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_00024b20();\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_00024b20();\n  }" { (expression_statement "FUN_00024b20();" (call_expression "FUN_00024b20()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (*param_1 == 0) {\n    iVar12 = param_1[7];\n    if ((1 < iVar12 - 5U) && (iVar12 != 0)) goto LAB_00083d33;\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if (*(char *)(iVar9 + 8) != '\0') goto LAB_00083c9d;\nLAB_00083dad:\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0 && param_1[3] == 0) {\n      local_50 = 1;\n      goto LAB_00083e11;\n    }\n    iVar4 = param_1[1];\n    if (iVar12 != 0) {\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }\n    local_50 = 1;\nLAB_00083e2f:\n    if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0) {\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }\nLAB_00083e51:\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(param_1[6] + 4);\n    local_40 = local_5c;\n    local_5c = *piVar3;\nLAB_00083e6b:\n    local_4c = piVar3[9];\n    local_58 = piVar7[9];\n    bVar14 = *(char *)(local_5c + 5) == '\x05';\n    local_64 = piVar7[0xc];\nLAB_00083e8d:\n    if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }\nLAB_00083f72:\n    if (iVar12 != 0) goto LAB_00083fca;\n    uVar10 = param_1[4];\nLAB_00083f79:\n    param_1[9] = local_64;\n    param_1[8] = (local_64 + 1) - uVar10;\n    if (local_64 < uVar10) goto LAB_00083fd3;\n    if (param_1[10] == 0) {\n      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 0x58) = param_1;\n      param_1[10] = 1;\n    }\n    iVar12 = 0;\nLAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;\n    goto LAB_00083d18;\n  }" if (parenthesized_expression "(*param_1 == 0)" ( (binary_expression "*param_1 == 0" (pointer_expression "*param_1" * identifier) == number_literal) )) (compound_statement "{\n    iVar12 = param_1[7];\n    if ((1 < iVar12 - 5U) && (iVar12 != 0)) goto LAB_00083d33;\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if (*(char *)(iVar9 + 8) != '\0') goto LAB_00083c9d;\nLAB_00083dad:\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0 && param_1[3] == 0) {\n      local_50 = 1;\n      goto LAB_00083e11;\n    }\n    iVar4 = param_1[1];\n    if (iVar12 != 0) {\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }\n    local_50 = 1;\nLAB_00083e2f:\n    if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0) {\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }\nLAB_00083e51:\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(param_1[6] + 4);\n    local_40 = local_5c;\n    local_5c = *piVar3;\nLAB_00083e6b:\n    local_4c = piVar3[9];\n    local_58 = piVar7[9];\n    bVar14 = *(char *)(local_5c + 5) == '\x05';\n    local_64 = piVar7[0xc];\nLAB_00083e8d:\n    if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }\nLAB_00083f72:\n    if (iVar12 != 0) goto LAB_00083fca;\n    uVar10 = param_1[4];\nLAB_00083f79:\n    param_1[9] = local_64;\n    param_1[8] = (local_64 + 1) - uVar10;\n    if (local_64 < uVar10) goto LAB_00083fd3;\n    if (param_1[10] == 0) {\n      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 0x58) = param_1;\n      param_1[10] = 1;\n    }\n    iVar12 = 0;\nLAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;\n    goto LAB_00083d18;\n  }" { (expression_statement "iVar12 = param_1[7];" (assignment_expression "iVar12 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (if_statement "if ((1 < iVar12 - 5U) && (iVar12 != 0)) goto LAB_00083d33;" if (parenthesized_expression "((1 < iVar12 - 5U) && (iVar12 != 0))" ( (binary_expression "(1 < iVar12 - 5U) && (iVar12 != 0)" (parenthesized_expression "(1 < iVar12 - 5U)" ( (binary_expression "1 < iVar12 - 5U" number_literal < (binary_expression "iVar12 - 5U" identifier - number_literal)) )) && (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_00083d33;" goto statement_identifier ;)) (expression_statement "iVar9 = param_1[6];" (assignment_expression "iVar9 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "piVar3 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar3 = *(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 "piVar7 = *(int **)(iVar9 + 4);" (assignment_expression "piVar7 = *(int **)(iVar9 + 4)" identifier = (pointer_expression "*(int **)(iVar9 + 4)" * (cast_expression "(int **)(iVar9 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_5c = *piVar3;" (assignment_expression "local_5c = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "iVar11 = *piVar7;" (assignment_expression "iVar11 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (if_statement "if (*(char *)(iVar9 + 8) != '\0') goto LAB_00083c9d;" if (parenthesized_expression "(*(char *)(iVar9 + 8) != '\0')" ( (binary_expression "*(char *)(iVar9 + 8) != '\0'" (pointer_expression "*(char *)(iVar9 + 8)" * (cast_expression "(char *)(iVar9 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 8)" ( (binary_expression "iVar9 + 8" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00083c9d;" goto statement_identifier ;)) (labeled_statement "LAB_00083dad:\n    iVar12 = FUN_00080d90();" statement_identifier : (expression_statement "iVar12 = FUN_00080d90();" (assignment_expression "iVar12 = FUN_00080d90()" identifier = (call_expression "FUN_00080d90()" identifier (argument_list "()" ( )))) ;)) (if_statement "if (iVar12 == 0 && param_1[3] == 0) {\n      local_50 = 1;\n      goto LAB_00083e11;\n    }" if (parenthesized_expression "(iVar12 == 0 && param_1[3] == 0)" ( (binary_expression "iVar12 == 0 && param_1[3] == 0" (binary_expression "iVar12 == 0" identifier == number_literal) && (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) == number_literal)) )) (compound_statement "{\n      local_50 = 1;\n      goto LAB_00083e11;\n    }" { (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00083e11;" goto statement_identifier ;) })) (expression_statement "iVar4 = param_1[1];" (assignment_expression "iVar4 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar12 != 0) {\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }" { (expression_statement "piVar3 = *(int **)(iVar4 + 4);" (assignment_expression "piVar3 = *(int **)(iVar4 + 4)" identifier = (pointer_expression "*(int **)(iVar4 + 4)" * (cast_expression "(int **)(iVar4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" identifier = identifier) ;) (expression_statement "local_5c = *piVar3;" (assignment_expression "local_5c = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "piVar7 = *(int **)(param_1[6] + 4);" (assignment_expression "piVar7 = *(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) ))))) ;) (goto_statement "goto LAB_00083e6b;" goto statement_identifier ;) })) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00083e2f:\n    if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }" statement_identifier : (if_statement "if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\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      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }" { (expression_statement "iVar9 = param_1[6];" (assignment_expression "iVar9 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "piVar3 = *(int **)(iVar4 + 4);" (assignment_expression "piVar3 = *(int **)(iVar4 + 4)" identifier = (pointer_expression "*(int **)(iVar4 + 4)" * (cast_expression "(int **)(iVar4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "piVar7 = *(int **)(iVar9 + 4);" (assignment_expression "piVar7 = *(int **)(iVar9 + 4)" identifier = (pointer_expression "*(int **)(iVar9 + 4)" * (cast_expression "(int **)(iVar9 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *piVar3;" (assignment_expression "uVar10 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (labeled_statement "LAB_00083cb8:\n      local_4c = piVar3[9];" statement_identifier : (expression_statement "local_4c = piVar3[9];" (assignment_expression "local_4c = piVar3[9]" identifier = (subscript_expression "piVar3[9]" identifier [ number_literal ])) ;)) (expression_statement "local_58 = piVar7[9];" (assignment_expression "local_58 = piVar7[9]" identifier = (subscript_expression "piVar7[9]" identifier [ number_literal ])) ;) (expression_statement "local_64 = piVar7[0xc];" (assignment_expression "local_64 = piVar7[0xc]" identifier = (subscript_expression "piVar7[0xc]" identifier [ number_literal ])) ;) (expression_statement "bVar14 = *(char *)(uVar10 + 5) == '\x05';" (assignment_expression "bVar14 = *(char *)(uVar10 + 5) == '\x05'" identifier = (binary_expression "*(char *)(uVar10 + 5) == '\x05'" (pointer_expression "*(char *)(uVar10 + 5)" * (cast_expression "(char *)(uVar10 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar10 + 5)" ( (binary_expression "uVar10 + 5" identifier + number_literal) )))) == (char_literal "'\x05'" ' escape_sequence '))) ;) (if_statement "if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }" if (parenthesized_expression "(!bVar14)" ( (unary_expression "!bVar14" ! identifier) )) (compound_statement "{\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }" { (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" identifier = identifier) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00083e8d;" goto statement_identifier ;) })) (if_statement "if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }" if (parenthesized_expression "(local_4c == local_58)" ( (binary_expression "local_4c == local_58" identifier == identifier) )) (compound_statement "{\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }" { (expression_statement "uVar10 = param_1[4];" (assignment_expression "uVar10 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (if_statement "if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }" if (parenthesized_expression "((param_2 != 0) && (uVar10 <= local_64))" ( (binary_expression "(param_2 != 0) && (uVar10 <= local_64)" (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar10 <= local_64)" ( (binary_expression "uVar10 <= local_64" identifier <= identifier) ))) )) (compound_statement "{\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }" { (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" identifier = identifier) ;) (expression_statement "bVar14 = true;" (assignment_expression "bVar14 = true" identifier = true) ;) (goto_statement "goto LAB_00083eae;" goto statement_identifier ;) })) (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" identifier = identifier) ;) (expression_statement "bVar14 = true;" (assignment_expression "bVar14 = true" identifier = true) ;) (goto_statement "goto LAB_00083f79;" goto statement_identifier ;) })) (expression_statement "iVar12 = 8;" (assignment_expression "iVar12 = 8" identifier = number_literal) ;) (if_statement "if (local_50 == 0) goto LAB_00083d18;" if (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00083d18;" goto statement_identifier ;)) (goto_statement "goto LAB_00083cf5;" goto statement_identifier ;) }))) (expression_statement "iVar12 = FUN_00080d90();" (assignment_expression "iVar12 = FUN_00080d90()" identifier = (call_expression "FUN_00080d90()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar12 == 0) {\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }" { (expression_statement "iVar9 = param_1[6];" (assignment_expression "iVar9 = 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 "piVar3 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar3 = *(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 "piVar7 = *(int **)(iVar9 + 4);" (assignment_expression "piVar7 = *(int **)(iVar9 + 4)" identifier = (pointer_expression "*(int **)(iVar9 + 4)" * (cast_expression "(int **)(iVar9 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *piVar3;" (assignment_expression "uVar10 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (goto_statement "goto LAB_00083cb8;" goto statement_identifier ;) })) (labeled_statement "LAB_00083e51:\n    piVar3 = *(int **)(param_1[1] + 4);" statement_identifier : (expression_statement "piVar3 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar3 = *(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 "piVar7 = *(int **)(param_1[6] + 4);" (assignment_expression "piVar7 = *(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 "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" identifier = identifier) ;) (expression_statement "local_5c = *piVar3;" (assignment_expression "local_5c = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (labeled_statement "LAB_00083e6b:\n    local_4c = piVar3[9];" statement_identifier : (expression_statement "local_4c = piVar3[9];" (assignment_expression "local_4c = piVar3[9]" identifier = (subscript_expression "piVar3[9]" identifier [ number_literal ])) ;)) (expression_statement "local_58 = piVar7[9];" (assignment_expression "local_58 = piVar7[9]" identifier = (subscript_expression "piVar7[9]" identifier [ number_literal ])) ;) (expression_statement "bVar14 = *(char *)(local_5c + 5) == '\x05';" (assignment_expression "bVar14 = *(char *)(local_5c + 5) == '\x05'" identifier = (binary_expression "*(char *)(local_5c + 5) == '\x05'" (pointer_expression "*(char *)(local_5c + 5)" * (cast_expression "(char *)(local_5c + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_5c + 5)" ( (binary_expression "local_5c + 5" identifier + number_literal) )))) == (char_literal "'\x05'" ' escape_sequence '))) ;) (expression_statement "local_64 = piVar7[0xc];" (assignment_expression "local_64 = piVar7[0xc]" identifier = (subscript_expression "piVar7[0xc]" identifier [ number_literal ])) ;) (labeled_statement "LAB_00083e8d:\n    if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }" statement_identifier : (if_statement "if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }" if (parenthesized_expression "((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64))" ( (binary_expression "(param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)" (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar10 = param_1[4], uVar10 <= local_64)" ( (comma_expression "uVar10 = param_1[4], uVar10 <= local_64" (assignment_expression "uVar10 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) , (binary_expression "uVar10 <= local_64" identifier <= identifier)) ))) )) (compound_statement "{\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }" { (if_statement "if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }" { (labeled_statement "LAB_00083eae:\n        uVar13 = 0;" statement_identifier : (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;)) (expression_statement "uVar5 = local_58;" (assignment_expression "uVar5 = local_58" identifier = identifier) ;) (while_statement "while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }" { (if_statement "if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }" if (parenthesized_expression "(DAT_00106358 / uVar5 + 1 == uVar10)" ( (binary_expression "DAT_00106358 / uVar5 + 1 == uVar10" (binary_expression "DAT_00106358 / uVar5 + 1" (binary_expression "DAT_00106358 / uVar5" identifier / identifier) + number_literal) == identifier) )) (compound_statement "{\n            iVar12 = 0;\n          }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }" else (compound_statement "{\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }" { (expression_statement "iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);" (assignment_expression "iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2)" identifier = (call_expression "(**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2)" (parenthesized_expression "(**(code **)(iVar11 + 200))" ( (pointer_expression "**(code **)(iVar11 + 200)" * (pointer_expression "*(code **)(iVar11 + 200)" * (cast_expression "(code **)(iVar11 + 200)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 200)" ( (binary_expression "iVar11 + 200" identifier + number_literal) ))))) )) (argument_list "(iVar11,uVar10,&local_2c,2)" ( identifier , identifier , (pointer_expression "&local_2c" & identifier) , number_literal )))) ;) (if_statement "if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }" if (parenthesized_expression "((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0))" ( (binary_expression "(iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)" (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)" ( (comma_expression "iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0" (assignment_expression "iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0)" identifier = (call_expression "FUN_0007c390(*(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_0001f280();\n            }" { (expression_statement "FUN_0001f280();" (call_expression "FUN_0001f280()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar10 = param_1[4];" (assignment_expression "uVar10 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "uVar13 = uVar13 + 1;" (assignment_expression "uVar13 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) (expression_statement "param_1[4] = uVar10;" (assignment_expression "param_1[4] = uVar10" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;" if (parenthesized_expression "((param_2 <= uVar13) || (local_64 < uVar10))" ( (binary_expression "(param_2 <= uVar13) || (local_64 < uVar10)" (parenthesized_expression "(param_2 <= uVar13)" ( (binary_expression "param_2 <= uVar13" identifier <= identifier) )) || (parenthesized_expression "(local_64 < uVar10)" ( (binary_expression "local_64 < uVar10" identifier < identifier) ))) )) (goto_statement "goto LAB_00083f72;" goto statement_identifier ;)) (if_statement "if (iVar12 != 0) break;" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);" (assignment_expression "uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24)" identifier = (pointer_expression "*(uint *)(*(int *)(param_1[6] + 4) + 0x24)" * (cast_expression "(uint *)(*(int *)(param_1[6] + 4) + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1[6] + 4) + 0x24)" ( (binary_expression "*(int *)(param_1[6] + 4) + 0x24" (pointer_expression "*(int *)(param_1[6] + 4)" * (cast_expression "(int *)(param_1[6] + 4)" ( (type_descriptor "int *" primitive_type (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) )))) + number_literal) ))))) ;) })) })) (labeled_statement "LAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;" statement_identifier : (if_statement "if (iVar12 != 0x65) goto LAB_000840d9;" if (parenthesized_expression "(iVar12 != 0x65)" ( (binary_expression "iVar12 != 0x65" identifier != number_literal) )) (goto_statement "goto LAB_000840d9;" goto statement_identifier ;))) (labeled_statement "LAB_00083fd3:\n      iVar9 = param_1[1];" statement_identifier : (expression_statement "iVar9 = param_1[1];" (assignment_expression "iVar9 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;)) (expression_statement "local_5c = local_64;" (assignment_expression "local_5c = local_64" identifier = identifier) ;) (if_statement "if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }" if (parenthesized_expression "(local_64 == 0)" ( (binary_expression "local_64 == 0" identifier == number_literal) )) (compound_statement "{\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }" { (if_statement "if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }" if (parenthesized_expression "(*(char *)(iVar9 + 9) != '\0')" ( (binary_expression "*(char *)(iVar9 + 9) != '\0'" (pointer_expression "*(char *)(iVar9 + 9)" * (cast_expression "(char *)(iVar9 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 9)" ( (binary_expression "iVar9 + 9" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          FUN_00024b20();\n        }" { (expression_statement "FUN_00024b20();" (call_expression "FUN_00024b20()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;" (assignment_expression "*(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0" (pointer_expression "*(undefined4 *)(*(int *)(iVar9 + 4) + 0x30)" * (cast_expression "(undefined4 *)(*(int *)(iVar9 + 4) + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar9 + 4) + 0x30)" ( (binary_expression "*(int *)(iVar9 + 4) + 0x30" (pointer_expression "*(int *)(iVar9 + 4)" * (cast_expression "(int *)(iVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) (expression_statement "iVar12 = FUN_000761e0();" (assignment_expression "iVar12 = FUN_000761e0()" identifier = (call_expression "FUN_000761e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }" if (parenthesized_expression "(*(char *)(iVar9 + 9) != '\0')" ( (binary_expression "*(char *)(iVar9 + 9) != '\0'" (pointer_expression "*(char *)(iVar9 + 9)" * (cast_expression "(char *)(iVar9 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 9)" ( (binary_expression "iVar9 + 9" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }" { (expression_statement "piVar3 = (int *)(iVar9 + 0xc);" (assignment_expression "piVar3 = (int *)(iVar9 + 0xc)" identifier = (cast_expression "(int *)(iVar9 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) )))) ;) (expression_statement "*piVar3 = *piVar3 + -1;" (assignment_expression "*piVar3 = *piVar3 + -1" (pointer_expression "*piVar3" * identifier) = (binary_expression "*piVar3 + -1" (pointer_expression "*piVar3" * identifier) + number_literal)) ;) (if_statement "if (*piVar3 == 0) {\n            FUN_00024b40();\n          }" if (parenthesized_expression "(*piVar3 == 0)" ( (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" * identifier) == number_literal) )) (compound_statement "{\n            FUN_00024b40();\n          }" { (expression_statement "FUN_00024b40();" (call_expression "FUN_00024b40()" identifier (argument_list "()" ( ))) ;) })) })) (if_statement "if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;" if (parenthesized_expression "((iVar12 != 0) && (iVar12 != 0x65))" ( (binary_expression "(iVar12 != 0) && (iVar12 != 0x65)" (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar12 != 0x65)" ( (binary_expression "iVar12 != 0x65" identifier != number_literal) ))) )) (goto_statement "goto LAB_000840d9;" goto statement_identifier ;)) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" identifier = number_literal) ;) })) (expression_statement "iVar12 = FUN_0007bde0();" (assignment_expression "iVar12 = FUN_0007bde0()" identifier = (call_expression "FUN_0007bde0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }" { (if_statement "if (*param_1 != 0) {\n          FUN_00057e80();\n        }" if (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n          FUN_00057e80();\n        }" { (expression_statement "FUN_00057e80();" (call_expression "FUN_00057e80()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }" if (parenthesized_expression "((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0))" ( (binary_expression "(!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)" (parenthesized_expression "(!bVar14)" ( (unary_expression "!bVar14" ! identifier) )) || (parenthesized_expression "(iVar12 = FUN_00081680(), iVar12 == 0)" ( (comma_expression "iVar12 = FUN_00081680(), iVar12 == 0" (assignment_expression "iVar12 = FUN_00081680()" identifier = (call_expression "FUN_00081680()" identifier (argument_list "()" ( )))) , (binary_expression "iVar12 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }" { (if_statement "if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }" if (parenthesized_expression "((int)local_58 < (int)local_4c)" ( (binary_expression "(int)local_58 < (int)local_4c" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }" { (expression_statement "uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);" (assignment_expression "uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58)" identifier = (binary_expression "(int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58)" (cast_expression "(int)((local_5c - 1) + (int)local_4c / (int)local_58)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((local_5c - 1) + (int)local_4c / (int)local_58)" ( (binary_expression "(local_5c - 1) + (int)local_4c / (int)local_58" (parenthesized_expression "(local_5c - 1)" ( (binary_expression "local_5c - 1" identifier - number_literal) )) + (binary_expression "(int)local_4c / (int)local_58" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) / (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier))) ))) / (parenthesized_expression "((int)local_4c / (int)local_58)" ( (binary_expression "(int)local_4c / (int)local_58" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) / (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);" (assignment_expression "uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24)" identifier = (binary_expression "DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24)" identifier / (pointer_expression "*(uint *)(*(int *)(param_1[1] + 4) + 0x24)" * (cast_expression "(uint *)(*(int *)(param_1[1] + 4) + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1[1] + 4) + 0x24)" ( (binary_expression "*(int *)(param_1[1] + 4) + 0x24" (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 == uVar10) {\n              uVar10 = uVar5;\n            }" if (parenthesized_expression "(uVar5 + 1 == uVar10)" ( (binary_expression "uVar5 + 1 == uVar10" (binary_expression "uVar5 + 1" identifier + number_literal) == identifier) )) (compound_statement "{\n              uVar10 = uVar5;\n            }" { (expression_statement "uVar10 = uVar5;" (assignment_expression "uVar10 = uVar5" identifier = identifier) ;) })) (expression_statement "lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;" (assignment_expression "lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58" identifier = (binary_expression "(longlong)(int)local_5c * (longlong)(int)local_58" (cast_expression "(longlong)(int)local_5c" ( (type_descriptor "longlong" type_identifier) ) (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier)) * (cast_expression "(longlong)(int)local_58" ( (type_descriptor "longlong" type_identifier) ) (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "piVar3 = *(int **)(local_40 + 0x3c);" (assignment_expression "piVar3 = *(int **)(local_40 + 0x3c)" identifier = (pointer_expression "*(int **)(local_40 + 0x3c)" * (cast_expression "(int **)(local_40 + 0x3c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_40 + 0x3c)" ( (binary_expression "local_40 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(uint *)(local_40 + 0x18);" (assignment_expression "uVar5 = *(uint *)(local_40 + 0x18)" identifier = (pointer_expression "*(uint *)(local_40 + 0x18)" * (cast_expression "(uint *)(local_40 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x18)" ( (binary_expression "local_40 + 0x18" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);" statement_identifier : (do_statement "do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);" do (compound_statement "{\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            }" { (if_statement "if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }" if (parenthesized_expression "(uVar5 < uVar10)" ( (binary_expression "uVar5 < uVar10" identifier < identifier) )) (compound_statement "{\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }" { (labeled_statement "LAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);" statement_identifier : (expression_statement "iVar12 = *(int *)(local_40 + 0x28);" (assignment_expression "iVar12 = *(int *)(local_40 + 0x28)" identifier = (pointer_expression "*(int *)(local_40 + 0x28)" * (cast_expression "(int *)(local_40 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x28)" ( (binary_expression "local_40 + 0x28" identifier + number_literal) ))))) ;)) (if_statement "if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }" { (if_statement "if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;" if (parenthesized_expression "((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))" ( (binary_expression "(DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0)" (parenthesized_expression "(DAT_00106454 != (code *)0x0)" ( (binary_expression "DAT_00106454 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar12 = (*DAT_00106454)(400), iVar12 != 0)" ( (comma_expression "iVar12 = (*DAT_00106454)(400), iVar12 != 0" (assignment_expression "iVar12 = (*DAT_00106454)(400)" identifier = (call_expression "(*DAT_00106454)(400)" (parenthesized_expression "(*DAT_00106454)" ( (pointer_expression "*DAT_00106454" * identifier) )) (argument_list "(400)" ( number_literal )))) , (binary_expression "iVar12 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_00084446;" goto statement_identifier ;)) (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) )))) ;) (if_statement "if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }" if (parenthesized_expression "(*(byte *)(local_40 + 0x10) < 3)" ( (binary_expression "*(byte *)(local_40 + 0x10) < 3" (pointer_expression "*(byte *)(local_40 + 0x10)" * (cast_expression "(byte *)(local_40 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x10)" ( (binary_expression "local_40 + 0x10" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }" { (expression_statement "local_4c = local_4c + DAT_00106358;" (assignment_expression "local_4c = local_4c + DAT_00106358" identifier = (binary_expression "local_4c + DAT_00106358" identifier + identifier)) ;) (expression_statement "local_54 = (int)local_4c >> 0x1f;" (assignment_expression "local_54 = (int)local_4c >> 0x1f" identifier = (binary_expression "(int)local_4c >> 0x1f" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }" if (parenthesized_expression "(lVar1 < (int)local_4c)" ( (binary_expression "lVar1 < (int)local_4c" identifier < (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }" { (expression_statement "local_4c = local_3c;" (assignment_expression "local_4c = local_3c" identifier = identifier) ;) (expression_statement "local_54 = local_38;" (assignment_expression "local_54 = local_38" identifier = identifier) ;) })) (expression_statement "local_34 = DAT_00106358 + local_58;" (assignment_expression "local_34 = DAT_00106358 + local_58" identifier = (binary_expression "DAT_00106358 + local_58" identifier + identifier)) ;) (expression_statement "local_30 = (int)local_34 >> 0x1f;" (assignment_expression "local_30 = (int)local_34 >> 0x1f" identifier = (binary_expression "(int)local_34 >> 0x1f" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;" if (parenthesized_expression "((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))" ( (binary_expression "(local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))" (parenthesized_expression "(local_54 <= local_30)" ( (binary_expression "local_54 <= local_30" identifier <= identifier) )) && (parenthesized_expression "((local_54 < local_30 || (local_4c <= local_34)))" ( (parenthesized_expression "(local_54 < local_30 || (local_4c <= local_34))" ( (binary_expression "local_54 < local_30 || (local_4c <= local_34)" (binary_expression "local_54 < local_30" identifier < identifier) || (parenthesized_expression "(local_4c <= local_34)" ( (binary_expression "local_4c <= local_34" identifier <= identifier) ))) )) ))) )) (goto_statement "goto LAB_0008434c;" goto statement_identifier ;)) }) (else_clause "else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }" else (compound_statement "{\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }" { (expression_statement "iVar12 = FUN_00082f70();" (assignment_expression "iVar12 = FUN_00082f70()" identifier = (call_expression "FUN_00082f70()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_4c = local_4c + DAT_00106358;" (assignment_expression "local_4c = local_4c + DAT_00106358" identifier = (binary_expression "local_4c + DAT_00106358" identifier + identifier)) ;) (expression_statement "local_54 = (int)local_4c >> 0x1f;" (assignment_expression "local_54 = (int)local_4c >> 0x1f" identifier = (binary_expression "(int)local_4c >> 0x1f" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }" if (parenthesized_expression "(lVar1 < (int)local_4c)" ( (binary_expression "lVar1 < (int)local_4c" identifier < (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }" { (expression_statement "local_4c = local_3c;" (assignment_expression "local_4c = local_3c" identifier = identifier) ;) (expression_statement "local_54 = local_38;" (assignment_expression "local_54 = local_38" identifier = identifier) ;) })) (expression_statement "local_34 = DAT_00106358 + local_58;" (assignment_expression "local_34 = DAT_00106358 + local_58" identifier = (binary_expression "DAT_00106358 + local_58" identifier + identifier)) ;) (expression_statement "local_30 = (int)local_34 >> 0x1f;" (assignment_expression "local_30 = (int)local_34 >> 0x1f" identifier = (binary_expression "(int)local_34 >> 0x1f" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;" if (parenthesized_expression "(((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0))" ( (binary_expression "((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)" (parenthesized_expression "((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        )" ( (binary_expression "(local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))" (parenthesized_expression "(local_54 <= local_30)" ( (binary_expression "local_54 <= local_30" identifier <= identifier) )) && (parenthesized_expression "((local_54 < local_30 || (local_4c <= local_34)))" ( (parenthesized_expression "(local_54 < local_30 || (local_4c <= local_34))" ( (binary_expression "local_54 < local_30 || (local_4c <= local_34)" (binary_expression "local_54 < local_30" identifier < identifier) || (parenthesized_expression "(local_4c <= local_34)" ( (binary_expression "local_4c <= local_34" identifier <= identifier) ))) )) ))) )) || (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_00084344;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_00084480;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) (expression_statement "uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);" (assignment_expression "uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24)" identifier = (binary_expression "DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24)" identifier / (pointer_expression "*(uint *)(*(int *)(param_1[1] + 4) + 0x24)" * (cast_expression "(uint *)(*(int *)(param_1[1] + 4) + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1[1] + 4) + 0x24)" ( (binary_expression "*(int *)(param_1[1] + 4) + 0x24" (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) )))))) ;) (expression_statement "uVar13 = uVar10;" (assignment_expression "uVar13 = uVar10" identifier = identifier) ;) (if_statement "if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }" if (parenthesized_expression "(uVar6 + 1 == uVar10)" ( (binary_expression "uVar6 + 1 == uVar10" (binary_expression "uVar6 + 1" identifier + number_literal) == identifier) )) (compound_statement "{\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }" { (expression_statement "uVar13 = uVar6 + 2;" (assignment_expression "uVar13 = uVar6 + 2" identifier = (binary_expression "uVar6 + 2" identifier + number_literal)) ;) (if_statement "if (uVar5 < uVar13) goto LAB_00084288;" if (parenthesized_expression "(uVar5 < uVar13)" ( (binary_expression "uVar5 < uVar13" identifier < identifier) )) (goto_statement "goto LAB_00084288;" goto statement_identifier ;)) (if_statement "if (uVar13 == uVar10) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }" if (parenthesized_expression "(uVar13 == uVar10)" ( (binary_expression "uVar13 == uVar10" identifier == identifier) )) (compound_statement "{\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }" { (do_statement "do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );" do (compound_statement "{\n                    /* WARNING: Do nothing block with infinite loop */\n                  }" { comment }) while (parenthesized_expression "( true )" ( true )) ;) })) })) (expression_statement "iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);" (assignment_expression "iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0)" identifier = (call_expression "(**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0)" (parenthesized_expression "(**(code **)(local_40 + 200))" ( (pointer_expression "**(code **)(local_40 + 200)" * (pointer_expression "*(code **)(local_40 + 200)" * (cast_expression "(code **)(local_40 + 200)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_40 + 200)" ( (binary_expression "local_40 + 200" identifier + number_literal) ))))) )) (argument_list "(local_40,uVar13,&local_2c,0)" ( identifier , identifier , (pointer_expression "&local_2c" & identifier) , number_literal )))) ;) (if_statement "if (iVar12 != 0) break;" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar12 = FUN_00076180();" (assignment_expression "iVar12 = FUN_00076180()" identifier = (call_expression "FUN_00076180()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }" if (parenthesized_expression "(local_2c == 0)" ( (binary_expression "local_2c == 0" identifier == number_literal) )) (compound_statement "{\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }" { (expression_statement "uVar10 = uVar13 + 1;" (assignment_expression "uVar10 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) (if_statement "if (iVar12 != 0) break;" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_00084096;" goto statement_identifier ;) })) (expression_statement "uVar10 = uVar13 + 1;" (assignment_expression "uVar10 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0001f280();" (call_expression "FUN_0001f280()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) ;)) }) (else_clause "else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }" else (compound_statement "{\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }" { (expression_statement "*(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;" (assignment_expression "*(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c" (pointer_expression "*(uint *)(local_40 + 0x18)" * (cast_expression "(uint *)(local_40 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x18)" ( (binary_expression "local_40 + 0x18" identifier + number_literal) )))) = (binary_expression "((int)local_58 / (int)local_4c) * local_5c" (parenthesized_expression "((int)local_58 / (int)local_4c)" ( (binary_expression "(int)local_58 / (int)local_4c" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) / (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier)) )) * identifier)) ;) (expression_statement "iVar12 = *(int *)(local_40 + 0x28);" (assignment_expression "iVar12 = *(int *)(local_40 + 0x28)" identifier = (pointer_expression "*(int *)(local_40 + 0x28)" * (cast_expression "(int *)(local_40 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x28)" ( (binary_expression "local_40 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }" { (if_statement "if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }" if (parenthesized_expression "((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0))" ( (binary_expression "(DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)" (parenthesized_expression "(DAT_00106454 == (code *)0x0)" ( (binary_expression "DAT_00106454 == (code *)0x0" identifier == (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(iVar12 = (*DAT_00106454)(400), iVar12 == 0)" ( (comma_expression "iVar12 = (*DAT_00106454)(400), iVar12 == 0" (assignment_expression "iVar12 = (*DAT_00106454)(400)" identifier = (call_expression "(*DAT_00106454)(400)" (parenthesized_expression "(*DAT_00106454)" ( (pointer_expression "*DAT_00106454" * identifier) )) (argument_list "(400)" ( number_literal )))) , (binary_expression "iVar12 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }" { (if_statement "if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }" if (parenthesized_expression "(2 < *(byte *)(local_40 + 0x10))" ( (binary_expression "2 < *(byte *)(local_40 + 0x10)" number_literal < (pointer_expression "*(byte *)(local_40 + 0x10)" * (cast_expression "(byte *)(local_40 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x10)" ( (binary_expression "local_40 + 0x10" identifier + number_literal) ))))) )) (compound_statement "{\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }" { (expression_statement "iVar12 = FUN_00082f70();" (assignment_expression "iVar12 = FUN_00082f70()" identifier = (call_expression "FUN_00082f70()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_00084248;" goto statement_identifier ;) })) (goto_statement "goto LAB_00084250;" goto statement_identifier ;) })) (labeled_statement "LAB_00084446:\n              iVar12 = 10;" statement_identifier : (expression_statement "iVar12 = 10;" (assignment_expression "iVar12 = 10" identifier = number_literal) ;)) (goto_statement "goto LAB_00083fad;" goto statement_identifier ;) })) }))) })) })) (goto_statement "goto LAB_000840d9;" goto statement_identifier ;) }))) (labeled_statement "LAB_00083f72:\n    if (iVar12 != 0) goto LAB_00083fca;" statement_identifier : (if_statement "if (iVar12 != 0) goto LAB_00083fca;" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00083fca;" goto statement_identifier ;))) (expression_statement "uVar10 = param_1[4];" (assignment_expression "uVar10 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (labeled_statement "LAB_00083f79:\n    param_1[9] = local_64;" statement_identifier : (expression_statement "param_1[9] = local_64;" (assignment_expression "param_1[9] = local_64" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_1[8] = (local_64 + 1) - uVar10;" (assignment_expression "param_1[8] = (local_64 + 1) - uVar10" (subscript_expression "param_1[8]" identifier [ number_literal ]) = (binary_expression "(local_64 + 1) - uVar10" (parenthesized_expression "(local_64 + 1)" ( (binary_expression "local_64 + 1" identifier + number_literal) )) - identifier)) ;) (if_statement "if (local_64 < uVar10) goto LAB_00083fd3;" if (parenthesized_expression "(local_64 < uVar10)" ( (binary_expression "local_64 < uVar10" identifier < identifier) )) (goto_statement "goto LAB_00083fd3;" goto statement_identifier ;)) (if_statement "if (param_1[10] == 0) {\n      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 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      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 0x58) = param_1;\n      param_1[10] = 1;\n    }" { (expression_statement "iVar12 = **(int **)(param_1[6] + 4);" (assignment_expression "iVar12 = **(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 *)(iVar12 + 0x58);" (assignment_expression "param_1[0xb] = *(int *)(iVar12 + 0x58)" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (pointer_expression "*(int *)(iVar12 + 0x58)" * (cast_expression "(int *)(iVar12 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x58)" ( (binary_expression "iVar12 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(iVar12 + 0x58) = param_1;" (assignment_expression "*(int **)(iVar12 + 0x58) = param_1" (pointer_expression "*(int **)(iVar12 + 0x58)" * (cast_expression "(int **)(iVar12 + 0x58)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0x58)" ( (binary_expression "iVar12 + 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 "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;" statement_identifier : (if_statement "if (local_50 != 0) goto LAB_00083fb9;" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00083fb9;" goto statement_identifier ;))) (goto_statement "goto LAB_00083d18;" goto statement_identifier ;) })) (expression_statement "sqlite3_mutex_enter(*(undefined4 *)(*param_1 + 0xc));" (call_expression "sqlite3_mutex_enter(*(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 "iVar12 = param_1[7];" (assignment_expression "iVar12 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (if_statement "if ((iVar12 - 5U < 2) || (iVar12 == 0)) {\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if ((*param_1 != 0) && ((char)piVar7[5] == '\x02')) {\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }\n    if (*(char *)(iVar9 + 8) == '\0') goto LAB_00083dad;\nLAB_00083c9d:\n    local_50 = param_1[3];\n    if (local_50 == 0) {\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }\n    local_50 = 0;\n    uVar10 = local_5c;\n    goto LAB_00083cb8;\n  }" if (parenthesized_expression "((iVar12 - 5U < 2) || (iVar12 == 0))" ( (binary_expression "(iVar12 - 5U < 2) || (iVar12 == 0)" (parenthesized_expression "(iVar12 - 5U < 2)" ( (binary_expression "iVar12 - 5U < 2" (binary_expression "iVar12 - 5U" identifier - number_literal) < number_literal) )) || (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if ((*param_1 != 0) && ((char)piVar7[5] == '\x02')) {\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }\n    if (*(char *)(iVar9 + 8) == '\0') goto LAB_00083dad;\nLAB_00083c9d:\n    local_50 = param_1[3];\n    if (local_50 == 0) {\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }\n    local_50 = 0;\n    uVar10 = local_5c;\n    goto LAB_00083cb8;\n  }" { (expression_statement "iVar9 = param_1[6];" (assignment_expression "iVar9 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "piVar3 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar3 = *(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 "piVar7 = *(int **)(iVar9 + 4);" (assignment_expression "piVar7 = *(int **)(iVar9 + 4)" identifier = (pointer_expression "*(int **)(iVar9 + 4)" * (cast_expression "(int **)(iVar9 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_5c = *piVar3;" (assignment_expression "local_5c = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "iVar11 = *piVar7;" (assignment_expression "iVar11 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (if_statement "if ((*param_1 != 0) && ((char)piVar7[5] == '\x02')) {\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }" if (parenthesized_expression "((*param_1 != 0) && ((char)piVar7[5] == '\x02'))" ( (binary_expression "(*param_1 != 0) && ((char)piVar7[5] == '\x02')" (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) && (parenthesized_expression "((char)piVar7[5] == '\x02')" ( (binary_expression "(char)piVar7[5] == '\x02'" (cast_expression "(char)piVar7[5]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar7[5]" identifier [ number_literal ])) == (char_literal "'\x02'" ' escape_sequence ')) ))) )) (compound_statement "{\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }" { (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "iVar12 = 5;" (assignment_expression "iVar12 = 5" identifier = number_literal) ;) (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" identifier = identifier) ;) (goto_statement "goto LAB_00083e6b;" goto statement_identifier ;) })) (if_statement "if (*(char *)(iVar9 + 8) == '\0') goto LAB_00083dad;" if (parenthesized_expression "(*(char *)(iVar9 + 8) == '\0')" ( (binary_expression "*(char *)(iVar9 + 8) == '\0'" (pointer_expression "*(char *)(iVar9 + 8)" * (cast_expression "(char *)(iVar9 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 8)" ( (binary_expression "iVar9 + 8" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00083dad;" goto statement_identifier ;)) (labeled_statement "LAB_00083c9d:\n    local_50 = param_1[3];" statement_identifier : (expression_statement "local_50 = param_1[3];" (assignment_expression "local_50 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;)) (if_statement "if (local_50 == 0) {\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }" if (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }" { (labeled_statement "LAB_00083e11:\n      iVar12 = FUN_0004ad20(0);" statement_identifier : (expression_statement "iVar12 = FUN_0004ad20(0);" (assignment_expression "iVar12 = FUN_0004ad20(0)" identifier = (call_expression "FUN_0004ad20(0)" identifier (argument_list "(0)" ( number_literal )))) ;)) (if_statement "if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }" if (parenthesized_expression "(iVar12 != 7)" ( (binary_expression "iVar12 != 7" identifier != number_literal) )) (compound_statement "{\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }" { (expression_statement "iVar4 = param_1[1];" (assignment_expression "iVar4 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00083e2f;" goto statement_identifier ;) })) (goto_statement "goto LAB_00083e51;" goto statement_identifier ;) })) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = local_5c;" (assignment_expression "uVar10 = local_5c" identifier = identifier) ;) (goto_statement "goto LAB_00083cb8;" goto statement_identifier ;) })) (goto_statement "goto LAB_00083d1b;" goto statement_identifier ;) (while_statement "while( true ) {\n    bVar14 = CARRY4(local_34,local_58);\n    local_34 = local_34 + local_58;\n    bVar2 = 1;\n    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14;\n    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar2 = 0;\n    }\n    if (!(bool)(iVar12 == 0 & bVar2)) break;\nLAB_00084480:\n    local_2c = 0;\n    uVar15 = 0;\n    piVar7 = &local_2c;\n    iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f);\n    iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15);\n    if (iVar12 == 0) {\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    bVar14 = CARRY4(local_34,local_58);\n    local_34 = local_34 + local_58;\n    bVar2 = 1;\n    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14;\n    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar2 = 0;\n    }\n    if (!(bool)(iVar12 == 0 & bVar2)) break;\nLAB_00084480:\n    local_2c = 0;\n    uVar15 = 0;\n    piVar7 = &local_2c;\n    iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f);\n    iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15);\n    if (iVar12 == 0) {\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }\n  }" { (expression_statement "bVar14 = CARRY4(local_34,local_58);" (assignment_expression "bVar14 = CARRY4(local_34,local_58)" identifier = (call_expression "CARRY4(local_34,local_58)" identifier (argument_list "(local_34,local_58)" ( identifier , identifier )))) ;) (expression_statement "local_34 = local_34 + local_58;" (assignment_expression "local_34 = local_34 + local_58" identifier = (binary_expression "local_34 + local_58" identifier + identifier)) ;) (expression_statement "bVar2 = 1;" (assignment_expression "bVar2 = 1" identifier = number_literal) ;) (expression_statement "local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14;" (assignment_expression "local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14" identifier = (binary_expression "local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14" (binary_expression "local_30 + ((int)local_58 >> 0x1f)" identifier + (parenthesized_expression "((int)local_58 >> 0x1f)" ( (binary_expression "(int)local_58 >> 0x1f" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar2 = 0;\n    }" if (parenthesized_expression "((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))" ( (binary_expression "(local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))" (parenthesized_expression "(local_54 <= local_30)" ( (binary_expression "local_54 <= local_30" identifier <= identifier) )) && (parenthesized_expression "((local_54 < local_30 || (local_4c <= local_34)))" ( (parenthesized_expression "(local_54 < local_30 || (local_4c <= local_34))" ( (binary_expression "local_54 < local_30 || (local_4c <= local_34)" (binary_expression "local_54 < local_30" identifier < identifier) || (parenthesized_expression "(local_4c <= local_34)" ( (binary_expression "local_4c <= local_34" identifier <= identifier) ))) )) ))) )) (compound_statement "{\n      bVar2 = 0;\n    }" { (expression_statement "bVar2 = 0;" (assignment_expression "bVar2 = 0" identifier = number_literal) ;) })) (if_statement "if (!(bool)(iVar12 == 0 & bVar2)) break;" if (parenthesized_expression "(!(bool)(iVar12 == 0 & bVar2))" ( (unary_expression "!(bool)(iVar12 == 0 & bVar2)" ! (cast_expression "(bool)(iVar12 == 0 & bVar2)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(iVar12 == 0 & bVar2)" ( (binary_expression "iVar12 == 0 & bVar2" (binary_expression "iVar12 == 0" identifier == number_literal) & identifier) )))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00084480:\n    local_2c = 0;" statement_identifier : (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;)) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "piVar7 = &local_2c;" (assignment_expression "piVar7 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) (expression_statement "iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f);" (assignment_expression "iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f)" identifier = (call_expression "FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f)" identifier (argument_list "(local_34,local_30,local_58,(int)local_58 >> 0x1f)" ( identifier , identifier , identifier , (binary_expression "(int)local_58 >> 0x1f" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15);" (assignment_expression "iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15)" identifier = (call_expression "(**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15)" (parenthesized_expression "(**(code **)(iVar11 + 200))" ( (pointer_expression "**(code **)(iVar11 + 200)" * (pointer_expression "*(code **)(iVar11 + 200)" * (cast_expression "(code **)(iVar11 + 200)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 200)" ( (binary_expression "iVar11 + 200" identifier + number_literal) ))))) )) (argument_list "(iVar11,iVar12 + 1,piVar7,uVar15)" ( identifier , (binary_expression "iVar12 + 1" identifier + number_literal) , identifier , identifier )))) ;) (if_statement "if (iVar12 == 0) {\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }" { (expression_statement "iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);" (assignment_expression "iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30)" identifier = (call_expression "(**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30)" (parenthesized_expression "(**(code **)(*piVar3 + 0xc))" ( (pointer_expression "**(code **)(*piVar3 + 0xc)" * (pointer_expression "*(code **)(*piVar3 + 0xc)" * (cast_expression "(code **)(*piVar3 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0xc)" ( (binary_expression "*piVar3 + 0xc" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) )) (argument_list "(piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30)" ( 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_000844e2;" if (parenthesized_expression "(local_2c != 0)" ( (binary_expression "local_2c != 0" identifier != number_literal) )) (goto_statement "goto LAB_000844e2;" goto statement_identifier ;)) }) (else_clause "else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }" else (compound_statement "{\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }" { (if_statement "if (local_2c == 0) goto LAB_000840d9;" if (parenthesized_expression "(local_2c == 0)" ( (binary_expression "local_2c == 0" identifier == number_literal) )) (goto_statement "goto LAB_000840d9;" goto statement_identifier ;)) (labeled_statement "LAB_000844e2:\n      FUN_0001f280();" statement_identifier : (expression_statement "FUN_0001f280();" (call_expression "FUN_0001f280()" identifier (argument_list "()" ( ))) ;)) }))) })) (labeled_statement "LAB_00084344:\n  if (iVar12 == 0) {\nLAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);\n    if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }" statement_identifier : (if_statement "if (iVar12 == 0) {\nLAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);\n    if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);\n    if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }" { (labeled_statement "LAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);" statement_identifier : (expression_statement "iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);" (assignment_expression "iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c)" identifier = (call_expression "(**(code **)(*piVar3 + 0x18))(piVar3,&local_2c)" (parenthesized_expression "(**(code **)(*piVar3 + 0x18))" ( (pointer_expression "**(code **)(*piVar3 + 0x18)" * (pointer_expression "*(code **)(*piVar3 + 0x18)" * (cast_expression "(code **)(*piVar3 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0x18)" ( (binary_expression "*piVar3 + 0x18" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) )) (argument_list "(piVar3,&local_2c)" ( identifier , (pointer_expression "&local_2c" & identifier) )))) ;)) (if_statement "if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }" if (parenthesized_expression "((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0))))" ( (binary_expression "(iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))" (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) && (parenthesized_expression "((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))" ( (parenthesized_expression "(CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0))" ( (binary_expression "CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)" (binary_expression "CONCAT44(local_28,local_2c) <= lVar1" (call_expression "CONCAT44(local_28,local_2c)" identifier (argument_list "(local_28,local_2c)" ( identifier , identifier ))) <= identifier) || (parenthesized_expression "(iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)" ( (comma_expression "iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0" (assignment_expression "iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1)" identifier = (call_expression "(**(code **)(*piVar3 + 0x10))(piVar3,lVar1)" (parenthesized_expression "(**(code **)(*piVar3 + 0x10))" ( (pointer_expression "**(code **)(*piVar3 + 0x10)" * (pointer_expression "*(code **)(*piVar3 + 0x10)" * (cast_expression "(code **)(*piVar3 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0x10)" ( (binary_expression "*piVar3 + 0x10" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) )) (argument_list "(piVar3,lVar1)" ( identifier , identifier )))) , (binary_expression "iVar12 == 0" identifier == number_literal)) ))) )) ))) )) (compound_statement "{\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }" { (expression_statement "iVar12 = FUN_000249d0();" (assignment_expression "iVar12 = FUN_000249d0()" identifier = (call_expression "FUN_000249d0()" identifier (argument_list "()" ( )))) ;) (labeled_statement "LAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }" statement_identifier : (if_statement "if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }" { (labeled_statement "LAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }" statement_identifier : (if_statement "if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }" if (parenthesized_expression "((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0))" ( (binary_expression "(*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)" (parenthesized_expression "(*(char *)(param_1[1] + 8) == '\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 "(iVar12 = FUN_00080560(), iVar12 == 0)" ( (comma_expression "iVar12 = FUN_00080560(), iVar12 == 0" (assignment_expression "iVar12 = FUN_00080560()" identifier = (call_expression "FUN_00080560()" identifier (argument_list "()" ( )))) , (binary_expression "iVar12 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }" { (expression_statement "iVar12 = 0x65;" (assignment_expression "iVar12 = 0x65" identifier = number_literal) ;) (goto_statement "goto LAB_00083fad;" goto statement_identifier ;) }))) }))) })) }))) (labeled_statement "LAB_000840d9:\n  if (local_50 != 0) {\nLAB_00083fb9:\n    iVar9 = param_1[6];\nLAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);\n    if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar8 != '\0') {\n      FUN_00080560();\n    }\n  }" statement_identifier : (if_statement "if (local_50 != 0) {\nLAB_00083fb9:\n    iVar9 = param_1[6];\nLAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);\n    if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar8 != '\0') {\n      FUN_00080560();\n    }\n  }" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00083fb9:\n    iVar9 = param_1[6];\nLAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);\n    if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar8 != '\0') {\n      FUN_00080560();\n    }\n  }" { (labeled_statement "LAB_00083fb9:\n    iVar9 = param_1[6];" statement_identifier : (expression_statement "iVar9 = param_1[6];" (assignment_expression "iVar9 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;)) (labeled_statement "LAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);" statement_identifier : (expression_statement "cVar8 = *(char *)(iVar9 + 8);" (assignment_expression "cVar8 = *(char *)(iVar9 + 8)" identifier = (pointer_expression "*(char *)(iVar9 + 8)" * (cast_expression "(char *)(iVar9 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 8)" ( (binary_expression "iVar9 + 8" identifier + number_literal) ))))) ;)) (if_statement "if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }" if (parenthesized_expression "(cVar8 == '\x02')" ( (binary_expression "cVar8 == '\x02'" identifier == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }" { (expression_statement "FUN_000835d0();" (call_expression "FUN_000835d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar8 = *(char *)(param_1[6] + 8);" (assignment_expression "cVar8 = *(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 (cVar8 != '\0') {\n      FUN_00080560();\n    }" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00080560();\n    }" { (expression_statement "FUN_00080560();" (call_expression "FUN_00080560()" identifier (argument_list "()" ( ))) ;) })) }))) (if_statement "if (iVar12 == 0xc0a) {\n    iVar12 = 7;\n  }" if (parenthesized_expression "(iVar12 == 0xc0a)" ( (binary_expression "iVar12 == 0xc0a" identifier == number_literal) )) (compound_statement "{\n    iVar12 = 7;\n  }" { (expression_statement "iVar12 = 7;" (assignment_expression "iVar12 = 7" identifier = number_literal) ;) })) (labeled_statement "LAB_00083d18:\n  param_1[7] = iVar12;" statement_identifier : (expression_statement "param_1[7] = iVar12;" (assignment_expression "param_1[7] = iVar12" (subscript_expression "param_1[7]" identifier [ number_literal ]) = identifier) ;)) (labeled_statement "LAB_00083d1b:\n  if (*param_1 != 0) {\n    sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc));\n  }" statement_identifier : (if_statement "if (*param_1 != 0) {\n    sqlite3_mutex_leave(*(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    sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc));\n  }" { (expression_statement "sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc));" (call_expression "sqlite3_mutex_leave(*(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_00083d33:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar3 = (int *)(param_1[6] + 0xc);\n    *piVar3 = *piVar3 + -1;\n    if (*piVar3 == 0) {\n      FUN_00024a20();\n    }\n  }" statement_identifier : (if_statement "if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar3 = (int *)(param_1[6] + 0xc);\n    *piVar3 = *piVar3 + -1;\n    if (*piVar3 == 0) {\n      FUN_00024a20();\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    piVar3 = (int *)(param_1[6] + 0xc);\n    *piVar3 = *piVar3 + -1;\n    if (*piVar3 == 0) {\n      FUN_00024a20();\n    }\n  }" { (expression_statement "piVar3 = (int *)(param_1[6] + 0xc);" (assignment_expression "piVar3 = (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 "*piVar3 = *piVar3 + -1;" (assignment_expression "*piVar3 = *piVar3 + -1" (pointer_expression "*piVar3" * identifier) = (binary_expression "*piVar3 + -1" (pointer_expression "*piVar3" * identifier) + number_literal)) ;) (if_statement "if (*piVar3 == 0) {\n      FUN_00024a20();\n    }" if (parenthesized_expression "(*piVar3 == 0)" ( (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" * identifier) == number_literal) )) (compound_statement "{\n      FUN_00024a20();\n    }" { (expression_statement "FUN_00024a20();" (call_expression "FUN_00024a20()" identifier (argument_list "()" ( ))) ;) })) }))) (expression_statement "sqlite3_mutex_leave(*(undefined4 *)(param_1[5] + 0xc));" (call_expression "sqlite3_mutex_leave(*(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_000d1450();\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_000d1450();\n  }" { comment (expression_statement "FUN_000d1450();" (call_expression "FUN_000d1450()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return iVar12;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Removing unreachable block (ram,0x00084572) */\n/* WARNING: Removing unreachable block (ram,0x0008437b) */\n/* WARNING: Removing unreachable block (ram,0x00084309) */\n/* WARNING: Unknown calling convention */\n\nint sqlite3_backup_step(sqlite3_backup *p,int nPage)\n\n{\n  int *piVar1;\n  sqlite3_file *psVar2;\n  longlong lVar3;\n  byte bVar4;\n  BtShared *pBVar5;\n  Btree *pBVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  BtShared *pBVar10;\n  u8 uVar11;\n  Btree *p_00;\n  Pgno PVar12;\n  Pager *pPVar13;\n  int rc;\n  Pager *pPVar14;\n  int iVar15;\n  uint uVar16;\n  int in_GS_OFFSET;\n  bool bVar17;\n  DbPage **ppDVar18;\n  int iVar19;\n  sqlite3_backup *in_stack_ffffff94;\n  uint local_64;\n  Pager *local_5c;\n  u32 local_58;\n  int local_54;\n  int local_50;\n  u32 local_4c;\n  Pager *local_40;\n  uint local_3c;\n  int local_38;\n  uint local_34;\n  int local_30;\n  DbPage *pSrcPg;\n  undefined4 local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x83c09;\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    iVar15 = p->rc;\n    if ((1 < iVar15 - 5U) && (iVar15 != 0)) goto LAB_00083d33;\n    pBVar6 = p->pDest;\n    p_00 = p->pSrc;\n    pBVar5 = pBVar6->pBt;\n    pBVar10 = p_00->pBt;\n    local_5c = pBVar5->pPager;\n    pPVar13 = pBVar10->pPager;\n    if (p_00->inTrans != '\0') goto LAB_00083c9d;\nLAB_00083dad:\n    iVar15 = sqlite3BtreeBeginTrans(p_00,0,(int *)0x0);\n    if (iVar15 == 0 && p->bDestLocked == 0) {\n      pBVar6 = p->pDest;\n      local_50 = 1;\n      pBVar10 = p->pSrc->pBt;\n      goto LAB_00083e11;\n    }\n    pBVar6 = p->pDest;\n    if (iVar15 != 0) {\n      pBVar5 = pBVar6->pBt;\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = pBVar5->pPager;\n      pBVar10 = p->pSrc->pBt;\n      goto LAB_00083e6b;\n    }\n    local_50 = 1;\nLAB_00083e2f:\n    if (p->bDestLocked != 0) {\n      p_00 = p->pSrc;\n      pBVar5 = pBVar6->pBt;\n      pBVar10 = p_00->pBt;\n      pPVar14 = pBVar5->pPager;\nLAB_00083cb8:\n      local_4c = pBVar5->pageSize;\n      local_58 = pBVar10->pageSize;\n      local_64 = pBVar10->nPage;\n      bVar17 = pPVar14->journalMode == '\x05';\n      if (!bVar17) {\n        local_40 = local_5c;\n        iVar15 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        PVar12 = p->iNext;\n        if ((nPage != 0) && (PVar12 <= local_64)) {\n          local_40 = local_5c;\n          bVar17 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar17 = true;\n        goto LAB_00083f79;\n      }\n      iVar15 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }\n    iVar15 = sqlite3BtreeBeginTrans(pBVar6,2,(int *)&p->iDestSchema);\n    if (iVar15 == 0) {\n      p_00 = p->pSrc;\n      p->bDestLocked = 1;\n      pBVar5 = p->pDest->pBt;\n      pBVar10 = p_00->pBt;\n      pPVar14 = pBVar5->pPager;\n      goto LAB_00083cb8;\n    }\nLAB_00083e51:\n    pBVar5 = p->pDest->pBt;\n    pBVar10 = p->pSrc->pBt;\n    local_40 = local_5c;\n    local_5c = pBVar5->pPager;\nLAB_00083e6b:\n    local_4c = pBVar5->pageSize;\n    local_58 = pBVar10->pageSize;\n    bVar17 = local_5c->journalMode == '\x05';\n    local_64 = pBVar10->nPage;\nLAB_00083e8d:\n    if ((nPage != 0) && (PVar12 = p->iNext, PVar12 <= local_64)) {\n      if (iVar15 == 0) {\nLAB_00083eae:\n        uVar16 = 0;\n        uVar7 = local_58;\n        while( true ) {\n          if ((uint)sqlite3PendingByte / uVar7 + 1 == PVar12) {\n            iVar15 = 0;\n          }\n          else {\n            iVar19 = 2;\n            ppDVar18 = &pSrcPg;\n            iVar15 = (*pPVar13->xGet)(pPVar13,PVar12,&pSrcPg,2);\n            if ((iVar15 == 0) &&\n               (iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            PVar12 = p->iNext;\n          }\n          PVar12 = PVar12 + 1;\n          uVar16 = uVar16 + 1;\n          p->iNext = PVar12;\n          if (((uint)nPage <= uVar16) || (local_64 < PVar12)) goto LAB_00083f72;\n          if (iVar15 != 0) break;\n          uVar7 = p->pSrc->pBt->pageSize;\n        }\n      }\nLAB_00083fca:\n      if (iVar15 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      pBVar6 = p->pDest;\n      local_5c = (Pager *)local_64;\n      if (local_64 == 0) {\n        if (pBVar6->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar6);\n        }\n        pBVar5 = pBVar6->pBt;\n        pBVar5->nPage = 0;\n        iVar15 = newDatabase(pBVar5);\n        if (pBVar6->sharable != '\0') {\n          piVar1 = &pBVar6->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar6);\n          }\n        }\n        if ((iVar15 != 0) && (iVar15 != 0x65)) goto LAB_000840d9;\n        pBVar6 = p->pDest;\n        local_5c = (Pager *)0x1;\n      }\n      iVar15 = sqlite3BtreeUpdateMeta(pBVar6,1,p->iDestSchema + 1);\n      if (iVar15 == 0) {\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((!bVar17) || (iVar15 = sqlite3BtreeSetVersion(p->pDest,2), iVar15 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar7 = (int)(((int)local_5c - 1U) + (int)local_4c / (int)local_58) /\n                    ((int)local_4c / (int)local_58);\n            uVar16 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n            if (uVar16 + 1 == uVar7) {\n              uVar7 = uVar16;\n            }\n            lVar3 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            psVar2 = local_40->fd;\n            uVar16 = local_40->dbSize;\nLAB_00084096:\n            do {\n              if (uVar16 < uVar7) {\nLAB_00084288:\n                iVar15 = local_40->errCode;\n                if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar8 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n              uVar9 = uVar7;\n              if (uVar8 + 1 == uVar7) {\n                uVar9 = uVar8 + 2;\n                if (uVar16 < uVar9) goto LAB_00084288;\n                if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0);\n              if (iVar15 != 0) break;\n              iVar15 = sqlite3PagerWrite(pSrcPg);\n              if (pSrcPg == (DbPage *)0x0) {\n                uVar7 = uVar9 + 1;\n                if (iVar15 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar7 = uVar9 + 1;\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            } while (iVar15 == 0);\n          }\n          else {\n            local_40->dbSize = ((int)local_58 / (int)local_4c) * (int)local_5c;\n            iVar15 = local_40->errCode;\n            if (iVar15 == 0) {\n              if ((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)) {\n                if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar15 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }\nLAB_00083f72:\n    if (iVar15 != 0) goto LAB_00083fca;\n    PVar12 = p->iNext;\nLAB_00083f79:\n    p->nPagecount = local_64;\n    p->nRemaining = (local_64 + 1) - PVar12;\n    if (local_64 < PVar12) goto LAB_00083fd3;\n    if (p->isAttached == 0) {\n      pPVar13 = p->pSrc->pBt->pPager;\n      p->pNext = pPVar13->pBackup;\n      pPVar13->pBackup = p;\n      p->isAttached = 1;\n    }\n    iVar15 = 0;\nLAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;\n    goto LAB_00083d18;\n  }\n  sqlite3_mutex_enter(p->pDestDb->mutex);\n  iVar15 = p->rc;\n  if ((iVar15 - 5U < 2) || (iVar15 == 0)) {\n    pBVar6 = p->pDest;\n    p_00 = p->pSrc;\n    pBVar5 = pBVar6->pBt;\n    pBVar10 = p_00->pBt;\n    local_5c = pBVar5->pPager;\n    pPVar13 = pBVar10->pPager;\n    if ((p->pDestDb != (sqlite3 *)0x0) && (pBVar10->inTransaction == '\x02')) {\n      local_50 = 0;\n      iVar15 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }\n    if (p_00->inTrans == '\0') goto LAB_00083dad;\nLAB_00083c9d:\n    local_50 = p->bDestLocked;\n    if (local_50 == 0) {\nLAB_00083e11:\n      iVar15 = sqlite3BtreeSetPageSize(pBVar6,pBVar10->pageSize,0,0);\n      if (iVar15 != 7) {\n        pBVar6 = p->pDest;\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }\n    local_50 = 0;\n    pPVar14 = local_5c;\n    goto LAB_00083cb8;\n  }\n  goto LAB_00083d1b;\n  while( true ) {\n    bVar17 = CARRY4(local_34,local_58);\n    local_34 = local_34 + local_58;\n    bVar4 = 1;\n    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar17;\n    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar4 = 0;\n    }\n    if (!(bool)(iVar15 == 0 & bVar4)) break;\nLAB_00084480:\n    pSrcPg = (DbPage *)0x0;\n    iVar19 = 0;\n    ppDVar18 = &pSrcPg;\n    iVar15 = __divdi3(local_34,local_30,local_58,(int)local_58 >> 0x1f);\n    iVar15 = (*pPVar13->xGet)(pPVar13,iVar15 + 1,ppDVar18,iVar19);\n    if (iVar15 == 0) {\n      iVar15 = (*psVar2->pMethods->xWrite)\n                         (psVar2,pSrcPg->pData,local_58,CONCAT44(local_30,local_34));\n      if (pSrcPg != (DbPage *)0x0) goto LAB_000844e2;\n    }\n    else {\n      if (pSrcPg == (DbPage *)0x0) goto LAB_000840d9;\nLAB_000844e2:\n      sqlite3PagerUnrefNotNull(pSrcPg);\n    }\n  }\nLAB_00084344:\n  if (iVar15 == 0) {\nLAB_0008434c:\n    iVar15 = (*psVar2->pMethods->xFileSize)(psVar2,(sqlite3_int64 *)&pSrcPg);\n    if ((iVar15 == 0) &&\n       ((CONCAT44(local_28,pSrcPg) <= lVar3 ||\n        (iVar15 = (*psVar2->pMethods->xTruncate)(psVar2,lVar3), iVar15 == 0)))) {\n      iVar15 = sqlite3PagerSync(local_40,(char *)0x0);\nLAB_00084248:\n      if (iVar15 == 0) {\nLAB_00084250:\n        if ((p->pDest->inTrans == '\0') ||\n           (iVar15 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar15 == 0)) {\n          iVar15 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }\nLAB_000840d9:\n  if (local_50 != 0) {\nLAB_00083fb9:\n    p_00 = p->pSrc;\nLAB_00083cf5:\n    uVar11 = p_00->inTrans;\n    if (uVar11 == '\x02') {\n      sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0);\n      p_00 = p->pSrc;\n      uVar11 = p_00->inTrans;\n    }\n    if (uVar11 != '\0') {\n      sqlite3BtreeCommitPhaseTwo(p_00,0);\n    }\n  }\n  if (iVar15 == 0xc0a) {\n    iVar15 = 7;\n  }\nLAB_00083d18:\n  p->rc = iVar15;\nLAB_00083d1b:\n  if (p->pDestDb != (sqlite3 *)0x0) {\n    sqlite3_mutex_leave(p->pDestDb->mutex);\n  }\nLAB_00083d33:\n  pBVar6 = p->pSrc;\n  if (pBVar6->sharable != '\0') {\n    piVar1 = &pBVar6->wantToLock;\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      unlockBtreeMutex((Btree *)pBVar6->pBt,(Btree *)&pBVar6->locked);\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 iVar15;\n}\n\n" comment comment comment comment comment (function_definition "int sqlite3_backup_step(sqlite3_backup *p,int nPage)\n\n{\n  int *piVar1;\n  sqlite3_file *psVar2;\n  longlong lVar3;\n  byte bVar4;\n  BtShared *pBVar5;\n  Btree *pBVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  BtShared *pBVar10;\n  u8 uVar11;\n  Btree *p_00;\n  Pgno PVar12;\n  Pager *pPVar13;\n  int rc;\n  Pager *pPVar14;\n  int iVar15;\n  uint uVar16;\n  int in_GS_OFFSET;\n  bool bVar17;\n  DbPage **ppDVar18;\n  int iVar19;\n  sqlite3_backup *in_stack_ffffff94;\n  uint local_64;\n  Pager *local_5c;\n  u32 local_58;\n  int local_54;\n  int local_50;\n  u32 local_4c;\n  Pager *local_40;\n  uint local_3c;\n  int local_38;\n  uint local_34;\n  int local_30;\n  DbPage *pSrcPg;\n  undefined4 local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x83c09;\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    iVar15 = p->rc;\n    if ((1 < iVar15 - 5U) && (iVar15 != 0)) goto LAB_00083d33;\n    pBVar6 = p->pDest;\n    p_00 = p->pSrc;\n    pBVar5 = pBVar6->pBt;\n    pBVar10 = p_00->pBt;\n    local_5c = pBVar5->pPager;\n    pPVar13 = pBVar10->pPager;\n    if (p_00->inTrans != '\0') goto LAB_00083c9d;\nLAB_00083dad:\n    iVar15 = sqlite3BtreeBeginTrans(p_00,0,(int *)0x0);\n    if (iVar15 == 0 && p->bDestLocked == 0) {\n      pBVar6 = p->pDest;\n      local_50 = 1;\n      pBVar10 = p->pSrc->pBt;\n      goto LAB_00083e11;\n    }\n    pBVar6 = p->pDest;\n    if (iVar15 != 0) {\n      pBVar5 = pBVar6->pBt;\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = pBVar5->pPager;\n      pBVar10 = p->pSrc->pBt;\n      goto LAB_00083e6b;\n    }\n    local_50 = 1;\nLAB_00083e2f:\n    if (p->bDestLocked != 0) {\n      p_00 = p->pSrc;\n      pBVar5 = pBVar6->pBt;\n      pBVar10 = p_00->pBt;\n      pPVar14 = pBVar5->pPager;\nLAB_00083cb8:\n      local_4c = pBVar5->pageSize;\n      local_58 = pBVar10->pageSize;\n      local_64 = pBVar10->nPage;\n      bVar17 = pPVar14->journalMode == '\x05';\n      if (!bVar17) {\n        local_40 = local_5c;\n        iVar15 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        PVar12 = p->iNext;\n        if ((nPage != 0) && (PVar12 <= local_64)) {\n          local_40 = local_5c;\n          bVar17 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar17 = true;\n        goto LAB_00083f79;\n      }\n      iVar15 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }\n    iVar15 = sqlite3BtreeBeginTrans(pBVar6,2,(int *)&p->iDestSchema);\n    if (iVar15 == 0) {\n      p_00 = p->pSrc;\n      p->bDestLocked = 1;\n      pBVar5 = p->pDest->pBt;\n      pBVar10 = p_00->pBt;\n      pPVar14 = pBVar5->pPager;\n      goto LAB_00083cb8;\n    }\nLAB_00083e51:\n    pBVar5 = p->pDest->pBt;\n    pBVar10 = p->pSrc->pBt;\n    local_40 = local_5c;\n    local_5c = pBVar5->pPager;\nLAB_00083e6b:\n    local_4c = pBVar5->pageSize;\n    local_58 = pBVar10->pageSize;\n    bVar17 = local_5c->journalMode == '\x05';\n    local_64 = pBVar10->nPage;\nLAB_00083e8d:\n    if ((nPage != 0) && (PVar12 = p->iNext, PVar12 <= local_64)) {\n      if (iVar15 == 0) {\nLAB_00083eae:\n        uVar16 = 0;\n        uVar7 = local_58;\n        while( true ) {\n          if ((uint)sqlite3PendingByte / uVar7 + 1 == PVar12) {\n            iVar15 = 0;\n          }\n          else {\n            iVar19 = 2;\n            ppDVar18 = &pSrcPg;\n            iVar15 = (*pPVar13->xGet)(pPVar13,PVar12,&pSrcPg,2);\n            if ((iVar15 == 0) &&\n               (iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            PVar12 = p->iNext;\n          }\n          PVar12 = PVar12 + 1;\n          uVar16 = uVar16 + 1;\n          p->iNext = PVar12;\n          if (((uint)nPage <= uVar16) || (local_64 < PVar12)) goto LAB_00083f72;\n          if (iVar15 != 0) break;\n          uVar7 = p->pSrc->pBt->pageSize;\n        }\n      }\nLAB_00083fca:\n      if (iVar15 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      pBVar6 = p->pDest;\n      local_5c = (Pager *)local_64;\n      if (local_64 == 0) {\n        if (pBVar6->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar6);\n        }\n        pBVar5 = pBVar6->pBt;\n        pBVar5->nPage = 0;\n        iVar15 = newDatabase(pBVar5);\n        if (pBVar6->sharable != '\0') {\n          piVar1 = &pBVar6->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar6);\n          }\n        }\n        if ((iVar15 != 0) && (iVar15 != 0x65)) goto LAB_000840d9;\n        pBVar6 = p->pDest;\n        local_5c = (Pager *)0x1;\n      }\n      iVar15 = sqlite3BtreeUpdateMeta(pBVar6,1,p->iDestSchema + 1);\n      if (iVar15 == 0) {\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((!bVar17) || (iVar15 = sqlite3BtreeSetVersion(p->pDest,2), iVar15 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar7 = (int)(((int)local_5c - 1U) + (int)local_4c / (int)local_58) /\n                    ((int)local_4c / (int)local_58);\n            uVar16 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n            if (uVar16 + 1 == uVar7) {\n              uVar7 = uVar16;\n            }\n            lVar3 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            psVar2 = local_40->fd;\n            uVar16 = local_40->dbSize;\nLAB_00084096:\n            do {\n              if (uVar16 < uVar7) {\nLAB_00084288:\n                iVar15 = local_40->errCode;\n                if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar8 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n              uVar9 = uVar7;\n              if (uVar8 + 1 == uVar7) {\n                uVar9 = uVar8 + 2;\n                if (uVar16 < uVar9) goto LAB_00084288;\n                if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0);\n              if (iVar15 != 0) break;\n              iVar15 = sqlite3PagerWrite(pSrcPg);\n              if (pSrcPg == (DbPage *)0x0) {\n                uVar7 = uVar9 + 1;\n                if (iVar15 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar7 = uVar9 + 1;\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            } while (iVar15 == 0);\n          }\n          else {\n            local_40->dbSize = ((int)local_58 / (int)local_4c) * (int)local_5c;\n            iVar15 = local_40->errCode;\n            if (iVar15 == 0) {\n              if ((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)) {\n                if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar15 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }\nLAB_00083f72:\n    if (iVar15 != 0) goto LAB_00083fca;\n    PVar12 = p->iNext;\nLAB_00083f79:\n    p->nPagecount = local_64;\n    p->nRemaining = (local_64 + 1) - PVar12;\n    if (local_64 < PVar12) goto LAB_00083fd3;\n    if (p->isAttached == 0) {\n      pPVar13 = p->pSrc->pBt->pPager;\n      p->pNext = pPVar13->pBackup;\n      pPVar13->pBackup = p;\n      p->isAttached = 1;\n    }\n    iVar15 = 0;\nLAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;\n    goto LAB_00083d18;\n  }\n  sqlite3_mutex_enter(p->pDestDb->mutex);\n  iVar15 = p->rc;\n  if ((iVar15 - 5U < 2) || (iVar15 == 0)) {\n    pBVar6 = p->pDest;\n    p_00 = p->pSrc;\n    pBVar5 = pBVar6->pBt;\n    pBVar10 = p_00->pBt;\n    local_5c = pBVar5->pPager;\n    pPVar13 = pBVar10->pPager;\n    if ((p->pDestDb != (sqlite3 *)0x0) && (pBVar10->inTransaction == '\x02')) {\n      local_50 = 0;\n      iVar15 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }\n    if (p_00->inTrans == '\0') goto LAB_00083dad;\nLAB_00083c9d:\n    local_50 = p->bDestLocked;\n    if (local_50 == 0) {\nLAB_00083e11:\n      iVar15 = sqlite3BtreeSetPageSize(pBVar6,pBVar10->pageSize,0,0);\n      if (iVar15 != 7) {\n        pBVar6 = p->pDest;\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }\n    local_50 = 0;\n    pPVar14 = local_5c;\n    goto LAB_00083cb8;\n  }\n  goto LAB_00083d1b;\n  while( true ) {\n    bVar17 = CARRY4(local_34,local_58);\n    local_34 = local_34 + local_58;\n    bVar4 = 1;\n    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar17;\n    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar4 = 0;\n    }\n    if (!(bool)(iVar15 == 0 & bVar4)) break;\nLAB_00084480:\n    pSrcPg = (DbPage *)0x0;\n    iVar19 = 0;\n    ppDVar18 = &pSrcPg;\n    iVar15 = __divdi3(local_34,local_30,local_58,(int)local_58 >> 0x1f);\n    iVar15 = (*pPVar13->xGet)(pPVar13,iVar15 + 1,ppDVar18,iVar19);\n    if (iVar15 == 0) {\n      iVar15 = (*psVar2->pMethods->xWrite)\n                         (psVar2,pSrcPg->pData,local_58,CONCAT44(local_30,local_34));\n      if (pSrcPg != (DbPage *)0x0) goto LAB_000844e2;\n    }\n    else {\n      if (pSrcPg == (DbPage *)0x0) goto LAB_000840d9;\nLAB_000844e2:\n      sqlite3PagerUnrefNotNull(pSrcPg);\n    }\n  }\nLAB_00084344:\n  if (iVar15 == 0) {\nLAB_0008434c:\n    iVar15 = (*psVar2->pMethods->xFileSize)(psVar2,(sqlite3_int64 *)&pSrcPg);\n    if ((iVar15 == 0) &&\n       ((CONCAT44(local_28,pSrcPg) <= lVar3 ||\n        (iVar15 = (*psVar2->pMethods->xTruncate)(psVar2,lVar3), iVar15 == 0)))) {\n      iVar15 = sqlite3PagerSync(local_40,(char *)0x0);\nLAB_00084248:\n      if (iVar15 == 0) {\nLAB_00084250:\n        if ((p->pDest->inTrans == '\0') ||\n           (iVar15 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar15 == 0)) {\n          iVar15 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }\nLAB_000840d9:\n  if (local_50 != 0) {\nLAB_00083fb9:\n    p_00 = p->pSrc;\nLAB_00083cf5:\n    uVar11 = p_00->inTrans;\n    if (uVar11 == '\x02') {\n      sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0);\n      p_00 = p->pSrc;\n      uVar11 = p_00->inTrans;\n    }\n    if (uVar11 != '\0') {\n      sqlite3BtreeCommitPhaseTwo(p_00,0);\n    }\n  }\n  if (iVar15 == 0xc0a) {\n    iVar15 = 7;\n  }\nLAB_00083d18:\n  p->rc = iVar15;\nLAB_00083d1b:\n  if (p->pDestDb != (sqlite3 *)0x0) {\n    sqlite3_mutex_leave(p->pDestDb->mutex);\n  }\nLAB_00083d33:\n  pBVar6 = p->pSrc;\n  if (pBVar6->sharable != '\0') {\n    piVar1 = &pBVar6->wantToLock;\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      unlockBtreeMutex((Btree *)pBVar6->pBt,(Btree *)&pBVar6->locked);\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 iVar15;\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  sqlite3_file *psVar2;\n  longlong lVar3;\n  byte bVar4;\n  BtShared *pBVar5;\n  Btree *pBVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  BtShared *pBVar10;\n  u8 uVar11;\n  Btree *p_00;\n  Pgno PVar12;\n  Pager *pPVar13;\n  int rc;\n  Pager *pPVar14;\n  int iVar15;\n  uint uVar16;\n  int in_GS_OFFSET;\n  bool bVar17;\n  DbPage **ppDVar18;\n  int iVar19;\n  sqlite3_backup *in_stack_ffffff94;\n  uint local_64;\n  Pager *local_5c;\n  u32 local_58;\n  int local_54;\n  int local_50;\n  u32 local_4c;\n  Pager *local_40;\n  uint local_3c;\n  int local_38;\n  uint local_34;\n  int local_30;\n  DbPage *pSrcPg;\n  undefined4 local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x83c09;\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    iVar15 = p->rc;\n    if ((1 < iVar15 - 5U) && (iVar15 != 0)) goto LAB_00083d33;\n    pBVar6 = p->pDest;\n    p_00 = p->pSrc;\n    pBVar5 = pBVar6->pBt;\n    pBVar10 = p_00->pBt;\n    local_5c = pBVar5->pPager;\n    pPVar13 = pBVar10->pPager;\n    if (p_00->inTrans != '\0') goto LAB_00083c9d;\nLAB_00083dad:\n    iVar15 = sqlite3BtreeBeginTrans(p_00,0,(int *)0x0);\n    if (iVar15 == 0 && p->bDestLocked == 0) {\n      pBVar6 = p->pDest;\n      local_50 = 1;\n      pBVar10 = p->pSrc->pBt;\n      goto LAB_00083e11;\n    }\n    pBVar6 = p->pDest;\n    if (iVar15 != 0) {\n      pBVar5 = pBVar6->pBt;\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = pBVar5->pPager;\n      pBVar10 = p->pSrc->pBt;\n      goto LAB_00083e6b;\n    }\n    local_50 = 1;\nLAB_00083e2f:\n    if (p->bDestLocked != 0) {\n      p_00 = p->pSrc;\n      pBVar5 = pBVar6->pBt;\n      pBVar10 = p_00->pBt;\n      pPVar14 = pBVar5->pPager;\nLAB_00083cb8:\n      local_4c = pBVar5->pageSize;\n      local_58 = pBVar10->pageSize;\n      local_64 = pBVar10->nPage;\n      bVar17 = pPVar14->journalMode == '\x05';\n      if (!bVar17) {\n        local_40 = local_5c;\n        iVar15 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        PVar12 = p->iNext;\n        if ((nPage != 0) && (PVar12 <= local_64)) {\n          local_40 = local_5c;\n          bVar17 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar17 = true;\n        goto LAB_00083f79;\n      }\n      iVar15 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }\n    iVar15 = sqlite3BtreeBeginTrans(pBVar6,2,(int *)&p->iDestSchema);\n    if (iVar15 == 0) {\n      p_00 = p->pSrc;\n      p->bDestLocked = 1;\n      pBVar5 = p->pDest->pBt;\n      pBVar10 = p_00->pBt;\n      pPVar14 = pBVar5->pPager;\n      goto LAB_00083cb8;\n    }\nLAB_00083e51:\n    pBVar5 = p->pDest->pBt;\n    pBVar10 = p->pSrc->pBt;\n    local_40 = local_5c;\n    local_5c = pBVar5->pPager;\nLAB_00083e6b:\n    local_4c = pBVar5->pageSize;\n    local_58 = pBVar10->pageSize;\n    bVar17 = local_5c->journalMode == '\x05';\n    local_64 = pBVar10->nPage;\nLAB_00083e8d:\n    if ((nPage != 0) && (PVar12 = p->iNext, PVar12 <= local_64)) {\n      if (iVar15 == 0) {\nLAB_00083eae:\n        uVar16 = 0;\n        uVar7 = local_58;\n        while( true ) {\n          if ((uint)sqlite3PendingByte / uVar7 + 1 == PVar12) {\n            iVar15 = 0;\n          }\n          else {\n            iVar19 = 2;\n            ppDVar18 = &pSrcPg;\n            iVar15 = (*pPVar13->xGet)(pPVar13,PVar12,&pSrcPg,2);\n            if ((iVar15 == 0) &&\n               (iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            PVar12 = p->iNext;\n          }\n          PVar12 = PVar12 + 1;\n          uVar16 = uVar16 + 1;\n          p->iNext = PVar12;\n          if (((uint)nPage <= uVar16) || (local_64 < PVar12)) goto LAB_00083f72;\n          if (iVar15 != 0) break;\n          uVar7 = p->pSrc->pBt->pageSize;\n        }\n      }\nLAB_00083fca:\n      if (iVar15 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      pBVar6 = p->pDest;\n      local_5c = (Pager *)local_64;\n      if (local_64 == 0) {\n        if (pBVar6->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar6);\n        }\n        pBVar5 = pBVar6->pBt;\n        pBVar5->nPage = 0;\n        iVar15 = newDatabase(pBVar5);\n        if (pBVar6->sharable != '\0') {\n          piVar1 = &pBVar6->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar6);\n          }\n        }\n        if ((iVar15 != 0) && (iVar15 != 0x65)) goto LAB_000840d9;\n        pBVar6 = p->pDest;\n        local_5c = (Pager *)0x1;\n      }\n      iVar15 = sqlite3BtreeUpdateMeta(pBVar6,1,p->iDestSchema + 1);\n      if (iVar15 == 0) {\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((!bVar17) || (iVar15 = sqlite3BtreeSetVersion(p->pDest,2), iVar15 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar7 = (int)(((int)local_5c - 1U) + (int)local_4c / (int)local_58) /\n                    ((int)local_4c / (int)local_58);\n            uVar16 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n            if (uVar16 + 1 == uVar7) {\n              uVar7 = uVar16;\n            }\n            lVar3 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            psVar2 = local_40->fd;\n            uVar16 = local_40->dbSize;\nLAB_00084096:\n            do {\n              if (uVar16 < uVar7) {\nLAB_00084288:\n                iVar15 = local_40->errCode;\n                if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar8 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n              uVar9 = uVar7;\n              if (uVar8 + 1 == uVar7) {\n                uVar9 = uVar8 + 2;\n                if (uVar16 < uVar9) goto LAB_00084288;\n                if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0);\n              if (iVar15 != 0) break;\n              iVar15 = sqlite3PagerWrite(pSrcPg);\n              if (pSrcPg == (DbPage *)0x0) {\n                uVar7 = uVar9 + 1;\n                if (iVar15 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar7 = uVar9 + 1;\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            } while (iVar15 == 0);\n          }\n          else {\n            local_40->dbSize = ((int)local_58 / (int)local_4c) * (int)local_5c;\n            iVar15 = local_40->errCode;\n            if (iVar15 == 0) {\n              if ((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)) {\n                if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar15 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }\nLAB_00083f72:\n    if (iVar15 != 0) goto LAB_00083fca;\n    PVar12 = p->iNext;\nLAB_00083f79:\n    p->nPagecount = local_64;\n    p->nRemaining = (local_64 + 1) - PVar12;\n    if (local_64 < PVar12) goto LAB_00083fd3;\n    if (p->isAttached == 0) {\n      pPVar13 = p->pSrc->pBt->pPager;\n      p->pNext = pPVar13->pBackup;\n      pPVar13->pBackup = p;\n      p->isAttached = 1;\n    }\n    iVar15 = 0;\nLAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;\n    goto LAB_00083d18;\n  }\n  sqlite3_mutex_enter(p->pDestDb->mutex);\n  iVar15 = p->rc;\n  if ((iVar15 - 5U < 2) || (iVar15 == 0)) {\n    pBVar6 = p->pDest;\n    p_00 = p->pSrc;\n    pBVar5 = pBVar6->pBt;\n    pBVar10 = p_00->pBt;\n    local_5c = pBVar5->pPager;\n    pPVar13 = pBVar10->pPager;\n    if ((p->pDestDb != (sqlite3 *)0x0) && (pBVar10->inTransaction == '\x02')) {\n      local_50 = 0;\n      iVar15 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }\n    if (p_00->inTrans == '\0') goto LAB_00083dad;\nLAB_00083c9d:\n    local_50 = p->bDestLocked;\n    if (local_50 == 0) {\nLAB_00083e11:\n      iVar15 = sqlite3BtreeSetPageSize(pBVar6,pBVar10->pageSize,0,0);\n      if (iVar15 != 7) {\n        pBVar6 = p->pDest;\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }\n    local_50 = 0;\n    pPVar14 = local_5c;\n    goto LAB_00083cb8;\n  }\n  goto LAB_00083d1b;\n  while( true ) {\n    bVar17 = CARRY4(local_34,local_58);\n    local_34 = local_34 + local_58;\n    bVar4 = 1;\n    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar17;\n    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar4 = 0;\n    }\n    if (!(bool)(iVar15 == 0 & bVar4)) break;\nLAB_00084480:\n    pSrcPg = (DbPage *)0x0;\n    iVar19 = 0;\n    ppDVar18 = &pSrcPg;\n    iVar15 = __divdi3(local_34,local_30,local_58,(int)local_58 >> 0x1f);\n    iVar15 = (*pPVar13->xGet)(pPVar13,iVar15 + 1,ppDVar18,iVar19);\n    if (iVar15 == 0) {\n      iVar15 = (*psVar2->pMethods->xWrite)\n                         (psVar2,pSrcPg->pData,local_58,CONCAT44(local_30,local_34));\n      if (pSrcPg != (DbPage *)0x0) goto LAB_000844e2;\n    }\n    else {\n      if (pSrcPg == (DbPage *)0x0) goto LAB_000840d9;\nLAB_000844e2:\n      sqlite3PagerUnrefNotNull(pSrcPg);\n    }\n  }\nLAB_00084344:\n  if (iVar15 == 0) {\nLAB_0008434c:\n    iVar15 = (*psVar2->pMethods->xFileSize)(psVar2,(sqlite3_int64 *)&pSrcPg);\n    if ((iVar15 == 0) &&\n       ((CONCAT44(local_28,pSrcPg) <= lVar3 ||\n        (iVar15 = (*psVar2->pMethods->xTruncate)(psVar2,lVar3), iVar15 == 0)))) {\n      iVar15 = sqlite3PagerSync(local_40,(char *)0x0);\nLAB_00084248:\n      if (iVar15 == 0) {\nLAB_00084250:\n        if ((p->pDest->inTrans == '\0') ||\n           (iVar15 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar15 == 0)) {\n          iVar15 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }\nLAB_000840d9:\n  if (local_50 != 0) {\nLAB_00083fb9:\n    p_00 = p->pSrc;\nLAB_00083cf5:\n    uVar11 = p_00->inTrans;\n    if (uVar11 == '\x02') {\n      sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0);\n      p_00 = p->pSrc;\n      uVar11 = p_00->inTrans;\n    }\n    if (uVar11 != '\0') {\n      sqlite3BtreeCommitPhaseTwo(p_00,0);\n    }\n  }\n  if (iVar15 == 0xc0a) {\n    iVar15 = 7;\n  }\nLAB_00083d18:\n  p->rc = iVar15;\nLAB_00083d1b:\n  if (p->pDestDb != (sqlite3 *)0x0) {\n    sqlite3_mutex_leave(p->pDestDb->mutex);\n  }\nLAB_00083d33:\n  pBVar6 = p->pSrc;\n  if (pBVar6->sharable != '\0') {\n    piVar1 = &pBVar6->wantToLock;\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      unlockBtreeMutex((Btree *)pBVar6->pBt,(Btree *)&pBVar6->locked);\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 iVar15;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "sqlite3_file *psVar2;" type_identifier (pointer_declarator "*psVar2" * identifier) ;) (declaration "longlong lVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "BtShared *pBVar5;" type_identifier (pointer_declarator "*pBVar5" * identifier) ;) (declaration "Btree *pBVar6;" type_identifier (pointer_declarator "*pBVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "BtShared *pBVar10;" type_identifier (pointer_declarator "*pBVar10" * identifier) ;) (declaration "u8 uVar11;" type_identifier identifier ;) (declaration "Btree *p_00;" type_identifier (pointer_declarator "*p_00" * identifier) ;) (declaration "Pgno PVar12;" type_identifier identifier ;) (declaration "Pager *pPVar13;" type_identifier (pointer_declarator "*pPVar13" * identifier) ;) (declaration "int rc;" primitive_type identifier ;) (declaration "Pager *pPVar14;" type_identifier (pointer_declarator "*pPVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "uint uVar16;" type_identifier 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 "sqlite3_backup *in_stack_ffffff94;" type_identifier (pointer_declarator "*in_stack_ffffff94" * identifier) ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "Pager *local_5c;" type_identifier (pointer_declarator "*local_5c" * identifier) ;) (declaration "u32 local_58;" type_identifier identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "u32 local_4c;" type_identifier identifier ;) (declaration "Pager *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "DbPage *pSrcPg;" type_identifier (pointer_declarator "*pSrcPg" * identifier) ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x83c09;" (assignment_expression "uStack_14 = 0x83c09" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "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    iVar15 = p->rc;\n    if ((1 < iVar15 - 5U) && (iVar15 != 0)) goto LAB_00083d33;\n    pBVar6 = p->pDest;\n    p_00 = p->pSrc;\n    pBVar5 = pBVar6->pBt;\n    pBVar10 = p_00->pBt;\n    local_5c = pBVar5->pPager;\n    pPVar13 = pBVar10->pPager;\n    if (p_00->inTrans != '\0') goto LAB_00083c9d;\nLAB_00083dad:\n    iVar15 = sqlite3BtreeBeginTrans(p_00,0,(int *)0x0);\n    if (iVar15 == 0 && p->bDestLocked == 0) {\n      pBVar6 = p->pDest;\n      local_50 = 1;\n      pBVar10 = p->pSrc->pBt;\n      goto LAB_00083e11;\n    }\n    pBVar6 = p->pDest;\n    if (iVar15 != 0) {\n      pBVar5 = pBVar6->pBt;\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = pBVar5->pPager;\n      pBVar10 = p->pSrc->pBt;\n      goto LAB_00083e6b;\n    }\n    local_50 = 1;\nLAB_00083e2f:\n    if (p->bDestLocked != 0) {\n      p_00 = p->pSrc;\n      pBVar5 = pBVar6->pBt;\n      pBVar10 = p_00->pBt;\n      pPVar14 = pBVar5->pPager;\nLAB_00083cb8:\n      local_4c = pBVar5->pageSize;\n      local_58 = pBVar10->pageSize;\n      local_64 = pBVar10->nPage;\n      bVar17 = pPVar14->journalMode == '\x05';\n      if (!bVar17) {\n        local_40 = local_5c;\n        iVar15 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        PVar12 = p->iNext;\n        if ((nPage != 0) && (PVar12 <= local_64)) {\n          local_40 = local_5c;\n          bVar17 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar17 = true;\n        goto LAB_00083f79;\n      }\n      iVar15 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }\n    iVar15 = sqlite3BtreeBeginTrans(pBVar6,2,(int *)&p->iDestSchema);\n    if (iVar15 == 0) {\n      p_00 = p->pSrc;\n      p->bDestLocked = 1;\n      pBVar5 = p->pDest->pBt;\n      pBVar10 = p_00->pBt;\n      pPVar14 = pBVar5->pPager;\n      goto LAB_00083cb8;\n    }\nLAB_00083e51:\n    pBVar5 = p->pDest->pBt;\n    pBVar10 = p->pSrc->pBt;\n    local_40 = local_5c;\n    local_5c = pBVar5->pPager;\nLAB_00083e6b:\n    local_4c = pBVar5->pageSize;\n    local_58 = pBVar10->pageSize;\n    bVar17 = local_5c->journalMode == '\x05';\n    local_64 = pBVar10->nPage;\nLAB_00083e8d:\n    if ((nPage != 0) && (PVar12 = p->iNext, PVar12 <= local_64)) {\n      if (iVar15 == 0) {\nLAB_00083eae:\n        uVar16 = 0;\n        uVar7 = local_58;\n        while( true ) {\n          if ((uint)sqlite3PendingByte / uVar7 + 1 == PVar12) {\n            iVar15 = 0;\n          }\n          else {\n            iVar19 = 2;\n            ppDVar18 = &pSrcPg;\n            iVar15 = (*pPVar13->xGet)(pPVar13,PVar12,&pSrcPg,2);\n            if ((iVar15 == 0) &&\n               (iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            PVar12 = p->iNext;\n          }\n          PVar12 = PVar12 + 1;\n          uVar16 = uVar16 + 1;\n          p->iNext = PVar12;\n          if (((uint)nPage <= uVar16) || (local_64 < PVar12)) goto LAB_00083f72;\n          if (iVar15 != 0) break;\n          uVar7 = p->pSrc->pBt->pageSize;\n        }\n      }\nLAB_00083fca:\n      if (iVar15 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      pBVar6 = p->pDest;\n      local_5c = (Pager *)local_64;\n      if (local_64 == 0) {\n        if (pBVar6->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar6);\n        }\n        pBVar5 = pBVar6->pBt;\n        pBVar5->nPage = 0;\n        iVar15 = newDatabase(pBVar5);\n        if (pBVar6->sharable != '\0') {\n          piVar1 = &pBVar6->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar6);\n          }\n        }\n        if ((iVar15 != 0) && (iVar15 != 0x65)) goto LAB_000840d9;\n        pBVar6 = p->pDest;\n        local_5c = (Pager *)0x1;\n      }\n      iVar15 = sqlite3BtreeUpdateMeta(pBVar6,1,p->iDestSchema + 1);\n      if (iVar15 == 0) {\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((!bVar17) || (iVar15 = sqlite3BtreeSetVersion(p->pDest,2), iVar15 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar7 = (int)(((int)local_5c - 1U) + (int)local_4c / (int)local_58) /\n                    ((int)local_4c / (int)local_58);\n            uVar16 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n            if (uVar16 + 1 == uVar7) {\n              uVar7 = uVar16;\n            }\n            lVar3 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            psVar2 = local_40->fd;\n            uVar16 = local_40->dbSize;\nLAB_00084096:\n            do {\n              if (uVar16 < uVar7) {\nLAB_00084288:\n                iVar15 = local_40->errCode;\n                if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar8 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n              uVar9 = uVar7;\n              if (uVar8 + 1 == uVar7) {\n                uVar9 = uVar8 + 2;\n                if (uVar16 < uVar9) goto LAB_00084288;\n                if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0);\n              if (iVar15 != 0) break;\n              iVar15 = sqlite3PagerWrite(pSrcPg);\n              if (pSrcPg == (DbPage *)0x0) {\n                uVar7 = uVar9 + 1;\n                if (iVar15 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar7 = uVar9 + 1;\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            } while (iVar15 == 0);\n          }\n          else {\n            local_40->dbSize = ((int)local_58 / (int)local_4c) * (int)local_5c;\n            iVar15 = local_40->errCode;\n            if (iVar15 == 0) {\n              if ((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)) {\n                if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar15 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }\nLAB_00083f72:\n    if (iVar15 != 0) goto LAB_00083fca;\n    PVar12 = p->iNext;\nLAB_00083f79:\n    p->nPagecount = local_64;\n    p->nRemaining = (local_64 + 1) - PVar12;\n    if (local_64 < PVar12) goto LAB_00083fd3;\n    if (p->isAttached == 0) {\n      pPVar13 = p->pSrc->pBt->pPager;\n      p->pNext = pPVar13->pBackup;\n      pPVar13->pBackup = p;\n      p->isAttached = 1;\n    }\n    iVar15 = 0;\nLAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;\n    goto LAB_00083d18;\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    iVar15 = p->rc;\n    if ((1 < iVar15 - 5U) && (iVar15 != 0)) goto LAB_00083d33;\n    pBVar6 = p->pDest;\n    p_00 = p->pSrc;\n    pBVar5 = pBVar6->pBt;\n    pBVar10 = p_00->pBt;\n    local_5c = pBVar5->pPager;\n    pPVar13 = pBVar10->pPager;\n    if (p_00->inTrans != '\0') goto LAB_00083c9d;\nLAB_00083dad:\n    iVar15 = sqlite3BtreeBeginTrans(p_00,0,(int *)0x0);\n    if (iVar15 == 0 && p->bDestLocked == 0) {\n      pBVar6 = p->pDest;\n      local_50 = 1;\n      pBVar10 = p->pSrc->pBt;\n      goto LAB_00083e11;\n    }\n    pBVar6 = p->pDest;\n    if (iVar15 != 0) {\n      pBVar5 = pBVar6->pBt;\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = pBVar5->pPager;\n      pBVar10 = p->pSrc->pBt;\n      goto LAB_00083e6b;\n    }\n    local_50 = 1;\nLAB_00083e2f:\n    if (p->bDestLocked != 0) {\n      p_00 = p->pSrc;\n      pBVar5 = pBVar6->pBt;\n      pBVar10 = p_00->pBt;\n      pPVar14 = pBVar5->pPager;\nLAB_00083cb8:\n      local_4c = pBVar5->pageSize;\n      local_58 = pBVar10->pageSize;\n      local_64 = pBVar10->nPage;\n      bVar17 = pPVar14->journalMode == '\x05';\n      if (!bVar17) {\n        local_40 = local_5c;\n        iVar15 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        PVar12 = p->iNext;\n        if ((nPage != 0) && (PVar12 <= local_64)) {\n          local_40 = local_5c;\n          bVar17 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar17 = true;\n        goto LAB_00083f79;\n      }\n      iVar15 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }\n    iVar15 = sqlite3BtreeBeginTrans(pBVar6,2,(int *)&p->iDestSchema);\n    if (iVar15 == 0) {\n      p_00 = p->pSrc;\n      p->bDestLocked = 1;\n      pBVar5 = p->pDest->pBt;\n      pBVar10 = p_00->pBt;\n      pPVar14 = pBVar5->pPager;\n      goto LAB_00083cb8;\n    }\nLAB_00083e51:\n    pBVar5 = p->pDest->pBt;\n    pBVar10 = p->pSrc->pBt;\n    local_40 = local_5c;\n    local_5c = pBVar5->pPager;\nLAB_00083e6b:\n    local_4c = pBVar5->pageSize;\n    local_58 = pBVar10->pageSize;\n    bVar17 = local_5c->journalMode == '\x05';\n    local_64 = pBVar10->nPage;\nLAB_00083e8d:\n    if ((nPage != 0) && (PVar12 = p->iNext, PVar12 <= local_64)) {\n      if (iVar15 == 0) {\nLAB_00083eae:\n        uVar16 = 0;\n        uVar7 = local_58;\n        while( true ) {\n          if ((uint)sqlite3PendingByte / uVar7 + 1 == PVar12) {\n            iVar15 = 0;\n          }\n          else {\n            iVar19 = 2;\n            ppDVar18 = &pSrcPg;\n            iVar15 = (*pPVar13->xGet)(pPVar13,PVar12,&pSrcPg,2);\n            if ((iVar15 == 0) &&\n               (iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            PVar12 = p->iNext;\n          }\n          PVar12 = PVar12 + 1;\n          uVar16 = uVar16 + 1;\n          p->iNext = PVar12;\n          if (((uint)nPage <= uVar16) || (local_64 < PVar12)) goto LAB_00083f72;\n          if (iVar15 != 0) break;\n          uVar7 = p->pSrc->pBt->pageSize;\n        }\n      }\nLAB_00083fca:\n      if (iVar15 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      pBVar6 = p->pDest;\n      local_5c = (Pager *)local_64;\n      if (local_64 == 0) {\n        if (pBVar6->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar6);\n        }\n        pBVar5 = pBVar6->pBt;\n        pBVar5->nPage = 0;\n        iVar15 = newDatabase(pBVar5);\n        if (pBVar6->sharable != '\0') {\n          piVar1 = &pBVar6->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar6);\n          }\n        }\n        if ((iVar15 != 0) && (iVar15 != 0x65)) goto LAB_000840d9;\n        pBVar6 = p->pDest;\n        local_5c = (Pager *)0x1;\n      }\n      iVar15 = sqlite3BtreeUpdateMeta(pBVar6,1,p->iDestSchema + 1);\n      if (iVar15 == 0) {\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((!bVar17) || (iVar15 = sqlite3BtreeSetVersion(p->pDest,2), iVar15 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar7 = (int)(((int)local_5c - 1U) + (int)local_4c / (int)local_58) /\n                    ((int)local_4c / (int)local_58);\n            uVar16 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n            if (uVar16 + 1 == uVar7) {\n              uVar7 = uVar16;\n            }\n            lVar3 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            psVar2 = local_40->fd;\n            uVar16 = local_40->dbSize;\nLAB_00084096:\n            do {\n              if (uVar16 < uVar7) {\nLAB_00084288:\n                iVar15 = local_40->errCode;\n                if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar8 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n              uVar9 = uVar7;\n              if (uVar8 + 1 == uVar7) {\n                uVar9 = uVar8 + 2;\n                if (uVar16 < uVar9) goto LAB_00084288;\n                if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0);\n              if (iVar15 != 0) break;\n              iVar15 = sqlite3PagerWrite(pSrcPg);\n              if (pSrcPg == (DbPage *)0x0) {\n                uVar7 = uVar9 + 1;\n                if (iVar15 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar7 = uVar9 + 1;\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            } while (iVar15 == 0);\n          }\n          else {\n            local_40->dbSize = ((int)local_58 / (int)local_4c) * (int)local_5c;\n            iVar15 = local_40->errCode;\n            if (iVar15 == 0) {\n              if ((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)) {\n                if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar15 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }\nLAB_00083f72:\n    if (iVar15 != 0) goto LAB_00083fca;\n    PVar12 = p->iNext;\nLAB_00083f79:\n    p->nPagecount = local_64;\n    p->nRemaining = (local_64 + 1) - PVar12;\n    if (local_64 < PVar12) goto LAB_00083fd3;\n    if (p->isAttached == 0) {\n      pPVar13 = p->pSrc->pBt->pPager;\n      p->pNext = pPVar13->pBackup;\n      pPVar13->pBackup = p;\n      p->isAttached = 1;\n    }\n    iVar15 = 0;\nLAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;\n    goto LAB_00083d18;\n  }" { (expression_statement "iVar15 = p->rc;" (assignment_expression "iVar15 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;) (if_statement "if ((1 < iVar15 - 5U) && (iVar15 != 0)) goto LAB_00083d33;" if (parenthesized_expression "((1 < iVar15 - 5U) && (iVar15 != 0))" ( (binary_expression "(1 < iVar15 - 5U) && (iVar15 != 0)" (parenthesized_expression "(1 < iVar15 - 5U)" ( (binary_expression "1 < iVar15 - 5U" number_literal < (binary_expression "iVar15 - 5U" identifier - number_literal)) )) && (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_00083d33;" goto statement_identifier ;)) (expression_statement "pBVar6 = p->pDest;" (assignment_expression "pBVar6 = p->pDest" identifier = (field_expression "p->pDest" identifier -> field_identifier)) ;) (expression_statement "p_00 = p->pSrc;" (assignment_expression "p_00 = p->pSrc" identifier = (field_expression "p->pSrc" identifier -> field_identifier)) ;) (expression_statement "pBVar5 = pBVar6->pBt;" (assignment_expression "pBVar5 = pBVar6->pBt" identifier = (field_expression "pBVar6->pBt" identifier -> field_identifier)) ;) (expression_statement "pBVar10 = p_00->pBt;" (assignment_expression "pBVar10 = p_00->pBt" identifier = (field_expression "p_00->pBt" identifier -> field_identifier)) ;) (expression_statement "local_5c = pBVar5->pPager;" (assignment_expression "local_5c = pBVar5->pPager" identifier = (field_expression "pBVar5->pPager" identifier -> field_identifier)) ;) (expression_statement "pPVar13 = pBVar10->pPager;" (assignment_expression "pPVar13 = pBVar10->pPager" identifier = (field_expression "pBVar10->pPager" identifier -> field_identifier)) ;) (if_statement "if (p_00->inTrans != '\0') goto LAB_00083c9d;" 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_00083c9d;" goto statement_identifier ;)) (labeled_statement "LAB_00083dad:\n    iVar15 = sqlite3BtreeBeginTrans(p_00,0,(int *)0x0);" statement_identifier : (expression_statement "iVar15 = sqlite3BtreeBeginTrans(p_00,0,(int *)0x0);" (assignment_expression "iVar15 = 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) )))) ;)) (if_statement "if (iVar15 == 0 && p->bDestLocked == 0) {\n      pBVar6 = p->pDest;\n      local_50 = 1;\n      pBVar10 = p->pSrc->pBt;\n      goto LAB_00083e11;\n    }" if (parenthesized_expression "(iVar15 == 0 && p->bDestLocked == 0)" ( (binary_expression "iVar15 == 0 && p->bDestLocked == 0" (binary_expression "iVar15 == 0" identifier == number_literal) && (binary_expression "p->bDestLocked == 0" (field_expression "p->bDestLocked" identifier -> field_identifier) == number_literal)) )) (compound_statement "{\n      pBVar6 = p->pDest;\n      local_50 = 1;\n      pBVar10 = p->pSrc->pBt;\n      goto LAB_00083e11;\n    }" { (expression_statement "pBVar6 = p->pDest;" (assignment_expression "pBVar6 = p->pDest" identifier = (field_expression "p->pDest" identifier -> field_identifier)) ;) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (expression_statement "pBVar10 = p->pSrc->pBt;" (assignment_expression "pBVar10 = p->pSrc->pBt" identifier = (field_expression "p->pSrc->pBt" (field_expression "p->pSrc" identifier -> field_identifier) -> field_identifier)) ;) (goto_statement "goto LAB_00083e11;" goto statement_identifier ;) })) (expression_statement "pBVar6 = p->pDest;" (assignment_expression "pBVar6 = p->pDest" identifier = (field_expression "p->pDest" identifier -> field_identifier)) ;) (if_statement "if (iVar15 != 0) {\n      pBVar5 = pBVar6->pBt;\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = pBVar5->pPager;\n      pBVar10 = p->pSrc->pBt;\n      goto LAB_00083e6b;\n    }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n      pBVar5 = pBVar6->pBt;\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = pBVar5->pPager;\n      pBVar10 = p->pSrc->pBt;\n      goto LAB_00083e6b;\n    }" { (expression_statement "pBVar5 = pBVar6->pBt;" (assignment_expression "pBVar5 = pBVar6->pBt" identifier = (field_expression "pBVar6->pBt" identifier -> field_identifier)) ;) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" identifier = identifier) ;) (expression_statement "local_5c = pBVar5->pPager;" (assignment_expression "local_5c = pBVar5->pPager" identifier = (field_expression "pBVar5->pPager" identifier -> field_identifier)) ;) (expression_statement "pBVar10 = p->pSrc->pBt;" (assignment_expression "pBVar10 = p->pSrc->pBt" identifier = (field_expression "p->pSrc->pBt" (field_expression "p->pSrc" identifier -> field_identifier) -> field_identifier)) ;) (goto_statement "goto LAB_00083e6b;" goto statement_identifier ;) })) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00083e2f:\n    if (p->bDestLocked != 0) {\n      p_00 = p->pSrc;\n      pBVar5 = pBVar6->pBt;\n      pBVar10 = p_00->pBt;\n      pPVar14 = pBVar5->pPager;\nLAB_00083cb8:\n      local_4c = pBVar5->pageSize;\n      local_58 = pBVar10->pageSize;\n      local_64 = pBVar10->nPage;\n      bVar17 = pPVar14->journalMode == '\x05';\n      if (!bVar17) {\n        local_40 = local_5c;\n        iVar15 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        PVar12 = p->iNext;\n        if ((nPage != 0) && (PVar12 <= local_64)) {\n          local_40 = local_5c;\n          bVar17 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar17 = true;\n        goto LAB_00083f79;\n      }\n      iVar15 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }" statement_identifier : (if_statement "if (p->bDestLocked != 0) {\n      p_00 = p->pSrc;\n      pBVar5 = pBVar6->pBt;\n      pBVar10 = p_00->pBt;\n      pPVar14 = pBVar5->pPager;\nLAB_00083cb8:\n      local_4c = pBVar5->pageSize;\n      local_58 = pBVar10->pageSize;\n      local_64 = pBVar10->nPage;\n      bVar17 = pPVar14->journalMode == '\x05';\n      if (!bVar17) {\n        local_40 = local_5c;\n        iVar15 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        PVar12 = p->iNext;\n        if ((nPage != 0) && (PVar12 <= local_64)) {\n          local_40 = local_5c;\n          bVar17 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar17 = true;\n        goto LAB_00083f79;\n      }\n      iVar15 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }" if (parenthesized_expression "(p->bDestLocked != 0)" ( (binary_expression "p->bDestLocked != 0" (field_expression "p->bDestLocked" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n      p_00 = p->pSrc;\n      pBVar5 = pBVar6->pBt;\n      pBVar10 = p_00->pBt;\n      pPVar14 = pBVar5->pPager;\nLAB_00083cb8:\n      local_4c = pBVar5->pageSize;\n      local_58 = pBVar10->pageSize;\n      local_64 = pBVar10->nPage;\n      bVar17 = pPVar14->journalMode == '\x05';\n      if (!bVar17) {\n        local_40 = local_5c;\n        iVar15 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        PVar12 = p->iNext;\n        if ((nPage != 0) && (PVar12 <= local_64)) {\n          local_40 = local_5c;\n          bVar17 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar17 = true;\n        goto LAB_00083f79;\n      }\n      iVar15 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }" { (expression_statement "p_00 = p->pSrc;" (assignment_expression "p_00 = p->pSrc" identifier = (field_expression "p->pSrc" identifier -> field_identifier)) ;) (expression_statement "pBVar5 = pBVar6->pBt;" (assignment_expression "pBVar5 = pBVar6->pBt" identifier = (field_expression "pBVar6->pBt" identifier -> field_identifier)) ;) (expression_statement "pBVar10 = p_00->pBt;" (assignment_expression "pBVar10 = p_00->pBt" identifier = (field_expression "p_00->pBt" identifier -> field_identifier)) ;) (expression_statement "pPVar14 = pBVar5->pPager;" (assignment_expression "pPVar14 = pBVar5->pPager" identifier = (field_expression "pBVar5->pPager" identifier -> field_identifier)) ;) (labeled_statement "LAB_00083cb8:\n      local_4c = pBVar5->pageSize;" statement_identifier : (expression_statement "local_4c = pBVar5->pageSize;" (assignment_expression "local_4c = pBVar5->pageSize" identifier = (field_expression "pBVar5->pageSize" identifier -> field_identifier)) ;)) (expression_statement "local_58 = pBVar10->pageSize;" (assignment_expression "local_58 = pBVar10->pageSize" identifier = (field_expression "pBVar10->pageSize" identifier -> field_identifier)) ;) (expression_statement "local_64 = pBVar10->nPage;" (assignment_expression "local_64 = pBVar10->nPage" identifier = (field_expression "pBVar10->nPage" identifier -> field_identifier)) ;) (expression_statement "bVar17 = pPVar14->journalMode == '\x05';" (assignment_expression "bVar17 = pPVar14->journalMode == '\x05'" identifier = (binary_expression "pPVar14->journalMode == '\x05'" (field_expression "pPVar14->journalMode" identifier -> field_identifier) == (char_literal "'\x05'" ' escape_sequence '))) ;) (if_statement "if (!bVar17) {\n        local_40 = local_5c;\n        iVar15 = 0;\n        goto LAB_00083e8d;\n      }" if (parenthesized_expression "(!bVar17)" ( (unary_expression "!bVar17" ! identifier) )) (compound_statement "{\n        local_40 = local_5c;\n        iVar15 = 0;\n        goto LAB_00083e8d;\n      }" { (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" identifier = identifier) ;) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00083e8d;" goto statement_identifier ;) })) (if_statement "if (local_4c == local_58) {\n        PVar12 = p->iNext;\n        if ((nPage != 0) && (PVar12 <= local_64)) {\n          local_40 = local_5c;\n          bVar17 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar17 = true;\n        goto LAB_00083f79;\n      }" if (parenthesized_expression "(local_4c == local_58)" ( (binary_expression "local_4c == local_58" identifier == identifier) )) (compound_statement "{\n        PVar12 = p->iNext;\n        if ((nPage != 0) && (PVar12 <= local_64)) {\n          local_40 = local_5c;\n          bVar17 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar17 = true;\n        goto LAB_00083f79;\n      }" { (expression_statement "PVar12 = p->iNext;" (assignment_expression "PVar12 = p->iNext" identifier = (field_expression "p->iNext" identifier -> field_identifier)) ;) (if_statement "if ((nPage != 0) && (PVar12 <= local_64)) {\n          local_40 = local_5c;\n          bVar17 = true;\n          goto LAB_00083eae;\n        }" if (parenthesized_expression "((nPage != 0) && (PVar12 <= local_64))" ( (binary_expression "(nPage != 0) && (PVar12 <= local_64)" (parenthesized_expression "(nPage != 0)" ( (binary_expression "nPage != 0" identifier != number_literal) )) && (parenthesized_expression "(PVar12 <= local_64)" ( (binary_expression "PVar12 <= local_64" identifier <= identifier) ))) )) (compound_statement "{\n          local_40 = local_5c;\n          bVar17 = true;\n          goto LAB_00083eae;\n        }" { (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" identifier = identifier) ;) (expression_statement "bVar17 = true;" (assignment_expression "bVar17 = true" identifier = true) ;) (goto_statement "goto LAB_00083eae;" goto statement_identifier ;) })) (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" identifier = identifier) ;) (expression_statement "bVar17 = true;" (assignment_expression "bVar17 = true" identifier = true) ;) (goto_statement "goto LAB_00083f79;" goto statement_identifier ;) })) (expression_statement "iVar15 = 8;" (assignment_expression "iVar15 = 8" identifier = number_literal) ;) (if_statement "if (local_50 == 0) goto LAB_00083d18;" if (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00083d18;" goto statement_identifier ;)) (goto_statement "goto LAB_00083cf5;" goto statement_identifier ;) }))) (expression_statement "iVar15 = sqlite3BtreeBeginTrans(pBVar6,2,(int *)&p->iDestSchema);" (assignment_expression "iVar15 = sqlite3BtreeBeginTrans(pBVar6,2,(int *)&p->iDestSchema)" identifier = (call_expression "sqlite3BtreeBeginTrans(pBVar6,2,(int *)&p->iDestSchema)" identifier (argument_list "(pBVar6,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 (iVar15 == 0) {\n      p_00 = p->pSrc;\n      p->bDestLocked = 1;\n      pBVar5 = p->pDest->pBt;\n      pBVar10 = p_00->pBt;\n      pPVar14 = pBVar5->pPager;\n      goto LAB_00083cb8;\n    }" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\n      p_00 = p->pSrc;\n      p->bDestLocked = 1;\n      pBVar5 = p->pDest->pBt;\n      pBVar10 = p_00->pBt;\n      pPVar14 = pBVar5->pPager;\n      goto LAB_00083cb8;\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 "pBVar5 = p->pDest->pBt;" (assignment_expression "pBVar5 = p->pDest->pBt" identifier = (field_expression "p->pDest->pBt" (field_expression "p->pDest" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pBVar10 = p_00->pBt;" (assignment_expression "pBVar10 = p_00->pBt" identifier = (field_expression "p_00->pBt" identifier -> field_identifier)) ;) (expression_statement "pPVar14 = pBVar5->pPager;" (assignment_expression "pPVar14 = pBVar5->pPager" identifier = (field_expression "pBVar5->pPager" identifier -> field_identifier)) ;) (goto_statement "goto LAB_00083cb8;" goto statement_identifier ;) })) (labeled_statement "LAB_00083e51:\n    pBVar5 = p->pDest->pBt;" statement_identifier : (expression_statement "pBVar5 = p->pDest->pBt;" (assignment_expression "pBVar5 = p->pDest->pBt" identifier = (field_expression "p->pDest->pBt" (field_expression "p->pDest" identifier -> field_identifier) -> field_identifier)) ;)) (expression_statement "pBVar10 = p->pSrc->pBt;" (assignment_expression "pBVar10 = p->pSrc->pBt" identifier = (field_expression "p->pSrc->pBt" (field_expression "p->pSrc" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" identifier = identifier) ;) (expression_statement "local_5c = pBVar5->pPager;" (assignment_expression "local_5c = pBVar5->pPager" identifier = (field_expression "pBVar5->pPager" identifier -> field_identifier)) ;) (labeled_statement "LAB_00083e6b:\n    local_4c = pBVar5->pageSize;" statement_identifier : (expression_statement "local_4c = pBVar5->pageSize;" (assignment_expression "local_4c = pBVar5->pageSize" identifier = (field_expression "pBVar5->pageSize" identifier -> field_identifier)) ;)) (expression_statement "local_58 = pBVar10->pageSize;" (assignment_expression "local_58 = pBVar10->pageSize" identifier = (field_expression "pBVar10->pageSize" identifier -> field_identifier)) ;) (expression_statement "bVar17 = local_5c->journalMode == '\x05';" (assignment_expression "bVar17 = local_5c->journalMode == '\x05'" identifier = (binary_expression "local_5c->journalMode == '\x05'" (field_expression "local_5c->journalMode" identifier -> field_identifier) == (char_literal "'\x05'" ' escape_sequence '))) ;) (expression_statement "local_64 = pBVar10->nPage;" (assignment_expression "local_64 = pBVar10->nPage" identifier = (field_expression "pBVar10->nPage" identifier -> field_identifier)) ;) (labeled_statement "LAB_00083e8d:\n    if ((nPage != 0) && (PVar12 = p->iNext, PVar12 <= local_64)) {\n      if (iVar15 == 0) {\nLAB_00083eae:\n        uVar16 = 0;\n        uVar7 = local_58;\n        while( true ) {\n          if ((uint)sqlite3PendingByte / uVar7 + 1 == PVar12) {\n            iVar15 = 0;\n          }\n          else {\n            iVar19 = 2;\n            ppDVar18 = &pSrcPg;\n            iVar15 = (*pPVar13->xGet)(pPVar13,PVar12,&pSrcPg,2);\n            if ((iVar15 == 0) &&\n               (iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            PVar12 = p->iNext;\n          }\n          PVar12 = PVar12 + 1;\n          uVar16 = uVar16 + 1;\n          p->iNext = PVar12;\n          if (((uint)nPage <= uVar16) || (local_64 < PVar12)) goto LAB_00083f72;\n          if (iVar15 != 0) break;\n          uVar7 = p->pSrc->pBt->pageSize;\n        }\n      }\nLAB_00083fca:\n      if (iVar15 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      pBVar6 = p->pDest;\n      local_5c = (Pager *)local_64;\n      if (local_64 == 0) {\n        if (pBVar6->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar6);\n        }\n        pBVar5 = pBVar6->pBt;\n        pBVar5->nPage = 0;\n        iVar15 = newDatabase(pBVar5);\n        if (pBVar6->sharable != '\0') {\n          piVar1 = &pBVar6->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar6);\n          }\n        }\n        if ((iVar15 != 0) && (iVar15 != 0x65)) goto LAB_000840d9;\n        pBVar6 = p->pDest;\n        local_5c = (Pager *)0x1;\n      }\n      iVar15 = sqlite3BtreeUpdateMeta(pBVar6,1,p->iDestSchema + 1);\n      if (iVar15 == 0) {\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((!bVar17) || (iVar15 = sqlite3BtreeSetVersion(p->pDest,2), iVar15 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar7 = (int)(((int)local_5c - 1U) + (int)local_4c / (int)local_58) /\n                    ((int)local_4c / (int)local_58);\n            uVar16 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n            if (uVar16 + 1 == uVar7) {\n              uVar7 = uVar16;\n            }\n            lVar3 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            psVar2 = local_40->fd;\n            uVar16 = local_40->dbSize;\nLAB_00084096:\n            do {\n              if (uVar16 < uVar7) {\nLAB_00084288:\n                iVar15 = local_40->errCode;\n                if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar8 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n              uVar9 = uVar7;\n              if (uVar8 + 1 == uVar7) {\n                uVar9 = uVar8 + 2;\n                if (uVar16 < uVar9) goto LAB_00084288;\n                if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0);\n              if (iVar15 != 0) break;\n              iVar15 = sqlite3PagerWrite(pSrcPg);\n              if (pSrcPg == (DbPage *)0x0) {\n                uVar7 = uVar9 + 1;\n                if (iVar15 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar7 = uVar9 + 1;\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            } while (iVar15 == 0);\n          }\n          else {\n            local_40->dbSize = ((int)local_58 / (int)local_4c) * (int)local_5c;\n            iVar15 = local_40->errCode;\n            if (iVar15 == 0) {\n              if ((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)) {\n                if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar15 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }" statement_identifier : (if_statement "if ((nPage != 0) && (PVar12 = p->iNext, PVar12 <= local_64)) {\n      if (iVar15 == 0) {\nLAB_00083eae:\n        uVar16 = 0;\n        uVar7 = local_58;\n        while( true ) {\n          if ((uint)sqlite3PendingByte / uVar7 + 1 == PVar12) {\n            iVar15 = 0;\n          }\n          else {\n            iVar19 = 2;\n            ppDVar18 = &pSrcPg;\n            iVar15 = (*pPVar13->xGet)(pPVar13,PVar12,&pSrcPg,2);\n            if ((iVar15 == 0) &&\n               (iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            PVar12 = p->iNext;\n          }\n          PVar12 = PVar12 + 1;\n          uVar16 = uVar16 + 1;\n          p->iNext = PVar12;\n          if (((uint)nPage <= uVar16) || (local_64 < PVar12)) goto LAB_00083f72;\n          if (iVar15 != 0) break;\n          uVar7 = p->pSrc->pBt->pageSize;\n        }\n      }\nLAB_00083fca:\n      if (iVar15 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      pBVar6 = p->pDest;\n      local_5c = (Pager *)local_64;\n      if (local_64 == 0) {\n        if (pBVar6->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar6);\n        }\n        pBVar5 = pBVar6->pBt;\n        pBVar5->nPage = 0;\n        iVar15 = newDatabase(pBVar5);\n        if (pBVar6->sharable != '\0') {\n          piVar1 = &pBVar6->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar6);\n          }\n        }\n        if ((iVar15 != 0) && (iVar15 != 0x65)) goto LAB_000840d9;\n        pBVar6 = p->pDest;\n        local_5c = (Pager *)0x1;\n      }\n      iVar15 = sqlite3BtreeUpdateMeta(pBVar6,1,p->iDestSchema + 1);\n      if (iVar15 == 0) {\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((!bVar17) || (iVar15 = sqlite3BtreeSetVersion(p->pDest,2), iVar15 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar7 = (int)(((int)local_5c - 1U) + (int)local_4c / (int)local_58) /\n                    ((int)local_4c / (int)local_58);\n            uVar16 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n            if (uVar16 + 1 == uVar7) {\n              uVar7 = uVar16;\n            }\n            lVar3 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            psVar2 = local_40->fd;\n            uVar16 = local_40->dbSize;\nLAB_00084096:\n            do {\n              if (uVar16 < uVar7) {\nLAB_00084288:\n                iVar15 = local_40->errCode;\n                if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar8 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n              uVar9 = uVar7;\n              if (uVar8 + 1 == uVar7) {\n                uVar9 = uVar8 + 2;\n                if (uVar16 < uVar9) goto LAB_00084288;\n                if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0);\n              if (iVar15 != 0) break;\n              iVar15 = sqlite3PagerWrite(pSrcPg);\n              if (pSrcPg == (DbPage *)0x0) {\n                uVar7 = uVar9 + 1;\n                if (iVar15 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar7 = uVar9 + 1;\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            } while (iVar15 == 0);\n          }\n          else {\n            local_40->dbSize = ((int)local_58 / (int)local_4c) * (int)local_5c;\n            iVar15 = local_40->errCode;\n            if (iVar15 == 0) {\n              if ((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)) {\n                if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar15 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }" if (parenthesized_expression "((nPage != 0) && (PVar12 = p->iNext, PVar12 <= local_64))" ( (binary_expression "(nPage != 0) && (PVar12 = p->iNext, PVar12 <= local_64)" (parenthesized_expression "(nPage != 0)" ( (binary_expression "nPage != 0" identifier != number_literal) )) && (parenthesized_expression "(PVar12 = p->iNext, PVar12 <= local_64)" ( (comma_expression "PVar12 = p->iNext, PVar12 <= local_64" (assignment_expression "PVar12 = p->iNext" identifier = (field_expression "p->iNext" identifier -> field_identifier)) , (binary_expression "PVar12 <= local_64" identifier <= identifier)) ))) )) (compound_statement "{\n      if (iVar15 == 0) {\nLAB_00083eae:\n        uVar16 = 0;\n        uVar7 = local_58;\n        while( true ) {\n          if ((uint)sqlite3PendingByte / uVar7 + 1 == PVar12) {\n            iVar15 = 0;\n          }\n          else {\n            iVar19 = 2;\n            ppDVar18 = &pSrcPg;\n            iVar15 = (*pPVar13->xGet)(pPVar13,PVar12,&pSrcPg,2);\n            if ((iVar15 == 0) &&\n               (iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            PVar12 = p->iNext;\n          }\n          PVar12 = PVar12 + 1;\n          uVar16 = uVar16 + 1;\n          p->iNext = PVar12;\n          if (((uint)nPage <= uVar16) || (local_64 < PVar12)) goto LAB_00083f72;\n          if (iVar15 != 0) break;\n          uVar7 = p->pSrc->pBt->pageSize;\n        }\n      }\nLAB_00083fca:\n      if (iVar15 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      pBVar6 = p->pDest;\n      local_5c = (Pager *)local_64;\n      if (local_64 == 0) {\n        if (pBVar6->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar6);\n        }\n        pBVar5 = pBVar6->pBt;\n        pBVar5->nPage = 0;\n        iVar15 = newDatabase(pBVar5);\n        if (pBVar6->sharable != '\0') {\n          piVar1 = &pBVar6->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar6);\n          }\n        }\n        if ((iVar15 != 0) && (iVar15 != 0x65)) goto LAB_000840d9;\n        pBVar6 = p->pDest;\n        local_5c = (Pager *)0x1;\n      }\n      iVar15 = sqlite3BtreeUpdateMeta(pBVar6,1,p->iDestSchema + 1);\n      if (iVar15 == 0) {\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((!bVar17) || (iVar15 = sqlite3BtreeSetVersion(p->pDest,2), iVar15 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar7 = (int)(((int)local_5c - 1U) + (int)local_4c / (int)local_58) /\n                    ((int)local_4c / (int)local_58);\n            uVar16 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n            if (uVar16 + 1 == uVar7) {\n              uVar7 = uVar16;\n            }\n            lVar3 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            psVar2 = local_40->fd;\n            uVar16 = local_40->dbSize;\nLAB_00084096:\n            do {\n              if (uVar16 < uVar7) {\nLAB_00084288:\n                iVar15 = local_40->errCode;\n                if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar8 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n              uVar9 = uVar7;\n              if (uVar8 + 1 == uVar7) {\n                uVar9 = uVar8 + 2;\n                if (uVar16 < uVar9) goto LAB_00084288;\n                if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0);\n              if (iVar15 != 0) break;\n              iVar15 = sqlite3PagerWrite(pSrcPg);\n              if (pSrcPg == (DbPage *)0x0) {\n                uVar7 = uVar9 + 1;\n                if (iVar15 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar7 = uVar9 + 1;\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            } while (iVar15 == 0);\n          }\n          else {\n            local_40->dbSize = ((int)local_58 / (int)local_4c) * (int)local_5c;\n            iVar15 = local_40->errCode;\n            if (iVar15 == 0) {\n              if ((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)) {\n                if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar15 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }" { (if_statement "if (iVar15 == 0) {\nLAB_00083eae:\n        uVar16 = 0;\n        uVar7 = local_58;\n        while( true ) {\n          if ((uint)sqlite3PendingByte / uVar7 + 1 == PVar12) {\n            iVar15 = 0;\n          }\n          else {\n            iVar19 = 2;\n            ppDVar18 = &pSrcPg;\n            iVar15 = (*pPVar13->xGet)(pPVar13,PVar12,&pSrcPg,2);\n            if ((iVar15 == 0) &&\n               (iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            PVar12 = p->iNext;\n          }\n          PVar12 = PVar12 + 1;\n          uVar16 = uVar16 + 1;\n          p->iNext = PVar12;\n          if (((uint)nPage <= uVar16) || (local_64 < PVar12)) goto LAB_00083f72;\n          if (iVar15 != 0) break;\n          uVar7 = p->pSrc->pBt->pageSize;\n        }\n      }" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00083eae:\n        uVar16 = 0;\n        uVar7 = local_58;\n        while( true ) {\n          if ((uint)sqlite3PendingByte / uVar7 + 1 == PVar12) {\n            iVar15 = 0;\n          }\n          else {\n            iVar19 = 2;\n            ppDVar18 = &pSrcPg;\n            iVar15 = (*pPVar13->xGet)(pPVar13,PVar12,&pSrcPg,2);\n            if ((iVar15 == 0) &&\n               (iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            PVar12 = p->iNext;\n          }\n          PVar12 = PVar12 + 1;\n          uVar16 = uVar16 + 1;\n          p->iNext = PVar12;\n          if (((uint)nPage <= uVar16) || (local_64 < PVar12)) goto LAB_00083f72;\n          if (iVar15 != 0) break;\n          uVar7 = p->pSrc->pBt->pageSize;\n        }\n      }" { (labeled_statement "LAB_00083eae:\n        uVar16 = 0;" statement_identifier : (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;)) (expression_statement "uVar7 = local_58;" (assignment_expression "uVar7 = local_58" identifier = identifier) ;) (while_statement "while( true ) {\n          if ((uint)sqlite3PendingByte / uVar7 + 1 == PVar12) {\n            iVar15 = 0;\n          }\n          else {\n            iVar19 = 2;\n            ppDVar18 = &pSrcPg;\n            iVar15 = (*pPVar13->xGet)(pPVar13,PVar12,&pSrcPg,2);\n            if ((iVar15 == 0) &&\n               (iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            PVar12 = p->iNext;\n          }\n          PVar12 = PVar12 + 1;\n          uVar16 = uVar16 + 1;\n          p->iNext = PVar12;\n          if (((uint)nPage <= uVar16) || (local_64 < PVar12)) goto LAB_00083f72;\n          if (iVar15 != 0) break;\n          uVar7 = p->pSrc->pBt->pageSize;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if ((uint)sqlite3PendingByte / uVar7 + 1 == PVar12) {\n            iVar15 = 0;\n          }\n          else {\n            iVar19 = 2;\n            ppDVar18 = &pSrcPg;\n            iVar15 = (*pPVar13->xGet)(pPVar13,PVar12,&pSrcPg,2);\n            if ((iVar15 == 0) &&\n               (iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            PVar12 = p->iNext;\n          }\n          PVar12 = PVar12 + 1;\n          uVar16 = uVar16 + 1;\n          p->iNext = PVar12;\n          if (((uint)nPage <= uVar16) || (local_64 < PVar12)) goto LAB_00083f72;\n          if (iVar15 != 0) break;\n          uVar7 = p->pSrc->pBt->pageSize;\n        }" { (if_statement "if ((uint)sqlite3PendingByte / uVar7 + 1 == PVar12) {\n            iVar15 = 0;\n          }\n          else {\n            iVar19 = 2;\n            ppDVar18 = &pSrcPg;\n            iVar15 = (*pPVar13->xGet)(pPVar13,PVar12,&pSrcPg,2);\n            if ((iVar15 == 0) &&\n               (iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            PVar12 = p->iNext;\n          }" if (parenthesized_expression "((uint)sqlite3PendingByte / uVar7 + 1 == PVar12)" ( (binary_expression "(uint)sqlite3PendingByte / uVar7 + 1 == PVar12" (binary_expression "(uint)sqlite3PendingByte / uVar7 + 1" (binary_expression "(uint)sqlite3PendingByte / uVar7" (cast_expression "(uint)sqlite3PendingByte" ( (type_descriptor "uint" type_identifier) ) identifier) / identifier) + number_literal) == identifier) )) (compound_statement "{\n            iVar15 = 0;\n          }" { (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            iVar19 = 2;\n            ppDVar18 = &pSrcPg;\n            iVar15 = (*pPVar13->xGet)(pPVar13,PVar12,&pSrcPg,2);\n            if ((iVar15 == 0) &&\n               (iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            PVar12 = p->iNext;\n          }" else (compound_statement "{\n            iVar19 = 2;\n            ppDVar18 = &pSrcPg;\n            iVar15 = (*pPVar13->xGet)(pPVar13,PVar12,&pSrcPg,2);\n            if ((iVar15 == 0) &&\n               (iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }\n            PVar12 = p->iNext;\n          }" { (expression_statement "iVar19 = 2;" (assignment_expression "iVar19 = 2" identifier = number_literal) ;) (expression_statement "ppDVar18 = &pSrcPg;" (assignment_expression "ppDVar18 = &pSrcPg" identifier = (pointer_expression "&pSrcPg" & identifier)) ;) (expression_statement "iVar15 = (*pPVar13->xGet)(pPVar13,PVar12,&pSrcPg,2);" (assignment_expression "iVar15 = (*pPVar13->xGet)(pPVar13,PVar12,&pSrcPg,2)" identifier = (call_expression "(*pPVar13->xGet)(pPVar13,PVar12,&pSrcPg,2)" (parenthesized_expression "(*pPVar13->xGet)" ( (pointer_expression "*pPVar13->xGet" * (field_expression "pPVar13->xGet" identifier -> field_identifier)) )) (argument_list "(pPVar13,PVar12,&pSrcPg,2)" ( identifier , identifier , (pointer_expression "&pSrcPg" & identifier) , number_literal )))) ;) (if_statement "if ((iVar15 == 0) &&\n               (iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0)) {\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }" if (parenthesized_expression "((iVar15 == 0) &&\n               (iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0))" ( (binary_expression "(iVar15 == 0) &&\n               (iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0)" (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0)" ( (comma_expression "iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94), pSrcPg != (DbPage *)0x0" (assignment_expression "iVar15 = backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94)" identifier = (call_expression "backupOnePage((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94)" identifier (argument_list "((sqlite3_backup *)pSrcPg->pData,0,(u8 *)ppDVar18,iVar19,\n                                       in_stack_ffffff94)" ( (cast_expression "(sqlite3_backup *)pSrcPg->pData" ( (type_descriptor "sqlite3_backup *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pSrcPg->pData" identifier -> field_identifier)) , number_literal , (cast_expression "(u8 *)ppDVar18" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier )))) , (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 "PVar12 = p->iNext;" (assignment_expression "PVar12 = p->iNext" identifier = (field_expression "p->iNext" identifier -> field_identifier)) ;) }))) (expression_statement "PVar12 = PVar12 + 1;" (assignment_expression "PVar12 = PVar12 + 1" identifier = (binary_expression "PVar12 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "p->iNext = PVar12;" (assignment_expression "p->iNext = PVar12" (field_expression "p->iNext" identifier -> field_identifier) = identifier) ;) (if_statement "if (((uint)nPage <= uVar16) || (local_64 < PVar12)) goto LAB_00083f72;" if (parenthesized_expression "(((uint)nPage <= uVar16) || (local_64 < PVar12))" ( (binary_expression "((uint)nPage <= uVar16) || (local_64 < PVar12)" (parenthesized_expression "((uint)nPage <= uVar16)" ( (binary_expression "(uint)nPage <= uVar16" (cast_expression "(uint)nPage" ( (type_descriptor "uint" type_identifier) ) identifier) <= identifier) )) || (parenthesized_expression "(local_64 < PVar12)" ( (binary_expression "local_64 < PVar12" identifier < identifier) ))) )) (goto_statement "goto LAB_00083f72;" goto statement_identifier ;)) (if_statement "if (iVar15 != 0) break;" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar7 = p->pSrc->pBt->pageSize;" (assignment_expression "uVar7 = p->pSrc->pBt->pageSize" identifier = (field_expression "p->pSrc->pBt->pageSize" (field_expression "p->pSrc->pBt" (field_expression "p->pSrc" identifier -> field_identifier) -> field_identifier) -> field_identifier)) ;) })) })) (labeled_statement "LAB_00083fca:\n      if (iVar15 != 0x65) goto LAB_000840d9;" statement_identifier : (if_statement "if (iVar15 != 0x65) goto LAB_000840d9;" if (parenthesized_expression "(iVar15 != 0x65)" ( (binary_expression "iVar15 != 0x65" identifier != number_literal) )) (goto_statement "goto LAB_000840d9;" goto statement_identifier ;))) (labeled_statement "LAB_00083fd3:\n      pBVar6 = p->pDest;" statement_identifier : (expression_statement "pBVar6 = p->pDest;" (assignment_expression "pBVar6 = p->pDest" identifier = (field_expression "p->pDest" identifier -> field_identifier)) ;)) (expression_statement "local_5c = (Pager *)local_64;" (assignment_expression "local_5c = (Pager *)local_64" identifier = (cast_expression "(Pager *)local_64" ( (type_descriptor "Pager *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (local_64 == 0) {\n        if (pBVar6->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar6);\n        }\n        pBVar5 = pBVar6->pBt;\n        pBVar5->nPage = 0;\n        iVar15 = newDatabase(pBVar5);\n        if (pBVar6->sharable != '\0') {\n          piVar1 = &pBVar6->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar6);\n          }\n        }\n        if ((iVar15 != 0) && (iVar15 != 0x65)) goto LAB_000840d9;\n        pBVar6 = p->pDest;\n        local_5c = (Pager *)0x1;\n      }" if (parenthesized_expression "(local_64 == 0)" ( (binary_expression "local_64 == 0" identifier == number_literal) )) (compound_statement "{\n        if (pBVar6->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar6);\n        }\n        pBVar5 = pBVar6->pBt;\n        pBVar5->nPage = 0;\n        iVar15 = newDatabase(pBVar5);\n        if (pBVar6->sharable != '\0') {\n          piVar1 = &pBVar6->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar6);\n          }\n        }\n        if ((iVar15 != 0) && (iVar15 != 0x65)) goto LAB_000840d9;\n        pBVar6 = p->pDest;\n        local_5c = (Pager *)0x1;\n      }" { (if_statement "if (pBVar6->sharable != '\0') {\n          sqlite3BtreeEnter(pBVar6);\n        }" if (parenthesized_expression "(pBVar6->sharable != '\0')" ( (binary_expression "pBVar6->sharable != '\0'" (field_expression "pBVar6->sharable" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          sqlite3BtreeEnter(pBVar6);\n        }" { (expression_statement "sqlite3BtreeEnter(pBVar6);" (call_expression "sqlite3BtreeEnter(pBVar6)" identifier (argument_list "(pBVar6)" ( identifier ))) ;) })) (expression_statement "pBVar5 = pBVar6->pBt;" (assignment_expression "pBVar5 = pBVar6->pBt" identifier = (field_expression "pBVar6->pBt" identifier -> field_identifier)) ;) (expression_statement "pBVar5->nPage = 0;" (assignment_expression "pBVar5->nPage = 0" (field_expression "pBVar5->nPage" identifier -> field_identifier) = number_literal) ;) (expression_statement "iVar15 = newDatabase(pBVar5);" (assignment_expression "iVar15 = newDatabase(pBVar5)" identifier = (call_expression "newDatabase(pBVar5)" identifier (argument_list "(pBVar5)" ( identifier )))) ;) (if_statement "if (pBVar6->sharable != '\0') {\n          piVar1 = &pBVar6->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar6);\n          }\n        }" if (parenthesized_expression "(pBVar6->sharable != '\0')" ( (binary_expression "pBVar6->sharable != '\0'" (field_expression "pBVar6->sharable" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          piVar1 = &pBVar6->wantToLock;\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            sqlite3BtreeLeave(pBVar6);\n          }\n        }" { (expression_statement "piVar1 = &pBVar6->wantToLock;" (assignment_expression "piVar1 = &pBVar6->wantToLock" identifier = (pointer_expression "&pBVar6->wantToLock" & (field_expression "pBVar6->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(pBVar6);\n          }" if (parenthesized_expression "(*piVar1 == 0)" ( (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" * identifier) == number_literal) )) (compound_statement "{\n            sqlite3BtreeLeave(pBVar6);\n          }" { (expression_statement "sqlite3BtreeLeave(pBVar6);" (call_expression "sqlite3BtreeLeave(pBVar6)" identifier (argument_list "(pBVar6)" ( identifier ))) ;) })) })) (if_statement "if ((iVar15 != 0) && (iVar15 != 0x65)) goto LAB_000840d9;" if (parenthesized_expression "((iVar15 != 0) && (iVar15 != 0x65))" ( (binary_expression "(iVar15 != 0) && (iVar15 != 0x65)" (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar15 != 0x65)" ( (binary_expression "iVar15 != 0x65" identifier != number_literal) ))) )) (goto_statement "goto LAB_000840d9;" goto statement_identifier ;)) (expression_statement "pBVar6 = p->pDest;" (assignment_expression "pBVar6 = p->pDest" identifier = (field_expression "p->pDest" identifier -> field_identifier)) ;) (expression_statement "local_5c = (Pager *)0x1;" (assignment_expression "local_5c = (Pager *)0x1" identifier = (cast_expression "(Pager *)0x1" ( (type_descriptor "Pager *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "iVar15 = sqlite3BtreeUpdateMeta(pBVar6,1,p->iDestSchema + 1);" (assignment_expression "iVar15 = sqlite3BtreeUpdateMeta(pBVar6,1,p->iDestSchema + 1)" identifier = (call_expression "sqlite3BtreeUpdateMeta(pBVar6,1,p->iDestSchema + 1)" identifier (argument_list "(pBVar6,1,p->iDestSchema + 1)" ( identifier , number_literal , (binary_expression "p->iDestSchema + 1" (field_expression "p->iDestSchema" identifier -> field_identifier) + number_literal) )))) ;) (if_statement "if (iVar15 == 0) {\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((!bVar17) || (iVar15 = sqlite3BtreeSetVersion(p->pDest,2), iVar15 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar7 = (int)(((int)local_5c - 1U) + (int)local_4c / (int)local_58) /\n                    ((int)local_4c / (int)local_58);\n            uVar16 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n            if (uVar16 + 1 == uVar7) {\n              uVar7 = uVar16;\n            }\n            lVar3 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            psVar2 = local_40->fd;\n            uVar16 = local_40->dbSize;\nLAB_00084096:\n            do {\n              if (uVar16 < uVar7) {\nLAB_00084288:\n                iVar15 = local_40->errCode;\n                if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar8 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n              uVar9 = uVar7;\n              if (uVar8 + 1 == uVar7) {\n                uVar9 = uVar8 + 2;\n                if (uVar16 < uVar9) goto LAB_00084288;\n                if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0);\n              if (iVar15 != 0) break;\n              iVar15 = sqlite3PagerWrite(pSrcPg);\n              if (pSrcPg == (DbPage *)0x0) {\n                uVar7 = uVar9 + 1;\n                if (iVar15 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar7 = uVar9 + 1;\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            } while (iVar15 == 0);\n          }\n          else {\n            local_40->dbSize = ((int)local_58 / (int)local_4c) * (int)local_5c;\n            iVar15 = local_40->errCode;\n            if (iVar15 == 0) {\n              if ((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)) {\n                if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar15 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\n        if (p->pDestDb != (sqlite3 *)0x0) {\n          sqlite3ResetAllSchemasOfConnection(p->pDestDb);\n        }\n        if ((!bVar17) || (iVar15 = sqlite3BtreeSetVersion(p->pDest,2), iVar15 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar7 = (int)(((int)local_5c - 1U) + (int)local_4c / (int)local_58) /\n                    ((int)local_4c / (int)local_58);\n            uVar16 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n            if (uVar16 + 1 == uVar7) {\n              uVar7 = uVar16;\n            }\n            lVar3 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            psVar2 = local_40->fd;\n            uVar16 = local_40->dbSize;\nLAB_00084096:\n            do {\n              if (uVar16 < uVar7) {\nLAB_00084288:\n                iVar15 = local_40->errCode;\n                if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar8 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n              uVar9 = uVar7;\n              if (uVar8 + 1 == uVar7) {\n                uVar9 = uVar8 + 2;\n                if (uVar16 < uVar9) goto LAB_00084288;\n                if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0);\n              if (iVar15 != 0) break;\n              iVar15 = sqlite3PagerWrite(pSrcPg);\n              if (pSrcPg == (DbPage *)0x0) {\n                uVar7 = uVar9 + 1;\n                if (iVar15 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar7 = uVar9 + 1;\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            } while (iVar15 == 0);\n          }\n          else {\n            local_40->dbSize = ((int)local_58 / (int)local_4c) * (int)local_5c;\n            iVar15 = local_40->errCode;\n            if (iVar15 == 0) {\n              if ((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)) {\n                if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar15 = 10;\n              goto LAB_00083fad;\n            }\n          }\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 ((!bVar17) || (iVar15 = sqlite3BtreeSetVersion(p->pDest,2), iVar15 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar7 = (int)(((int)local_5c - 1U) + (int)local_4c / (int)local_58) /\n                    ((int)local_4c / (int)local_58);\n            uVar16 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n            if (uVar16 + 1 == uVar7) {\n              uVar7 = uVar16;\n            }\n            lVar3 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            psVar2 = local_40->fd;\n            uVar16 = local_40->dbSize;\nLAB_00084096:\n            do {\n              if (uVar16 < uVar7) {\nLAB_00084288:\n                iVar15 = local_40->errCode;\n                if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar8 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n              uVar9 = uVar7;\n              if (uVar8 + 1 == uVar7) {\n                uVar9 = uVar8 + 2;\n                if (uVar16 < uVar9) goto LAB_00084288;\n                if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0);\n              if (iVar15 != 0) break;\n              iVar15 = sqlite3PagerWrite(pSrcPg);\n              if (pSrcPg == (DbPage *)0x0) {\n                uVar7 = uVar9 + 1;\n                if (iVar15 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar7 = uVar9 + 1;\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            } while (iVar15 == 0);\n          }\n          else {\n            local_40->dbSize = ((int)local_58 / (int)local_4c) * (int)local_5c;\n            iVar15 = local_40->errCode;\n            if (iVar15 == 0) {\n              if ((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)) {\n                if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar15 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }" if (parenthesized_expression "((!bVar17) || (iVar15 = sqlite3BtreeSetVersion(p->pDest,2), iVar15 == 0))" ( (binary_expression "(!bVar17) || (iVar15 = sqlite3BtreeSetVersion(p->pDest,2), iVar15 == 0)" (parenthesized_expression "(!bVar17)" ( (unary_expression "!bVar17" ! identifier) )) || (parenthesized_expression "(iVar15 = sqlite3BtreeSetVersion(p->pDest,2), iVar15 == 0)" ( (comma_expression "iVar15 = sqlite3BtreeSetVersion(p->pDest,2), iVar15 == 0" (assignment_expression "iVar15 = 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 "iVar15 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n          if ((int)local_58 < (int)local_4c) {\n            uVar7 = (int)(((int)local_5c - 1U) + (int)local_4c / (int)local_58) /\n                    ((int)local_4c / (int)local_58);\n            uVar16 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n            if (uVar16 + 1 == uVar7) {\n              uVar7 = uVar16;\n            }\n            lVar3 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            psVar2 = local_40->fd;\n            uVar16 = local_40->dbSize;\nLAB_00084096:\n            do {\n              if (uVar16 < uVar7) {\nLAB_00084288:\n                iVar15 = local_40->errCode;\n                if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar8 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n              uVar9 = uVar7;\n              if (uVar8 + 1 == uVar7) {\n                uVar9 = uVar8 + 2;\n                if (uVar16 < uVar9) goto LAB_00084288;\n                if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0);\n              if (iVar15 != 0) break;\n              iVar15 = sqlite3PagerWrite(pSrcPg);\n              if (pSrcPg == (DbPage *)0x0) {\n                uVar7 = uVar9 + 1;\n                if (iVar15 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar7 = uVar9 + 1;\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            } while (iVar15 == 0);\n          }\n          else {\n            local_40->dbSize = ((int)local_58 / (int)local_4c) * (int)local_5c;\n            iVar15 = local_40->errCode;\n            if (iVar15 == 0) {\n              if ((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)) {\n                if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar15 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }" { (if_statement "if ((int)local_58 < (int)local_4c) {\n            uVar7 = (int)(((int)local_5c - 1U) + (int)local_4c / (int)local_58) /\n                    ((int)local_4c / (int)local_58);\n            uVar16 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n            if (uVar16 + 1 == uVar7) {\n              uVar7 = uVar16;\n            }\n            lVar3 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            psVar2 = local_40->fd;\n            uVar16 = local_40->dbSize;\nLAB_00084096:\n            do {\n              if (uVar16 < uVar7) {\nLAB_00084288:\n                iVar15 = local_40->errCode;\n                if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar8 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n              uVar9 = uVar7;\n              if (uVar8 + 1 == uVar7) {\n                uVar9 = uVar8 + 2;\n                if (uVar16 < uVar9) goto LAB_00084288;\n                if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0);\n              if (iVar15 != 0) break;\n              iVar15 = sqlite3PagerWrite(pSrcPg);\n              if (pSrcPg == (DbPage *)0x0) {\n                uVar7 = uVar9 + 1;\n                if (iVar15 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar7 = uVar9 + 1;\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            } while (iVar15 == 0);\n          }\n          else {\n            local_40->dbSize = ((int)local_58 / (int)local_4c) * (int)local_5c;\n            iVar15 = local_40->errCode;\n            if (iVar15 == 0) {\n              if ((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)) {\n                if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar15 = 10;\n              goto LAB_00083fad;\n            }\n          }" if (parenthesized_expression "((int)local_58 < (int)local_4c)" ( (binary_expression "(int)local_58 < (int)local_4c" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar7 = (int)(((int)local_5c - 1U) + (int)local_4c / (int)local_58) /\n                    ((int)local_4c / (int)local_58);\n            uVar16 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n            if (uVar16 + 1 == uVar7) {\n              uVar7 = uVar16;\n            }\n            lVar3 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            psVar2 = local_40->fd;\n            uVar16 = local_40->dbSize;\nLAB_00084096:\n            do {\n              if (uVar16 < uVar7) {\nLAB_00084288:\n                iVar15 = local_40->errCode;\n                if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar8 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n              uVar9 = uVar7;\n              if (uVar8 + 1 == uVar7) {\n                uVar9 = uVar8 + 2;\n                if (uVar16 < uVar9) goto LAB_00084288;\n                if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0);\n              if (iVar15 != 0) break;\n              iVar15 = sqlite3PagerWrite(pSrcPg);\n              if (pSrcPg == (DbPage *)0x0) {\n                uVar7 = uVar9 + 1;\n                if (iVar15 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar7 = uVar9 + 1;\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            } while (iVar15 == 0);\n          }" { (expression_statement "uVar7 = (int)(((int)local_5c - 1U) + (int)local_4c / (int)local_58) /\n                    ((int)local_4c / (int)local_58);" (assignment_expression "uVar7 = (int)(((int)local_5c - 1U) + (int)local_4c / (int)local_58) /\n                    ((int)local_4c / (int)local_58)" identifier = (binary_expression "(int)(((int)local_5c - 1U) + (int)local_4c / (int)local_58) /\n                    ((int)local_4c / (int)local_58)" (cast_expression "(int)(((int)local_5c - 1U) + (int)local_4c / (int)local_58)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(((int)local_5c - 1U) + (int)local_4c / (int)local_58)" ( (binary_expression "((int)local_5c - 1U) + (int)local_4c / (int)local_58" (parenthesized_expression "((int)local_5c - 1U)" ( (binary_expression "(int)local_5c - 1U" (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )) + (binary_expression "(int)local_4c / (int)local_58" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) / (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier))) ))) / (parenthesized_expression "((int)local_4c / (int)local_58)" ( (binary_expression "(int)local_4c / (int)local_58" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) / (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "uVar16 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;" (assignment_expression "uVar16 = (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 (uVar16 + 1 == uVar7) {\n              uVar7 = uVar16;\n            }" if (parenthesized_expression "(uVar16 + 1 == uVar7)" ( (binary_expression "uVar16 + 1 == uVar7" (binary_expression "uVar16 + 1" identifier + number_literal) == identifier) )) (compound_statement "{\n              uVar7 = uVar16;\n            }" { (expression_statement "uVar7 = uVar16;" (assignment_expression "uVar7 = uVar16" identifier = identifier) ;) })) (expression_statement "lVar3 = (longlong)(int)local_5c * (longlong)(int)local_58;" (assignment_expression "lVar3 = (longlong)(int)local_5c * (longlong)(int)local_58" identifier = (binary_expression "(longlong)(int)local_5c * (longlong)(int)local_58" (cast_expression "(longlong)(int)local_5c" ( (type_descriptor "longlong" type_identifier) ) (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier)) * (cast_expression "(longlong)(int)local_58" ( (type_descriptor "longlong" type_identifier) ) (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "psVar2 = local_40->fd;" (assignment_expression "psVar2 = local_40->fd" identifier = (field_expression "local_40->fd" identifier -> field_identifier)) ;) (expression_statement "uVar16 = local_40->dbSize;" (assignment_expression "uVar16 = local_40->dbSize" identifier = (field_expression "local_40->dbSize" identifier -> field_identifier)) ;) (labeled_statement "LAB_00084096:\n            do {\n              if (uVar16 < uVar7) {\nLAB_00084288:\n                iVar15 = local_40->errCode;\n                if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar8 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n              uVar9 = uVar7;\n              if (uVar8 + 1 == uVar7) {\n                uVar9 = uVar8 + 2;\n                if (uVar16 < uVar9) goto LAB_00084288;\n                if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0);\n              if (iVar15 != 0) break;\n              iVar15 = sqlite3PagerWrite(pSrcPg);\n              if (pSrcPg == (DbPage *)0x0) {\n                uVar7 = uVar9 + 1;\n                if (iVar15 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar7 = uVar9 + 1;\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            } while (iVar15 == 0);" statement_identifier : (do_statement "do {\n              if (uVar16 < uVar7) {\nLAB_00084288:\n                iVar15 = local_40->errCode;\n                if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar8 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n              uVar9 = uVar7;\n              if (uVar8 + 1 == uVar7) {\n                uVar9 = uVar8 + 2;\n                if (uVar16 < uVar9) goto LAB_00084288;\n                if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0);\n              if (iVar15 != 0) break;\n              iVar15 = sqlite3PagerWrite(pSrcPg);\n              if (pSrcPg == (DbPage *)0x0) {\n                uVar7 = uVar9 + 1;\n                if (iVar15 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar7 = uVar9 + 1;\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            } while (iVar15 == 0);" do (compound_statement "{\n              if (uVar16 < uVar7) {\nLAB_00084288:\n                iVar15 = local_40->errCode;\n                if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar8 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;\n              uVar9 = uVar7;\n              if (uVar8 + 1 == uVar7) {\n                uVar9 = uVar8 + 2;\n                if (uVar16 < uVar9) goto LAB_00084288;\n                if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }\n              iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0);\n              if (iVar15 != 0) break;\n              iVar15 = sqlite3PagerWrite(pSrcPg);\n              if (pSrcPg == (DbPage *)0x0) {\n                uVar7 = uVar9 + 1;\n                if (iVar15 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar7 = uVar9 + 1;\n              sqlite3PagerUnrefNotNull(pSrcPg);\n            }" { (if_statement "if (uVar16 < uVar7) {\nLAB_00084288:\n                iVar15 = local_40->errCode;\n                if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }" if (parenthesized_expression "(uVar16 < uVar7)" ( (binary_expression "uVar16 < uVar7" identifier < identifier) )) (compound_statement "{\nLAB_00084288:\n                iVar15 = local_40->errCode;\n                if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }" { (labeled_statement "LAB_00084288:\n                iVar15 = local_40->errCode;" statement_identifier : (expression_statement "iVar15 = local_40->errCode;" (assignment_expression "iVar15 = local_40->errCode" identifier = (field_expression "local_40->errCode" identifier -> field_identifier)) ;)) (if_statement "if (iVar15 == 0) {\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\n                  if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;\n                  local_3c = (uint)lVar3;\n                  local_38 = (int)((ulonglong)lVar3 >> 0x20);\n                  if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }" { (if_statement "if ((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)) goto LAB_00084446;" if (parenthesized_expression "((sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0))" ( (binary_expression "(sqlite3Config.xTestCallback != (_func_int_int *)0x0) &&\n                     (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)" (parenthesized_expression "(sqlite3Config.xTestCallback != (_func_int_int *)0x0)" ( (binary_expression "sqlite3Config.xTestCallback != (_func_int_int *)0x0" (field_expression "sqlite3Config.xTestCallback" identifier . field_identifier) != (cast_expression "(_func_int_int *)0x0" ( (type_descriptor "_func_int_int *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0)" ( (comma_expression "iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 != 0" (assignment_expression "iVar15 = (*sqlite3Config.xTestCallback)(400)" identifier = (call_expression "(*sqlite3Config.xTestCallback)(400)" (parenthesized_expression "(*sqlite3Config.xTestCallback)" ( (pointer_expression "*sqlite3Config.xTestCallback" * (field_expression "sqlite3Config.xTestCallback" identifier . field_identifier)) )) (argument_list "(400)" ( number_literal )))) , (binary_expression "iVar15 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_00084446;" goto statement_identifier ;)) (expression_statement "local_3c = (uint)lVar3;" (assignment_expression "local_3c = (uint)lVar3" identifier = (cast_expression "(uint)lVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_38 = (int)((ulonglong)lVar3 >> 0x20);" (assignment_expression "local_38 = (int)((ulonglong)lVar3 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (local_40->eState < 3) {\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }" if (parenthesized_expression "(local_40->eState < 3)" ( (binary_expression "local_40->eState < 3" (field_expression "local_40->eState" identifier -> field_identifier) < number_literal) )) (compound_statement "{\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }" { (expression_statement "local_4c = local_4c + sqlite3PendingByte;" (assignment_expression "local_4c = local_4c + sqlite3PendingByte" identifier = (binary_expression "local_4c + sqlite3PendingByte" identifier + identifier)) ;) (expression_statement "local_54 = (int)local_4c >> 0x1f;" (assignment_expression "local_54 = (int)local_4c >> 0x1f" identifier = (binary_expression "(int)local_4c >> 0x1f" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }" if (parenthesized_expression "(lVar3 < (int)local_4c)" ( (binary_expression "lVar3 < (int)local_4c" identifier < (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }" { (expression_statement "local_4c = local_3c;" (assignment_expression "local_4c = local_3c" identifier = identifier) ;) (expression_statement "local_54 = local_38;" (assignment_expression "local_54 = local_38" identifier = identifier) ;) })) (expression_statement "local_34 = sqlite3PendingByte + local_58;" (assignment_expression "local_34 = sqlite3PendingByte + local_58" identifier = (binary_expression "sqlite3PendingByte + local_58" identifier + identifier)) ;) (expression_statement "local_30 = (int)local_34 >> 0x1f;" (assignment_expression "local_30 = (int)local_34 >> 0x1f" identifier = (binary_expression "(int)local_34 >> 0x1f" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;" if (parenthesized_expression "((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))" ( (binary_expression "(local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))" (parenthesized_expression "(local_54 <= local_30)" ( (binary_expression "local_54 <= local_30" identifier <= identifier) )) && (parenthesized_expression "((local_54 < local_30 || (local_4c <= local_34)))" ( (parenthesized_expression "(local_54 < local_30 || (local_4c <= local_34))" ( (binary_expression "local_54 < local_30 || (local_4c <= local_34)" (binary_expression "local_54 < local_30" identifier < identifier) || (parenthesized_expression "(local_4c <= local_34)" ( (binary_expression "local_4c <= local_34" identifier <= identifier) ))) )) ))) )) (goto_statement "goto LAB_0008434c;" goto statement_identifier ;)) }) (else_clause "else {\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }" else (compound_statement "{\n                    iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);\n                    local_4c = local_4c + sqlite3PendingByte;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = sqlite3PendingByte + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;\n                  }" { (expression_statement "iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1);" (assignment_expression "iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1)" identifier = (call_expression "sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,1)" identifier (argument_list "(local_40,(char *)0x0,1)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal )))) ;) (expression_statement "local_4c = local_4c + sqlite3PendingByte;" (assignment_expression "local_4c = local_4c + sqlite3PendingByte" identifier = (binary_expression "local_4c + sqlite3PendingByte" identifier + identifier)) ;) (expression_statement "local_54 = (int)local_4c >> 0x1f;" (assignment_expression "local_54 = (int)local_4c >> 0x1f" identifier = (binary_expression "(int)local_4c >> 0x1f" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if (lVar3 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }" if (parenthesized_expression "(lVar3 < (int)local_4c)" ( (binary_expression "lVar3 < (int)local_4c" identifier < (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }" { (expression_statement "local_4c = local_3c;" (assignment_expression "local_4c = local_3c" identifier = identifier) ;) (expression_statement "local_54 = local_38;" (assignment_expression "local_54 = local_38" identifier = identifier) ;) })) (expression_statement "local_34 = sqlite3PendingByte + local_58;" (assignment_expression "local_34 = sqlite3PendingByte + local_58" identifier = (binary_expression "sqlite3PendingByte + local_58" identifier + identifier)) ;) (expression_statement "local_30 = (int)local_34 >> 0x1f;" (assignment_expression "local_30 = (int)local_34 >> 0x1f" identifier = (binary_expression "(int)local_34 >> 0x1f" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)) goto LAB_00084344;" if (parenthesized_expression "(((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0))" ( (binary_expression "((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar15 != 0)" (parenthesized_expression "((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        )" ( (binary_expression "(local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))" (parenthesized_expression "(local_54 <= local_30)" ( (binary_expression "local_54 <= local_30" identifier <= identifier) )) && (parenthesized_expression "((local_54 < local_30 || (local_4c <= local_34)))" ( (parenthesized_expression "(local_54 < local_30 || (local_4c <= local_34))" ( (binary_expression "local_54 < local_30 || (local_4c <= local_34)" (binary_expression "local_54 < local_30" identifier < identifier) || (parenthesized_expression "(local_4c <= local_34)" ( (binary_expression "local_4c <= local_34" identifier <= identifier) ))) )) ))) )) || (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_00084344;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_00084480;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) (expression_statement "uVar8 = (uint)sqlite3PendingByte / p->pDest->pBt->pageSize;" (assignment_expression "uVar8 = (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))) ;) (expression_statement "uVar9 = uVar7;" (assignment_expression "uVar9 = uVar7" identifier = identifier) ;) (if_statement "if (uVar8 + 1 == uVar7) {\n                uVar9 = uVar8 + 2;\n                if (uVar16 < uVar9) goto LAB_00084288;\n                if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }" if (parenthesized_expression "(uVar8 + 1 == uVar7)" ( (binary_expression "uVar8 + 1 == uVar7" (binary_expression "uVar8 + 1" identifier + number_literal) == identifier) )) (compound_statement "{\n                uVar9 = uVar8 + 2;\n                if (uVar16 < uVar9) goto LAB_00084288;\n                if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }\n              }" { (expression_statement "uVar9 = uVar8 + 2;" (assignment_expression "uVar9 = uVar8 + 2" identifier = (binary_expression "uVar8 + 2" identifier + number_literal)) ;) (if_statement "if (uVar16 < uVar9) goto LAB_00084288;" if (parenthesized_expression "(uVar16 < uVar9)" ( (binary_expression "uVar16 < uVar9" identifier < identifier) )) (goto_statement "goto LAB_00084288;" goto statement_identifier ;)) (if_statement "if (uVar9 == uVar7) {\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }" if (parenthesized_expression "(uVar9 == uVar7)" ( (binary_expression "uVar9 == uVar7" identifier == identifier) )) (compound_statement "{\n                  do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );\n                }" { (do_statement "do {\n                    /* WARNING: Do nothing block with infinite loop */\n                  } while( true );" do (compound_statement "{\n                    /* WARNING: Do nothing block with infinite loop */\n                  }" { comment }) while (parenthesized_expression "( true )" ( true )) ;) })) })) (expression_statement "iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0);" (assignment_expression "iVar15 = (*local_40->xGet)(local_40,uVar9,&pSrcPg,0)" identifier = (call_expression "(*local_40->xGet)(local_40,uVar9,&pSrcPg,0)" (parenthesized_expression "(*local_40->xGet)" ( (pointer_expression "*local_40->xGet" * (field_expression "local_40->xGet" identifier -> field_identifier)) )) (argument_list "(local_40,uVar9,&pSrcPg,0)" ( identifier , identifier , (pointer_expression "&pSrcPg" & identifier) , number_literal )))) ;) (if_statement "if (iVar15 != 0) break;" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = sqlite3PagerWrite(pSrcPg);" (assignment_expression "iVar15 = sqlite3PagerWrite(pSrcPg)" identifier = (call_expression "sqlite3PagerWrite(pSrcPg)" identifier (argument_list "(pSrcPg)" ( identifier )))) ;) (if_statement "if (pSrcPg == (DbPage *)0x0) {\n                uVar7 = uVar9 + 1;\n                if (iVar15 != 0) break;\n                goto LAB_00084096;\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                uVar7 = uVar9 + 1;\n                if (iVar15 != 0) break;\n                goto LAB_00084096;\n              }" { (expression_statement "uVar7 = uVar9 + 1;" (assignment_expression "uVar7 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (if_statement "if (iVar15 != 0) break;" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_00084096;" goto statement_identifier ;) })) (expression_statement "uVar7 = uVar9 + 1;" (assignment_expression "uVar7 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (expression_statement "sqlite3PagerUnrefNotNull(pSrcPg);" (call_expression "sqlite3PagerUnrefNotNull(pSrcPg)" identifier (argument_list "(pSrcPg)" ( identifier ))) ;) }) while (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) ;)) }) (else_clause "else {\n            local_40->dbSize = ((int)local_58 / (int)local_4c) * (int)local_5c;\n            iVar15 = local_40->errCode;\n            if (iVar15 == 0) {\n              if ((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)) {\n                if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar15 = 10;\n              goto LAB_00083fad;\n            }\n          }" else (compound_statement "{\n            local_40->dbSize = ((int)local_58 / (int)local_4c) * (int)local_5c;\n            iVar15 = local_40->errCode;\n            if (iVar15 == 0) {\n              if ((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)) {\n                if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar15 = 10;\n              goto LAB_00083fad;\n            }\n          }" { (expression_statement "local_40->dbSize = ((int)local_58 / (int)local_4c) * (int)local_5c;" (assignment_expression "local_40->dbSize = ((int)local_58 / (int)local_4c) * (int)local_5c" (field_expression "local_40->dbSize" identifier -> field_identifier) = (binary_expression "((int)local_58 / (int)local_4c) * (int)local_5c" (parenthesized_expression "((int)local_58 / (int)local_4c)" ( (binary_expression "(int)local_58 / (int)local_4c" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) / (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier)) )) * (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar15 = local_40->errCode;" (assignment_expression "iVar15 = local_40->errCode" identifier = (field_expression "local_40->errCode" identifier -> field_identifier)) ;) (if_statement "if (iVar15 == 0) {\n              if ((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)) {\n                if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar15 = 10;\n              goto LAB_00083fad;\n            }" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\n              if ((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)) {\n                if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar15 = 10;\n              goto LAB_00083fad;\n            }" { (if_statement "if ((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)) {\n                if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }" if (parenthesized_expression "((sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0))" ( (binary_expression "(sqlite3Config.xTestCallback == (_func_int_int *)0x0) ||\n                 (iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)" (parenthesized_expression "(sqlite3Config.xTestCallback == (_func_int_int *)0x0)" ( (binary_expression "sqlite3Config.xTestCallback == (_func_int_int *)0x0" (field_expression "sqlite3Config.xTestCallback" identifier . field_identifier) == (cast_expression "(_func_int_int *)0x0" ( (type_descriptor "_func_int_int *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0)" ( (comma_expression "iVar15 = (*sqlite3Config.xTestCallback)(400), iVar15 == 0" (assignment_expression "iVar15 = (*sqlite3Config.xTestCallback)(400)" identifier = (call_expression "(*sqlite3Config.xTestCallback)(400)" (parenthesized_expression "(*sqlite3Config.xTestCallback)" ( (pointer_expression "*sqlite3Config.xTestCallback" * (field_expression "sqlite3Config.xTestCallback" identifier . field_identifier)) )) (argument_list "(400)" ( number_literal )))) , (binary_expression "iVar15 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n                if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }" { (if_statement "if (2 < local_40->eState) {\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }" if (parenthesized_expression "(2 < local_40->eState)" ( (binary_expression "2 < local_40->eState" number_literal < (field_expression "local_40->eState" identifier -> field_identifier)) )) (compound_statement "{\n                  iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);\n                  goto LAB_00084248;\n                }" { (expression_statement "iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0);" (assignment_expression "iVar15 = sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0)" identifier = (call_expression "sqlite3PagerCommitPhaseOne(local_40,(char *)0x0,0)" identifier (argument_list "(local_40,(char *)0x0,0)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal )))) ;) (goto_statement "goto LAB_00084248;" goto statement_identifier ;) })) (goto_statement "goto LAB_00084250;" goto statement_identifier ;) })) (labeled_statement "LAB_00084446:\n              iVar15 = 10;" statement_identifier : (expression_statement "iVar15 = 10;" (assignment_expression "iVar15 = 10" identifier = number_literal) ;)) (goto_statement "goto LAB_00083fad;" goto statement_identifier ;) })) }))) })) })) (goto_statement "goto LAB_000840d9;" goto statement_identifier ;) }))) (labeled_statement "LAB_00083f72:\n    if (iVar15 != 0) goto LAB_00083fca;" statement_identifier : (if_statement "if (iVar15 != 0) goto LAB_00083fca;" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00083fca;" goto statement_identifier ;))) (expression_statement "PVar12 = p->iNext;" (assignment_expression "PVar12 = p->iNext" identifier = (field_expression "p->iNext" identifier -> field_identifier)) ;) (labeled_statement "LAB_00083f79:\n    p->nPagecount = local_64;" statement_identifier : (expression_statement "p->nPagecount = local_64;" (assignment_expression "p->nPagecount = local_64" (field_expression "p->nPagecount" identifier -> field_identifier) = identifier) ;)) (expression_statement "p->nRemaining = (local_64 + 1) - PVar12;" (assignment_expression "p->nRemaining = (local_64 + 1) - PVar12" (field_expression "p->nRemaining" identifier -> field_identifier) = (binary_expression "(local_64 + 1) - PVar12" (parenthesized_expression "(local_64 + 1)" ( (binary_expression "local_64 + 1" identifier + number_literal) )) - identifier)) ;) (if_statement "if (local_64 < PVar12) goto LAB_00083fd3;" if (parenthesized_expression "(local_64 < PVar12)" ( (binary_expression "local_64 < PVar12" identifier < identifier) )) (goto_statement "goto LAB_00083fd3;" goto statement_identifier ;)) (if_statement "if (p->isAttached == 0) {\n      pPVar13 = p->pSrc->pBt->pPager;\n      p->pNext = pPVar13->pBackup;\n      pPVar13->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      pPVar13 = p->pSrc->pBt->pPager;\n      p->pNext = pPVar13->pBackup;\n      pPVar13->pBackup = p;\n      p->isAttached = 1;\n    }" { (expression_statement "pPVar13 = p->pSrc->pBt->pPager;" (assignment_expression "pPVar13 = 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 = pPVar13->pBackup;" (assignment_expression "p->pNext = pPVar13->pBackup" (field_expression "p->pNext" identifier -> field_identifier) = (field_expression "pPVar13->pBackup" identifier -> field_identifier)) ;) (expression_statement "pPVar13->pBackup = p;" (assignment_expression "pPVar13->pBackup = p" (field_expression "pPVar13->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 "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;" statement_identifier : (if_statement "if (local_50 != 0) goto LAB_00083fb9;" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00083fb9;" goto statement_identifier ;))) (goto_statement "goto LAB_00083d18;" 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 "iVar15 = p->rc;" (assignment_expression "iVar15 = p->rc" identifier = (field_expression "p->rc" identifier -> field_identifier)) ;) (if_statement "if ((iVar15 - 5U < 2) || (iVar15 == 0)) {\n    pBVar6 = p->pDest;\n    p_00 = p->pSrc;\n    pBVar5 = pBVar6->pBt;\n    pBVar10 = p_00->pBt;\n    local_5c = pBVar5->pPager;\n    pPVar13 = pBVar10->pPager;\n    if ((p->pDestDb != (sqlite3 *)0x0) && (pBVar10->inTransaction == '\x02')) {\n      local_50 = 0;\n      iVar15 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }\n    if (p_00->inTrans == '\0') goto LAB_00083dad;\nLAB_00083c9d:\n    local_50 = p->bDestLocked;\n    if (local_50 == 0) {\nLAB_00083e11:\n      iVar15 = sqlite3BtreeSetPageSize(pBVar6,pBVar10->pageSize,0,0);\n      if (iVar15 != 7) {\n        pBVar6 = p->pDest;\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }\n    local_50 = 0;\n    pPVar14 = local_5c;\n    goto LAB_00083cb8;\n  }" if (parenthesized_expression "((iVar15 - 5U < 2) || (iVar15 == 0))" ( (binary_expression "(iVar15 - 5U < 2) || (iVar15 == 0)" (parenthesized_expression "(iVar15 - 5U < 2)" ( (binary_expression "iVar15 - 5U < 2" (binary_expression "iVar15 - 5U" identifier - number_literal) < number_literal) )) || (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    pBVar6 = p->pDest;\n    p_00 = p->pSrc;\n    pBVar5 = pBVar6->pBt;\n    pBVar10 = p_00->pBt;\n    local_5c = pBVar5->pPager;\n    pPVar13 = pBVar10->pPager;\n    if ((p->pDestDb != (sqlite3 *)0x0) && (pBVar10->inTransaction == '\x02')) {\n      local_50 = 0;\n      iVar15 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }\n    if (p_00->inTrans == '\0') goto LAB_00083dad;\nLAB_00083c9d:\n    local_50 = p->bDestLocked;\n    if (local_50 == 0) {\nLAB_00083e11:\n      iVar15 = sqlite3BtreeSetPageSize(pBVar6,pBVar10->pageSize,0,0);\n      if (iVar15 != 7) {\n        pBVar6 = p->pDest;\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }\n    local_50 = 0;\n    pPVar14 = local_5c;\n    goto LAB_00083cb8;\n  }" { (expression_statement "pBVar6 = p->pDest;" (assignment_expression "pBVar6 = p->pDest" identifier = (field_expression "p->pDest" identifier -> field_identifier)) ;) (expression_statement "p_00 = p->pSrc;" (assignment_expression "p_00 = p->pSrc" identifier = (field_expression "p->pSrc" identifier -> field_identifier)) ;) (expression_statement "pBVar5 = pBVar6->pBt;" (assignment_expression "pBVar5 = pBVar6->pBt" identifier = (field_expression "pBVar6->pBt" identifier -> field_identifier)) ;) (expression_statement "pBVar10 = p_00->pBt;" (assignment_expression "pBVar10 = p_00->pBt" identifier = (field_expression "p_00->pBt" identifier -> field_identifier)) ;) (expression_statement "local_5c = pBVar5->pPager;" (assignment_expression "local_5c = pBVar5->pPager" identifier = (field_expression "pBVar5->pPager" identifier -> field_identifier)) ;) (expression_statement "pPVar13 = pBVar10->pPager;" (assignment_expression "pPVar13 = pBVar10->pPager" identifier = (field_expression "pBVar10->pPager" identifier -> field_identifier)) ;) (if_statement "if ((p->pDestDb != (sqlite3 *)0x0) && (pBVar10->inTransaction == '\x02')) {\n      local_50 = 0;\n      iVar15 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }" if (parenthesized_expression "((p->pDestDb != (sqlite3 *)0x0) && (pBVar10->inTransaction == '\x02'))" ( (binary_expression "(p->pDestDb != (sqlite3 *)0x0) && (pBVar10->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 "(pBVar10->inTransaction == '\x02')" ( (binary_expression "pBVar10->inTransaction == '\x02'" (field_expression "pBVar10->inTransaction" identifier -> field_identifier) == (char_literal "'\x02'" ' escape_sequence ')) ))) )) (compound_statement "{\n      local_50 = 0;\n      iVar15 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }" { (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "iVar15 = 5;" (assignment_expression "iVar15 = 5" identifier = number_literal) ;) (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" identifier = identifier) ;) (goto_statement "goto LAB_00083e6b;" goto statement_identifier ;) })) (if_statement "if (p_00->inTrans == '\0') goto LAB_00083dad;" 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_00083dad;" goto statement_identifier ;)) (labeled_statement "LAB_00083c9d:\n    local_50 = p->bDestLocked;" statement_identifier : (expression_statement "local_50 = p->bDestLocked;" (assignment_expression "local_50 = p->bDestLocked" identifier = (field_expression "p->bDestLocked" identifier -> field_identifier)) ;)) (if_statement "if (local_50 == 0) {\nLAB_00083e11:\n      iVar15 = sqlite3BtreeSetPageSize(pBVar6,pBVar10->pageSize,0,0);\n      if (iVar15 != 7) {\n        pBVar6 = p->pDest;\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }" if (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00083e11:\n      iVar15 = sqlite3BtreeSetPageSize(pBVar6,pBVar10->pageSize,0,0);\n      if (iVar15 != 7) {\n        pBVar6 = p->pDest;\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }" { (labeled_statement "LAB_00083e11:\n      iVar15 = sqlite3BtreeSetPageSize(pBVar6,pBVar10->pageSize,0,0);" statement_identifier : (expression_statement "iVar15 = sqlite3BtreeSetPageSize(pBVar6,pBVar10->pageSize,0,0);" (assignment_expression "iVar15 = sqlite3BtreeSetPageSize(pBVar6,pBVar10->pageSize,0,0)" identifier = (call_expression "sqlite3BtreeSetPageSize(pBVar6,pBVar10->pageSize,0,0)" identifier (argument_list "(pBVar6,pBVar10->pageSize,0,0)" ( identifier , (field_expression "pBVar10->pageSize" identifier -> field_identifier) , number_literal , number_literal )))) ;)) (if_statement "if (iVar15 != 7) {\n        pBVar6 = p->pDest;\n        goto LAB_00083e2f;\n      }" if (parenthesized_expression "(iVar15 != 7)" ( (binary_expression "iVar15 != 7" identifier != number_literal) )) (compound_statement "{\n        pBVar6 = p->pDest;\n        goto LAB_00083e2f;\n      }" { (expression_statement "pBVar6 = p->pDest;" (assignment_expression "pBVar6 = p->pDest" identifier = (field_expression "p->pDest" identifier -> field_identifier)) ;) (goto_statement "goto LAB_00083e2f;" goto statement_identifier ;) })) (goto_statement "goto LAB_00083e51;" goto statement_identifier ;) })) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "pPVar14 = local_5c;" (assignment_expression "pPVar14 = local_5c" identifier = identifier) ;) (goto_statement "goto LAB_00083cb8;" goto statement_identifier ;) })) (goto_statement "goto LAB_00083d1b;" goto statement_identifier ;) (while_statement "while( true ) {\n    bVar17 = CARRY4(local_34,local_58);\n    local_34 = local_34 + local_58;\n    bVar4 = 1;\n    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar17;\n    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar4 = 0;\n    }\n    if (!(bool)(iVar15 == 0 & bVar4)) break;\nLAB_00084480:\n    pSrcPg = (DbPage *)0x0;\n    iVar19 = 0;\n    ppDVar18 = &pSrcPg;\n    iVar15 = __divdi3(local_34,local_30,local_58,(int)local_58 >> 0x1f);\n    iVar15 = (*pPVar13->xGet)(pPVar13,iVar15 + 1,ppDVar18,iVar19);\n    if (iVar15 == 0) {\n      iVar15 = (*psVar2->pMethods->xWrite)\n                         (psVar2,pSrcPg->pData,local_58,CONCAT44(local_30,local_34));\n      if (pSrcPg != (DbPage *)0x0) goto LAB_000844e2;\n    }\n    else {\n      if (pSrcPg == (DbPage *)0x0) goto LAB_000840d9;\nLAB_000844e2:\n      sqlite3PagerUnrefNotNull(pSrcPg);\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    bVar17 = CARRY4(local_34,local_58);\n    local_34 = local_34 + local_58;\n    bVar4 = 1;\n    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar17;\n    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar4 = 0;\n    }\n    if (!(bool)(iVar15 == 0 & bVar4)) break;\nLAB_00084480:\n    pSrcPg = (DbPage *)0x0;\n    iVar19 = 0;\n    ppDVar18 = &pSrcPg;\n    iVar15 = __divdi3(local_34,local_30,local_58,(int)local_58 >> 0x1f);\n    iVar15 = (*pPVar13->xGet)(pPVar13,iVar15 + 1,ppDVar18,iVar19);\n    if (iVar15 == 0) {\n      iVar15 = (*psVar2->pMethods->xWrite)\n                         (psVar2,pSrcPg->pData,local_58,CONCAT44(local_30,local_34));\n      if (pSrcPg != (DbPage *)0x0) goto LAB_000844e2;\n    }\n    else {\n      if (pSrcPg == (DbPage *)0x0) goto LAB_000840d9;\nLAB_000844e2:\n      sqlite3PagerUnrefNotNull(pSrcPg);\n    }\n  }" { (expression_statement "bVar17 = CARRY4(local_34,local_58);" (assignment_expression "bVar17 = CARRY4(local_34,local_58)" identifier = (call_expression "CARRY4(local_34,local_58)" identifier (argument_list "(local_34,local_58)" ( identifier , identifier )))) ;) (expression_statement "local_34 = local_34 + local_58;" (assignment_expression "local_34 = local_34 + local_58" identifier = (binary_expression "local_34 + local_58" identifier + identifier)) ;) (expression_statement "bVar4 = 1;" (assignment_expression "bVar4 = 1" identifier = number_literal) ;) (expression_statement "local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar17;" (assignment_expression "local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar17" identifier = (binary_expression "local_30 + ((int)local_58 >> 0x1f) + (uint)bVar17" (binary_expression "local_30 + ((int)local_58 >> 0x1f)" identifier + (parenthesized_expression "((int)local_58 >> 0x1f)" ( (binary_expression "(int)local_58 >> 0x1f" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar4 = 0;\n    }" if (parenthesized_expression "((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))" ( (binary_expression "(local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))" (parenthesized_expression "(local_54 <= local_30)" ( (binary_expression "local_54 <= local_30" identifier <= identifier) )) && (parenthesized_expression "((local_54 < local_30 || (local_4c <= local_34)))" ( (parenthesized_expression "(local_54 < local_30 || (local_4c <= local_34))" ( (binary_expression "local_54 < local_30 || (local_4c <= local_34)" (binary_expression "local_54 < local_30" identifier < identifier) || (parenthesized_expression "(local_4c <= local_34)" ( (binary_expression "local_4c <= local_34" identifier <= identifier) ))) )) ))) )) (compound_statement "{\n      bVar4 = 0;\n    }" { (expression_statement "bVar4 = 0;" (assignment_expression "bVar4 = 0" identifier = number_literal) ;) })) (if_statement "if (!(bool)(iVar15 == 0 & bVar4)) break;" if (parenthesized_expression "(!(bool)(iVar15 == 0 & bVar4))" ( (unary_expression "!(bool)(iVar15 == 0 & bVar4)" ! (cast_expression "(bool)(iVar15 == 0 & bVar4)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(iVar15 == 0 & bVar4)" ( (binary_expression "iVar15 == 0 & bVar4" (binary_expression "iVar15 == 0" identifier == number_literal) & identifier) )))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00084480:\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 "iVar15 = __divdi3(local_34,local_30,local_58,(int)local_58 >> 0x1f);" (assignment_expression "iVar15 = __divdi3(local_34,local_30,local_58,(int)local_58 >> 0x1f)" identifier = (call_expression "__divdi3(local_34,local_30,local_58,(int)local_58 >> 0x1f)" identifier (argument_list "(local_34,local_30,local_58,(int)local_58 >> 0x1f)" ( identifier , identifier , identifier , (binary_expression "(int)local_58 >> 0x1f" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar15 = (*pPVar13->xGet)(pPVar13,iVar15 + 1,ppDVar18,iVar19);" (assignment_expression "iVar15 = (*pPVar13->xGet)(pPVar13,iVar15 + 1,ppDVar18,iVar19)" identifier = (call_expression "(*pPVar13->xGet)(pPVar13,iVar15 + 1,ppDVar18,iVar19)" (parenthesized_expression "(*pPVar13->xGet)" ( (pointer_expression "*pPVar13->xGet" * (field_expression "pPVar13->xGet" identifier -> field_identifier)) )) (argument_list "(pPVar13,iVar15 + 1,ppDVar18,iVar19)" ( identifier , (binary_expression "iVar15 + 1" identifier + number_literal) , identifier , identifier )))) ;) (if_statement "if (iVar15 == 0) {\n      iVar15 = (*psVar2->pMethods->xWrite)\n                         (psVar2,pSrcPg->pData,local_58,CONCAT44(local_30,local_34));\n      if (pSrcPg != (DbPage *)0x0) goto LAB_000844e2;\n    }\n    else {\n      if (pSrcPg == (DbPage *)0x0) goto LAB_000840d9;\nLAB_000844e2:\n      sqlite3PagerUnrefNotNull(pSrcPg);\n    }" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar15 = (*psVar2->pMethods->xWrite)\n                         (psVar2,pSrcPg->pData,local_58,CONCAT44(local_30,local_34));\n      if (pSrcPg != (DbPage *)0x0) goto LAB_000844e2;\n    }" { (expression_statement "iVar15 = (*psVar2->pMethods->xWrite)\n                         (psVar2,pSrcPg->pData,local_58,CONCAT44(local_30,local_34));" (assignment_expression "iVar15 = (*psVar2->pMethods->xWrite)\n                         (psVar2,pSrcPg->pData,local_58,CONCAT44(local_30,local_34))" identifier = (call_expression "(*psVar2->pMethods->xWrite)\n                         (psVar2,pSrcPg->pData,local_58,CONCAT44(local_30,local_34))" (parenthesized_expression "(*psVar2->pMethods->xWrite)" ( (pointer_expression "*psVar2->pMethods->xWrite" * (field_expression "psVar2->pMethods->xWrite" (field_expression "psVar2->pMethods" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(psVar2,pSrcPg->pData,local_58,CONCAT44(local_30,local_34))" ( identifier , (field_expression "pSrcPg->pData" identifier -> field_identifier) , identifier , (call_expression "CONCAT44(local_30,local_34)" identifier (argument_list "(local_30,local_34)" ( identifier , identifier ))) )))) ;) (if_statement "if (pSrcPg != (DbPage *)0x0) goto LAB_000844e2;" 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_000844e2;" goto statement_identifier ;)) }) (else_clause "else {\n      if (pSrcPg == (DbPage *)0x0) goto LAB_000840d9;\nLAB_000844e2:\n      sqlite3PagerUnrefNotNull(pSrcPg);\n    }" else (compound_statement "{\n      if (pSrcPg == (DbPage *)0x0) goto LAB_000840d9;\nLAB_000844e2:\n      sqlite3PagerUnrefNotNull(pSrcPg);\n    }" { (if_statement "if (pSrcPg == (DbPage *)0x0) goto LAB_000840d9;" 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_000840d9;" goto statement_identifier ;)) (labeled_statement "LAB_000844e2:\n      sqlite3PagerUnrefNotNull(pSrcPg);" statement_identifier : (expression_statement "sqlite3PagerUnrefNotNull(pSrcPg);" (call_expression "sqlite3PagerUnrefNotNull(pSrcPg)" identifier (argument_list "(pSrcPg)" ( identifier ))) ;)) }))) })) (labeled_statement "LAB_00084344:\n  if (iVar15 == 0) {\nLAB_0008434c:\n    iVar15 = (*psVar2->pMethods->xFileSize)(psVar2,(sqlite3_int64 *)&pSrcPg);\n    if ((iVar15 == 0) &&\n       ((CONCAT44(local_28,pSrcPg) <= lVar3 ||\n        (iVar15 = (*psVar2->pMethods->xTruncate)(psVar2,lVar3), iVar15 == 0)))) {\n      iVar15 = sqlite3PagerSync(local_40,(char *)0x0);\nLAB_00084248:\n      if (iVar15 == 0) {\nLAB_00084250:\n        if ((p->pDest->inTrans == '\0') ||\n           (iVar15 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar15 == 0)) {\n          iVar15 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }" statement_identifier : (if_statement "if (iVar15 == 0) {\nLAB_0008434c:\n    iVar15 = (*psVar2->pMethods->xFileSize)(psVar2,(sqlite3_int64 *)&pSrcPg);\n    if ((iVar15 == 0) &&\n       ((CONCAT44(local_28,pSrcPg) <= lVar3 ||\n        (iVar15 = (*psVar2->pMethods->xTruncate)(psVar2,lVar3), iVar15 == 0)))) {\n      iVar15 = sqlite3PagerSync(local_40,(char *)0x0);\nLAB_00084248:\n      if (iVar15 == 0) {\nLAB_00084250:\n        if ((p->pDest->inTrans == '\0') ||\n           (iVar15 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar15 == 0)) {\n          iVar15 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0008434c:\n    iVar15 = (*psVar2->pMethods->xFileSize)(psVar2,(sqlite3_int64 *)&pSrcPg);\n    if ((iVar15 == 0) &&\n       ((CONCAT44(local_28,pSrcPg) <= lVar3 ||\n        (iVar15 = (*psVar2->pMethods->xTruncate)(psVar2,lVar3), iVar15 == 0)))) {\n      iVar15 = sqlite3PagerSync(local_40,(char *)0x0);\nLAB_00084248:\n      if (iVar15 == 0) {\nLAB_00084250:\n        if ((p->pDest->inTrans == '\0') ||\n           (iVar15 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar15 == 0)) {\n          iVar15 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }" { (labeled_statement "LAB_0008434c:\n    iVar15 = (*psVar2->pMethods->xFileSize)(psVar2,(sqlite3_int64 *)&pSrcPg);" statement_identifier : (expression_statement "iVar15 = (*psVar2->pMethods->xFileSize)(psVar2,(sqlite3_int64 *)&pSrcPg);" (assignment_expression "iVar15 = (*psVar2->pMethods->xFileSize)(psVar2,(sqlite3_int64 *)&pSrcPg)" identifier = (call_expression "(*psVar2->pMethods->xFileSize)(psVar2,(sqlite3_int64 *)&pSrcPg)" (parenthesized_expression "(*psVar2->pMethods->xFileSize)" ( (pointer_expression "*psVar2->pMethods->xFileSize" * (field_expression "psVar2->pMethods->xFileSize" (field_expression "psVar2->pMethods" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(psVar2,(sqlite3_int64 *)&pSrcPg)" ( identifier , (cast_expression "(sqlite3_int64 *)&pSrcPg" ( (type_descriptor "sqlite3_int64 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pSrcPg" & identifier)) )))) ;)) (if_statement "if ((iVar15 == 0) &&\n       ((CONCAT44(local_28,pSrcPg) <= lVar3 ||\n        (iVar15 = (*psVar2->pMethods->xTruncate)(psVar2,lVar3), iVar15 == 0)))) {\n      iVar15 = sqlite3PagerSync(local_40,(char *)0x0);\nLAB_00084248:\n      if (iVar15 == 0) {\nLAB_00084250:\n        if ((p->pDest->inTrans == '\0') ||\n           (iVar15 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar15 == 0)) {\n          iVar15 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }" if (parenthesized_expression "((iVar15 == 0) &&\n       ((CONCAT44(local_28,pSrcPg) <= lVar3 ||\n        (iVar15 = (*psVar2->pMethods->xTruncate)(psVar2,lVar3), iVar15 == 0))))" ( (binary_expression "(iVar15 == 0) &&\n       ((CONCAT44(local_28,pSrcPg) <= lVar3 ||\n        (iVar15 = (*psVar2->pMethods->xTruncate)(psVar2,lVar3), iVar15 == 0)))" (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) && (parenthesized_expression "((CONCAT44(local_28,pSrcPg) <= lVar3 ||\n        (iVar15 = (*psVar2->pMethods->xTruncate)(psVar2,lVar3), iVar15 == 0)))" ( (parenthesized_expression "(CONCAT44(local_28,pSrcPg) <= lVar3 ||\n        (iVar15 = (*psVar2->pMethods->xTruncate)(psVar2,lVar3), iVar15 == 0))" ( (binary_expression "CONCAT44(local_28,pSrcPg) <= lVar3 ||\n        (iVar15 = (*psVar2->pMethods->xTruncate)(psVar2,lVar3), iVar15 == 0)" (binary_expression "CONCAT44(local_28,pSrcPg) <= lVar3" (call_expression "CONCAT44(local_28,pSrcPg)" identifier (argument_list "(local_28,pSrcPg)" ( identifier , identifier ))) <= identifier) || (parenthesized_expression "(iVar15 = (*psVar2->pMethods->xTruncate)(psVar2,lVar3), iVar15 == 0)" ( (comma_expression "iVar15 = (*psVar2->pMethods->xTruncate)(psVar2,lVar3), iVar15 == 0" (assignment_expression "iVar15 = (*psVar2->pMethods->xTruncate)(psVar2,lVar3)" identifier = (call_expression "(*psVar2->pMethods->xTruncate)(psVar2,lVar3)" (parenthesized_expression "(*psVar2->pMethods->xTruncate)" ( (pointer_expression "*psVar2->pMethods->xTruncate" * (field_expression "psVar2->pMethods->xTruncate" (field_expression "psVar2->pMethods" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(psVar2,lVar3)" ( identifier , identifier )))) , (binary_expression "iVar15 == 0" identifier == number_literal)) ))) )) ))) )) (compound_statement "{\n      iVar15 = sqlite3PagerSync(local_40,(char *)0x0);\nLAB_00084248:\n      if (iVar15 == 0) {\nLAB_00084250:\n        if ((p->pDest->inTrans == '\0') ||\n           (iVar15 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar15 == 0)) {\n          iVar15 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }" { (expression_statement "iVar15 = sqlite3PagerSync(local_40,(char *)0x0);" (assignment_expression "iVar15 = sqlite3PagerSync(local_40,(char *)0x0)" identifier = (call_expression "sqlite3PagerSync(local_40,(char *)0x0)" identifier (argument_list "(local_40,(char *)0x0)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (labeled_statement "LAB_00084248:\n      if (iVar15 == 0) {\nLAB_00084250:\n        if ((p->pDest->inTrans == '\0') ||\n           (iVar15 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar15 == 0)) {\n          iVar15 = 0x65;\n          goto LAB_00083fad;\n        }\n      }" statement_identifier : (if_statement "if (iVar15 == 0) {\nLAB_00084250:\n        if ((p->pDest->inTrans == '\0') ||\n           (iVar15 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar15 == 0)) {\n          iVar15 = 0x65;\n          goto LAB_00083fad;\n        }\n      }" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00084250:\n        if ((p->pDest->inTrans == '\0') ||\n           (iVar15 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar15 == 0)) {\n          iVar15 = 0x65;\n          goto LAB_00083fad;\n        }\n      }" { (labeled_statement "LAB_00084250:\n        if ((p->pDest->inTrans == '\0') ||\n           (iVar15 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar15 == 0)) {\n          iVar15 = 0x65;\n          goto LAB_00083fad;\n        }" statement_identifier : (if_statement "if ((p->pDest->inTrans == '\0') ||\n           (iVar15 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar15 == 0)) {\n          iVar15 = 0x65;\n          goto LAB_00083fad;\n        }" if (parenthesized_expression "((p->pDest->inTrans == '\0') ||\n           (iVar15 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar15 == 0))" ( (binary_expression "(p->pDest->inTrans == '\0') ||\n           (iVar15 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar15 == 0)" (parenthesized_expression "(p->pDest->inTrans == '\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 "(iVar15 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar15 == 0)" ( (comma_expression "iVar15 = sqlite3BtreeCommitPhaseTwo(p->pDest,0), iVar15 == 0" (assignment_expression "iVar15 = 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 "iVar15 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n          iVar15 = 0x65;\n          goto LAB_00083fad;\n        }" { (expression_statement "iVar15 = 0x65;" (assignment_expression "iVar15 = 0x65" identifier = number_literal) ;) (goto_statement "goto LAB_00083fad;" goto statement_identifier ;) }))) }))) })) }))) (labeled_statement "LAB_000840d9:\n  if (local_50 != 0) {\nLAB_00083fb9:\n    p_00 = p->pSrc;\nLAB_00083cf5:\n    uVar11 = p_00->inTrans;\n    if (uVar11 == '\x02') {\n      sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0);\n      p_00 = p->pSrc;\n      uVar11 = p_00->inTrans;\n    }\n    if (uVar11 != '\0') {\n      sqlite3BtreeCommitPhaseTwo(p_00,0);\n    }\n  }" statement_identifier : (if_statement "if (local_50 != 0) {\nLAB_00083fb9:\n    p_00 = p->pSrc;\nLAB_00083cf5:\n    uVar11 = p_00->inTrans;\n    if (uVar11 == '\x02') {\n      sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0);\n      p_00 = p->pSrc;\n      uVar11 = p_00->inTrans;\n    }\n    if (uVar11 != '\0') {\n      sqlite3BtreeCommitPhaseTwo(p_00,0);\n    }\n  }" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00083fb9:\n    p_00 = p->pSrc;\nLAB_00083cf5:\n    uVar11 = p_00->inTrans;\n    if (uVar11 == '\x02') {\n      sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0);\n      p_00 = p->pSrc;\n      uVar11 = p_00->inTrans;\n    }\n    if (uVar11 != '\0') {\n      sqlite3BtreeCommitPhaseTwo(p_00,0);\n    }\n  }" { (labeled_statement "LAB_00083fb9:\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_00083cf5:\n    uVar11 = p_00->inTrans;" statement_identifier : (expression_statement "uVar11 = p_00->inTrans;" (assignment_expression "uVar11 = p_00->inTrans" identifier = (field_expression "p_00->inTrans" identifier -> field_identifier)) ;)) (if_statement "if (uVar11 == '\x02') {\n      sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0);\n      p_00 = p->pSrc;\n      uVar11 = p_00->inTrans;\n    }" if (parenthesized_expression "(uVar11 == '\x02')" ( (binary_expression "uVar11 == '\x02'" identifier == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      sqlite3BtreeCommitPhaseOne(p_00,(char *)0x0);\n      p_00 = p->pSrc;\n      uVar11 = 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 "uVar11 = p_00->inTrans;" (assignment_expression "uVar11 = p_00->inTrans" identifier = (field_expression "p_00->inTrans" identifier -> field_identifier)) ;) })) (if_statement "if (uVar11 != '\0') {\n      sqlite3BtreeCommitPhaseTwo(p_00,0);\n    }" if (parenthesized_expression "(uVar11 != '\0')" ( (binary_expression "uVar11 != '\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 ))) ;) })) }))) (if_statement "if (iVar15 == 0xc0a) {\n    iVar15 = 7;\n  }" if (parenthesized_expression "(iVar15 == 0xc0a)" ( (binary_expression "iVar15 == 0xc0a" identifier == number_literal) )) (compound_statement "{\n    iVar15 = 7;\n  }" { (expression_statement "iVar15 = 7;" (assignment_expression "iVar15 = 7" identifier = number_literal) ;) })) (labeled_statement "LAB_00083d18:\n  p->rc = iVar15;" statement_identifier : (expression_statement "p->rc = iVar15;" (assignment_expression "p->rc = iVar15" (field_expression "p->rc" identifier -> field_identifier) = identifier) ;)) (labeled_statement "LAB_00083d1b:\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_00083d33:\n  pBVar6 = p->pSrc;" statement_identifier : (expression_statement "pBVar6 = p->pSrc;" (assignment_expression "pBVar6 = p->pSrc" identifier = (field_expression "p->pSrc" identifier -> field_identifier)) ;)) (if_statement "if (pBVar6->sharable != '\0') {\n    piVar1 = &pBVar6->wantToLock;\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      unlockBtreeMutex((Btree *)pBVar6->pBt,(Btree *)&pBVar6->locked);\n    }\n  }" if (parenthesized_expression "(pBVar6->sharable != '\0')" ( (binary_expression "pBVar6->sharable != '\0'" (field_expression "pBVar6->sharable" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    piVar1 = &pBVar6->wantToLock;\n    *piVar1 = *piVar1 + -1;\n    if (*piVar1 == 0) {\n      unlockBtreeMutex((Btree *)pBVar6->pBt,(Btree *)&pBVar6->locked);\n    }\n  }" { (expression_statement "piVar1 = &pBVar6->wantToLock;" (assignment_expression "piVar1 = &pBVar6->wantToLock" identifier = (pointer_expression "&pBVar6->wantToLock" & (field_expression "pBVar6->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      unlockBtreeMutex((Btree *)pBVar6->pBt,(Btree *)&pBVar6->locked);\n    }" if (parenthesized_expression "(*piVar1 == 0)" ( (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" * identifier) == number_literal) )) (compound_statement "{\n      unlockBtreeMutex((Btree *)pBVar6->pBt,(Btree *)&pBVar6->locked);\n    }" { (expression_statement "unlockBtreeMutex((Btree *)pBVar6->pBt,(Btree *)&pBVar6->locked);" (call_expression "unlockBtreeMutex((Btree *)pBVar6->pBt,(Btree *)&pBVar6->locked)" identifier (argument_list "((Btree *)pBVar6->pBt,(Btree *)&pBVar6->locked)" ( (cast_expression "(Btree *)pBVar6->pBt" ( (type_descriptor "Btree *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pBVar6->pBt" identifier -> field_identifier)) , (cast_expression "(Btree *)&pBVar6->locked" ( (type_descriptor "Btree *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pBVar6->locked" & (field_expression "pBVar6->locked" identifier -> field_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 iVar15;" return identifier ;) })))
(translation_unit "int sqlite3_backup_step(int *param_1,uint param_2)\n\n{\n  longlong lVar1;\n  byte bVar2;\n  int *piVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  int *piVar7;\n  char cVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  int in_GS_OFFSET;\n  bool bVar14;\n  undefined4 uVar15;\n  uint local_64;\n  uint local_5c;\n  uint local_58;\n  int local_54;\n  int local_50;\n  uint local_4c;\n  int local_40;\n  uint local_3c;\n  int local_38;\n  uint local_34;\n  int local_30;\n  int local_2c;\n  undefined4 local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x83c09;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  sqlite3_mutex_enter(*(undefined4 *)(param_1[5] + 0xc));\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    FUN_00024b20();\n  }\n  if (*param_1 == 0) {\n    iVar12 = param_1[7];\n    if ((1 < iVar12 - 5U) && (iVar12 != 0)) goto LAB_00083d33;\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if (*(char *)(iVar9 + 8) != '\0') goto LAB_00083c9d;\nLAB_00083dad:\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0 && param_1[3] == 0) {\n      local_50 = 1;\n      goto LAB_00083e11;\n    }\n    iVar4 = param_1[1];\n    if (iVar12 != 0) {\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }\n    local_50 = 1;\nLAB_00083e2f:\n    if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0) {\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }\nLAB_00083e51:\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(param_1[6] + 4);\n    local_40 = local_5c;\n    local_5c = *piVar3;\nLAB_00083e6b:\n    local_4c = piVar3[9];\n    local_58 = piVar7[9];\n    bVar14 = *(char *)(local_5c + 5) == '\x05';\n    local_64 = piVar7[0xc];\nLAB_00083e8d:\n    if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }\nLAB_00083f72:\n    if (iVar12 != 0) goto LAB_00083fca;\n    uVar10 = param_1[4];\nLAB_00083f79:\n    param_1[9] = local_64;\n    param_1[8] = (local_64 + 1) - uVar10;\n    if (local_64 < uVar10) goto LAB_00083fd3;\n    if (param_1[10] == 0) {\n      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 0x58) = param_1;\n      param_1[10] = 1;\n    }\n    iVar12 = 0;\nLAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;\n    goto LAB_00083d18;\n  }\n  sqlite3_mutex_enter(*(undefined4 *)(*param_1 + 0xc));\n  iVar12 = param_1[7];\n  if ((iVar12 - 5U < 2) || (iVar12 == 0)) {\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if ((*param_1 != 0) && ((char)piVar7[5] == '\x02')) {\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }\n    if (*(char *)(iVar9 + 8) == '\0') goto LAB_00083dad;\nLAB_00083c9d:\n    local_50 = param_1[3];\n    if (local_50 == 0) {\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }\n    local_50 = 0;\n    uVar10 = local_5c;\n    goto LAB_00083cb8;\n  }\n  goto LAB_00083d1b;\n  while( true ) {\n    bVar14 = CARRY4(local_34,local_58);\n    local_34 = local_34 + local_58;\n    bVar2 = 1;\n    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14;\n    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar2 = 0;\n    }\n    if (!(bool)(iVar12 == 0 & bVar2)) break;\nLAB_00084480:\n    local_2c = 0;\n    uVar15 = 0;\n    piVar7 = &local_2c;\n    iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f);\n    iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15);\n    if (iVar12 == 0) {\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }\n  }\nLAB_00084344:\n  if (iVar12 == 0) {\nLAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);\n    if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }\nLAB_000840d9:\n  if (local_50 != 0) {\nLAB_00083fb9:\n    iVar9 = param_1[6];\nLAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);\n    if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar8 != '\0') {\n      FUN_00080560();\n    }\n  }\n  if (iVar12 == 0xc0a) {\n    iVar12 = 7;\n  }\nLAB_00083d18:\n  param_1[7] = iVar12;\nLAB_00083d1b:\n  if (*param_1 != 0) {\n    sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc));\n  }\nLAB_00083d33:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar3 = (int *)(param_1[6] + 0xc);\n    *piVar3 = *piVar3 + -1;\n    if (*piVar3 == 0) {\n      FUN_00024a20();\n    }\n  }\n  sqlite3_mutex_leave(*(undefined4 *)(param_1[5] + 0xc));\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000d1450();\n  }\n  return iVar12;\n}\n\n" (function_definition "int sqlite3_backup_step(int *param_1,uint param_2)\n\n{\n  longlong lVar1;\n  byte bVar2;\n  int *piVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  int *piVar7;\n  char cVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  int in_GS_OFFSET;\n  bool bVar14;\n  undefined4 uVar15;\n  uint local_64;\n  uint local_5c;\n  uint local_58;\n  int local_54;\n  int local_50;\n  uint local_4c;\n  int local_40;\n  uint local_3c;\n  int local_38;\n  uint local_34;\n  int local_30;\n  int local_2c;\n  undefined4 local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x83c09;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  sqlite3_mutex_enter(*(undefined4 *)(param_1[5] + 0xc));\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    FUN_00024b20();\n  }\n  if (*param_1 == 0) {\n    iVar12 = param_1[7];\n    if ((1 < iVar12 - 5U) && (iVar12 != 0)) goto LAB_00083d33;\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if (*(char *)(iVar9 + 8) != '\0') goto LAB_00083c9d;\nLAB_00083dad:\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0 && param_1[3] == 0) {\n      local_50 = 1;\n      goto LAB_00083e11;\n    }\n    iVar4 = param_1[1];\n    if (iVar12 != 0) {\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }\n    local_50 = 1;\nLAB_00083e2f:\n    if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0) {\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }\nLAB_00083e51:\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(param_1[6] + 4);\n    local_40 = local_5c;\n    local_5c = *piVar3;\nLAB_00083e6b:\n    local_4c = piVar3[9];\n    local_58 = piVar7[9];\n    bVar14 = *(char *)(local_5c + 5) == '\x05';\n    local_64 = piVar7[0xc];\nLAB_00083e8d:\n    if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }\nLAB_00083f72:\n    if (iVar12 != 0) goto LAB_00083fca;\n    uVar10 = param_1[4];\nLAB_00083f79:\n    param_1[9] = local_64;\n    param_1[8] = (local_64 + 1) - uVar10;\n    if (local_64 < uVar10) goto LAB_00083fd3;\n    if (param_1[10] == 0) {\n      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 0x58) = param_1;\n      param_1[10] = 1;\n    }\n    iVar12 = 0;\nLAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;\n    goto LAB_00083d18;\n  }\n  sqlite3_mutex_enter(*(undefined4 *)(*param_1 + 0xc));\n  iVar12 = param_1[7];\n  if ((iVar12 - 5U < 2) || (iVar12 == 0)) {\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if ((*param_1 != 0) && ((char)piVar7[5] == '\x02')) {\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }\n    if (*(char *)(iVar9 + 8) == '\0') goto LAB_00083dad;\nLAB_00083c9d:\n    local_50 = param_1[3];\n    if (local_50 == 0) {\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }\n    local_50 = 0;\n    uVar10 = local_5c;\n    goto LAB_00083cb8;\n  }\n  goto LAB_00083d1b;\n  while( true ) {\n    bVar14 = CARRY4(local_34,local_58);\n    local_34 = local_34 + local_58;\n    bVar2 = 1;\n    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14;\n    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar2 = 0;\n    }\n    if (!(bool)(iVar12 == 0 & bVar2)) break;\nLAB_00084480:\n    local_2c = 0;\n    uVar15 = 0;\n    piVar7 = &local_2c;\n    iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f);\n    iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15);\n    if (iVar12 == 0) {\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }\n  }\nLAB_00084344:\n  if (iVar12 == 0) {\nLAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);\n    if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }\nLAB_000840d9:\n  if (local_50 != 0) {\nLAB_00083fb9:\n    iVar9 = param_1[6];\nLAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);\n    if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar8 != '\0') {\n      FUN_00080560();\n    }\n  }\n  if (iVar12 == 0xc0a) {\n    iVar12 = 7;\n  }\nLAB_00083d18:\n  param_1[7] = iVar12;\nLAB_00083d1b:\n  if (*param_1 != 0) {\n    sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc));\n  }\nLAB_00083d33:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar3 = (int *)(param_1[6] + 0xc);\n    *piVar3 = *piVar3 + -1;\n    if (*piVar3 == 0) {\n      FUN_00024a20();\n    }\n  }\n  sqlite3_mutex_leave(*(undefined4 *)(param_1[5] + 0xc));\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000d1450();\n  }\n  return iVar12;\n}" primitive_type (function_declarator "sqlite3_backup_step(int *param_1,uint param_2)" identifier (parameter_list "(int *param_1,uint param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  longlong lVar1;\n  byte bVar2;\n  int *piVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  int *piVar7;\n  char cVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  int in_GS_OFFSET;\n  bool bVar14;\n  undefined4 uVar15;\n  uint local_64;\n  uint local_5c;\n  uint local_58;\n  int local_54;\n  int local_50;\n  uint local_4c;\n  int local_40;\n  uint local_3c;\n  int local_38;\n  uint local_34;\n  int local_30;\n  int local_2c;\n  undefined4 local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x83c09;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  sqlite3_mutex_enter(*(undefined4 *)(param_1[5] + 0xc));\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    FUN_00024b20();\n  }\n  if (*param_1 == 0) {\n    iVar12 = param_1[7];\n    if ((1 < iVar12 - 5U) && (iVar12 != 0)) goto LAB_00083d33;\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if (*(char *)(iVar9 + 8) != '\0') goto LAB_00083c9d;\nLAB_00083dad:\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0 && param_1[3] == 0) {\n      local_50 = 1;\n      goto LAB_00083e11;\n    }\n    iVar4 = param_1[1];\n    if (iVar12 != 0) {\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }\n    local_50 = 1;\nLAB_00083e2f:\n    if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0) {\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }\nLAB_00083e51:\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(param_1[6] + 4);\n    local_40 = local_5c;\n    local_5c = *piVar3;\nLAB_00083e6b:\n    local_4c = piVar3[9];\n    local_58 = piVar7[9];\n    bVar14 = *(char *)(local_5c + 5) == '\x05';\n    local_64 = piVar7[0xc];\nLAB_00083e8d:\n    if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }\nLAB_00083f72:\n    if (iVar12 != 0) goto LAB_00083fca;\n    uVar10 = param_1[4];\nLAB_00083f79:\n    param_1[9] = local_64;\n    param_1[8] = (local_64 + 1) - uVar10;\n    if (local_64 < uVar10) goto LAB_00083fd3;\n    if (param_1[10] == 0) {\n      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 0x58) = param_1;\n      param_1[10] = 1;\n    }\n    iVar12 = 0;\nLAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;\n    goto LAB_00083d18;\n  }\n  sqlite3_mutex_enter(*(undefined4 *)(*param_1 + 0xc));\n  iVar12 = param_1[7];\n  if ((iVar12 - 5U < 2) || (iVar12 == 0)) {\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if ((*param_1 != 0) && ((char)piVar7[5] == '\x02')) {\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }\n    if (*(char *)(iVar9 + 8) == '\0') goto LAB_00083dad;\nLAB_00083c9d:\n    local_50 = param_1[3];\n    if (local_50 == 0) {\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }\n    local_50 = 0;\n    uVar10 = local_5c;\n    goto LAB_00083cb8;\n  }\n  goto LAB_00083d1b;\n  while( true ) {\n    bVar14 = CARRY4(local_34,local_58);\n    local_34 = local_34 + local_58;\n    bVar2 = 1;\n    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14;\n    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar2 = 0;\n    }\n    if (!(bool)(iVar12 == 0 & bVar2)) break;\nLAB_00084480:\n    local_2c = 0;\n    uVar15 = 0;\n    piVar7 = &local_2c;\n    iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f);\n    iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15);\n    if (iVar12 == 0) {\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }\n  }\nLAB_00084344:\n  if (iVar12 == 0) {\nLAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);\n    if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }\nLAB_000840d9:\n  if (local_50 != 0) {\nLAB_00083fb9:\n    iVar9 = param_1[6];\nLAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);\n    if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar8 != '\0') {\n      FUN_00080560();\n    }\n  }\n  if (iVar12 == 0xc0a) {\n    iVar12 = 7;\n  }\nLAB_00083d18:\n  param_1[7] = iVar12;\nLAB_00083d1b:\n  if (*param_1 != 0) {\n    sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc));\n  }\nLAB_00083d33:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar3 = (int *)(param_1[6] + 0xc);\n    *piVar3 = *piVar3 + -1;\n    if (*piVar3 == 0) {\n      FUN_00024a20();\n    }\n  }\n  sqlite3_mutex_leave(*(undefined4 *)(param_1[5] + 0xc));\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000d1450();\n  }\n  return iVar12;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "undefined4 uVar15;" type_identifier identifier ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "uint local_58;" type_identifier identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x83c09;" (assignment_expression "uStack_14 = 0x83c09" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "sqlite3_mutex_enter(*(undefined4 *)(param_1[5] + 0xc));" (call_expression "sqlite3_mutex_enter(*(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_00024b20();\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_00024b20();\n  }" { (expression_statement "FUN_00024b20();" (call_expression "FUN_00024b20()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (*param_1 == 0) {\n    iVar12 = param_1[7];\n    if ((1 < iVar12 - 5U) && (iVar12 != 0)) goto LAB_00083d33;\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if (*(char *)(iVar9 + 8) != '\0') goto LAB_00083c9d;\nLAB_00083dad:\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0 && param_1[3] == 0) {\n      local_50 = 1;\n      goto LAB_00083e11;\n    }\n    iVar4 = param_1[1];\n    if (iVar12 != 0) {\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }\n    local_50 = 1;\nLAB_00083e2f:\n    if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0) {\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }\nLAB_00083e51:\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(param_1[6] + 4);\n    local_40 = local_5c;\n    local_5c = *piVar3;\nLAB_00083e6b:\n    local_4c = piVar3[9];\n    local_58 = piVar7[9];\n    bVar14 = *(char *)(local_5c + 5) == '\x05';\n    local_64 = piVar7[0xc];\nLAB_00083e8d:\n    if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }\nLAB_00083f72:\n    if (iVar12 != 0) goto LAB_00083fca;\n    uVar10 = param_1[4];\nLAB_00083f79:\n    param_1[9] = local_64;\n    param_1[8] = (local_64 + 1) - uVar10;\n    if (local_64 < uVar10) goto LAB_00083fd3;\n    if (param_1[10] == 0) {\n      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 0x58) = param_1;\n      param_1[10] = 1;\n    }\n    iVar12 = 0;\nLAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;\n    goto LAB_00083d18;\n  }" if (parenthesized_expression "(*param_1 == 0)" ( (binary_expression "*param_1 == 0" (pointer_expression "*param_1" * identifier) == number_literal) )) (compound_statement "{\n    iVar12 = param_1[7];\n    if ((1 < iVar12 - 5U) && (iVar12 != 0)) goto LAB_00083d33;\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if (*(char *)(iVar9 + 8) != '\0') goto LAB_00083c9d;\nLAB_00083dad:\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0 && param_1[3] == 0) {\n      local_50 = 1;\n      goto LAB_00083e11;\n    }\n    iVar4 = param_1[1];\n    if (iVar12 != 0) {\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }\n    local_50 = 1;\nLAB_00083e2f:\n    if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0) {\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }\nLAB_00083e51:\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(param_1[6] + 4);\n    local_40 = local_5c;\n    local_5c = *piVar3;\nLAB_00083e6b:\n    local_4c = piVar3[9];\n    local_58 = piVar7[9];\n    bVar14 = *(char *)(local_5c + 5) == '\x05';\n    local_64 = piVar7[0xc];\nLAB_00083e8d:\n    if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }\nLAB_00083f72:\n    if (iVar12 != 0) goto LAB_00083fca;\n    uVar10 = param_1[4];\nLAB_00083f79:\n    param_1[9] = local_64;\n    param_1[8] = (local_64 + 1) - uVar10;\n    if (local_64 < uVar10) goto LAB_00083fd3;\n    if (param_1[10] == 0) {\n      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 0x58) = param_1;\n      param_1[10] = 1;\n    }\n    iVar12 = 0;\nLAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;\n    goto LAB_00083d18;\n  }" { (expression_statement "iVar12 = param_1[7];" (assignment_expression "iVar12 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (if_statement "if ((1 < iVar12 - 5U) && (iVar12 != 0)) goto LAB_00083d33;" if (parenthesized_expression "((1 < iVar12 - 5U) && (iVar12 != 0))" ( (binary_expression "(1 < iVar12 - 5U) && (iVar12 != 0)" (parenthesized_expression "(1 < iVar12 - 5U)" ( (binary_expression "1 < iVar12 - 5U" number_literal < (binary_expression "iVar12 - 5U" identifier - number_literal)) )) && (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_00083d33;" goto statement_identifier ;)) (expression_statement "iVar9 = param_1[6];" (assignment_expression "iVar9 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "piVar3 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar3 = *(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 "piVar7 = *(int **)(iVar9 + 4);" (assignment_expression "piVar7 = *(int **)(iVar9 + 4)" identifier = (pointer_expression "*(int **)(iVar9 + 4)" * (cast_expression "(int **)(iVar9 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_5c = *piVar3;" (assignment_expression "local_5c = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "iVar11 = *piVar7;" (assignment_expression "iVar11 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (if_statement "if (*(char *)(iVar9 + 8) != '\0') goto LAB_00083c9d;" if (parenthesized_expression "(*(char *)(iVar9 + 8) != '\0')" ( (binary_expression "*(char *)(iVar9 + 8) != '\0'" (pointer_expression "*(char *)(iVar9 + 8)" * (cast_expression "(char *)(iVar9 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 8)" ( (binary_expression "iVar9 + 8" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00083c9d;" goto statement_identifier ;)) (labeled_statement "LAB_00083dad:\n    iVar12 = FUN_00080d90();" statement_identifier : (expression_statement "iVar12 = FUN_00080d90();" (assignment_expression "iVar12 = FUN_00080d90()" identifier = (call_expression "FUN_00080d90()" identifier (argument_list "()" ( )))) ;)) (if_statement "if (iVar12 == 0 && param_1[3] == 0) {\n      local_50 = 1;\n      goto LAB_00083e11;\n    }" if (parenthesized_expression "(iVar12 == 0 && param_1[3] == 0)" ( (binary_expression "iVar12 == 0 && param_1[3] == 0" (binary_expression "iVar12 == 0" identifier == number_literal) && (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) == number_literal)) )) (compound_statement "{\n      local_50 = 1;\n      goto LAB_00083e11;\n    }" { (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00083e11;" goto statement_identifier ;) })) (expression_statement "iVar4 = param_1[1];" (assignment_expression "iVar4 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar12 != 0) {\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }" { (expression_statement "piVar3 = *(int **)(iVar4 + 4);" (assignment_expression "piVar3 = *(int **)(iVar4 + 4)" identifier = (pointer_expression "*(int **)(iVar4 + 4)" * (cast_expression "(int **)(iVar4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" identifier = identifier) ;) (expression_statement "local_5c = *piVar3;" (assignment_expression "local_5c = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "piVar7 = *(int **)(param_1[6] + 4);" (assignment_expression "piVar7 = *(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) ))))) ;) (goto_statement "goto LAB_00083e6b;" goto statement_identifier ;) })) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00083e2f:\n    if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }" statement_identifier : (if_statement "if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\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      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }" { (expression_statement "iVar9 = param_1[6];" (assignment_expression "iVar9 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "piVar3 = *(int **)(iVar4 + 4);" (assignment_expression "piVar3 = *(int **)(iVar4 + 4)" identifier = (pointer_expression "*(int **)(iVar4 + 4)" * (cast_expression "(int **)(iVar4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "piVar7 = *(int **)(iVar9 + 4);" (assignment_expression "piVar7 = *(int **)(iVar9 + 4)" identifier = (pointer_expression "*(int **)(iVar9 + 4)" * (cast_expression "(int **)(iVar9 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *piVar3;" (assignment_expression "uVar10 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (labeled_statement "LAB_00083cb8:\n      local_4c = piVar3[9];" statement_identifier : (expression_statement "local_4c = piVar3[9];" (assignment_expression "local_4c = piVar3[9]" identifier = (subscript_expression "piVar3[9]" identifier [ number_literal ])) ;)) (expression_statement "local_58 = piVar7[9];" (assignment_expression "local_58 = piVar7[9]" identifier = (subscript_expression "piVar7[9]" identifier [ number_literal ])) ;) (expression_statement "local_64 = piVar7[0xc];" (assignment_expression "local_64 = piVar7[0xc]" identifier = (subscript_expression "piVar7[0xc]" identifier [ number_literal ])) ;) (expression_statement "bVar14 = *(char *)(uVar10 + 5) == '\x05';" (assignment_expression "bVar14 = *(char *)(uVar10 + 5) == '\x05'" identifier = (binary_expression "*(char *)(uVar10 + 5) == '\x05'" (pointer_expression "*(char *)(uVar10 + 5)" * (cast_expression "(char *)(uVar10 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar10 + 5)" ( (binary_expression "uVar10 + 5" identifier + number_literal) )))) == (char_literal "'\x05'" ' escape_sequence '))) ;) (if_statement "if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }" if (parenthesized_expression "(!bVar14)" ( (unary_expression "!bVar14" ! identifier) )) (compound_statement "{\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }" { (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" identifier = identifier) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00083e8d;" goto statement_identifier ;) })) (if_statement "if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }" if (parenthesized_expression "(local_4c == local_58)" ( (binary_expression "local_4c == local_58" identifier == identifier) )) (compound_statement "{\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }" { (expression_statement "uVar10 = param_1[4];" (assignment_expression "uVar10 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (if_statement "if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }" if (parenthesized_expression "((param_2 != 0) && (uVar10 <= local_64))" ( (binary_expression "(param_2 != 0) && (uVar10 <= local_64)" (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar10 <= local_64)" ( (binary_expression "uVar10 <= local_64" identifier <= identifier) ))) )) (compound_statement "{\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }" { (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" identifier = identifier) ;) (expression_statement "bVar14 = true;" (assignment_expression "bVar14 = true" identifier = true) ;) (goto_statement "goto LAB_00083eae;" goto statement_identifier ;) })) (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" identifier = identifier) ;) (expression_statement "bVar14 = true;" (assignment_expression "bVar14 = true" identifier = true) ;) (goto_statement "goto LAB_00083f79;" goto statement_identifier ;) })) (expression_statement "iVar12 = 8;" (assignment_expression "iVar12 = 8" identifier = number_literal) ;) (if_statement "if (local_50 == 0) goto LAB_00083d18;" if (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00083d18;" goto statement_identifier ;)) (goto_statement "goto LAB_00083cf5;" goto statement_identifier ;) }))) (expression_statement "iVar12 = FUN_00080d90();" (assignment_expression "iVar12 = FUN_00080d90()" identifier = (call_expression "FUN_00080d90()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar12 == 0) {\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }" { (expression_statement "iVar9 = param_1[6];" (assignment_expression "iVar9 = 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 "piVar3 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar3 = *(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 "piVar7 = *(int **)(iVar9 + 4);" (assignment_expression "piVar7 = *(int **)(iVar9 + 4)" identifier = (pointer_expression "*(int **)(iVar9 + 4)" * (cast_expression "(int **)(iVar9 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *piVar3;" (assignment_expression "uVar10 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (goto_statement "goto LAB_00083cb8;" goto statement_identifier ;) })) (labeled_statement "LAB_00083e51:\n    piVar3 = *(int **)(param_1[1] + 4);" statement_identifier : (expression_statement "piVar3 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar3 = *(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 "piVar7 = *(int **)(param_1[6] + 4);" (assignment_expression "piVar7 = *(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 "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" identifier = identifier) ;) (expression_statement "local_5c = *piVar3;" (assignment_expression "local_5c = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (labeled_statement "LAB_00083e6b:\n    local_4c = piVar3[9];" statement_identifier : (expression_statement "local_4c = piVar3[9];" (assignment_expression "local_4c = piVar3[9]" identifier = (subscript_expression "piVar3[9]" identifier [ number_literal ])) ;)) (expression_statement "local_58 = piVar7[9];" (assignment_expression "local_58 = piVar7[9]" identifier = (subscript_expression "piVar7[9]" identifier [ number_literal ])) ;) (expression_statement "bVar14 = *(char *)(local_5c + 5) == '\x05';" (assignment_expression "bVar14 = *(char *)(local_5c + 5) == '\x05'" identifier = (binary_expression "*(char *)(local_5c + 5) == '\x05'" (pointer_expression "*(char *)(local_5c + 5)" * (cast_expression "(char *)(local_5c + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_5c + 5)" ( (binary_expression "local_5c + 5" identifier + number_literal) )))) == (char_literal "'\x05'" ' escape_sequence '))) ;) (expression_statement "local_64 = piVar7[0xc];" (assignment_expression "local_64 = piVar7[0xc]" identifier = (subscript_expression "piVar7[0xc]" identifier [ number_literal ])) ;) (labeled_statement "LAB_00083e8d:\n    if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }" statement_identifier : (if_statement "if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }" if (parenthesized_expression "((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64))" ( (binary_expression "(param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)" (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar10 = param_1[4], uVar10 <= local_64)" ( (comma_expression "uVar10 = param_1[4], uVar10 <= local_64" (assignment_expression "uVar10 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) , (binary_expression "uVar10 <= local_64" identifier <= identifier)) ))) )) (compound_statement "{\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }" { (if_statement "if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }" { (labeled_statement "LAB_00083eae:\n        uVar13 = 0;" statement_identifier : (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;)) (expression_statement "uVar5 = local_58;" (assignment_expression "uVar5 = local_58" identifier = identifier) ;) (while_statement "while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }" { (if_statement "if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }" if (parenthesized_expression "(DAT_00106358 / uVar5 + 1 == uVar10)" ( (binary_expression "DAT_00106358 / uVar5 + 1 == uVar10" (binary_expression "DAT_00106358 / uVar5 + 1" (binary_expression "DAT_00106358 / uVar5" identifier / identifier) + number_literal) == identifier) )) (compound_statement "{\n            iVar12 = 0;\n          }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }" else (compound_statement "{\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }" { (expression_statement "iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);" (assignment_expression "iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2)" identifier = (call_expression "(**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2)" (parenthesized_expression "(**(code **)(iVar11 + 200))" ( (pointer_expression "**(code **)(iVar11 + 200)" * (pointer_expression "*(code **)(iVar11 + 200)" * (cast_expression "(code **)(iVar11 + 200)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 200)" ( (binary_expression "iVar11 + 200" identifier + number_literal) ))))) )) (argument_list "(iVar11,uVar10,&local_2c,2)" ( identifier , identifier , (pointer_expression "&local_2c" & identifier) , number_literal )))) ;) (if_statement "if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }" if (parenthesized_expression "((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0))" ( (binary_expression "(iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)" (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)" ( (comma_expression "iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0" (assignment_expression "iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0)" identifier = (call_expression "FUN_0007c390(*(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_0001f280();\n            }" { (expression_statement "FUN_0001f280();" (call_expression "FUN_0001f280()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar10 = param_1[4];" (assignment_expression "uVar10 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "uVar13 = uVar13 + 1;" (assignment_expression "uVar13 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) (expression_statement "param_1[4] = uVar10;" (assignment_expression "param_1[4] = uVar10" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;" if (parenthesized_expression "((param_2 <= uVar13) || (local_64 < uVar10))" ( (binary_expression "(param_2 <= uVar13) || (local_64 < uVar10)" (parenthesized_expression "(param_2 <= uVar13)" ( (binary_expression "param_2 <= uVar13" identifier <= identifier) )) || (parenthesized_expression "(local_64 < uVar10)" ( (binary_expression "local_64 < uVar10" identifier < identifier) ))) )) (goto_statement "goto LAB_00083f72;" goto statement_identifier ;)) (if_statement "if (iVar12 != 0) break;" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);" (assignment_expression "uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24)" identifier = (pointer_expression "*(uint *)(*(int *)(param_1[6] + 4) + 0x24)" * (cast_expression "(uint *)(*(int *)(param_1[6] + 4) + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1[6] + 4) + 0x24)" ( (binary_expression "*(int *)(param_1[6] + 4) + 0x24" (pointer_expression "*(int *)(param_1[6] + 4)" * (cast_expression "(int *)(param_1[6] + 4)" ( (type_descriptor "int *" primitive_type (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) )))) + number_literal) ))))) ;) })) })) (labeled_statement "LAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;" statement_identifier : (if_statement "if (iVar12 != 0x65) goto LAB_000840d9;" if (parenthesized_expression "(iVar12 != 0x65)" ( (binary_expression "iVar12 != 0x65" identifier != number_literal) )) (goto_statement "goto LAB_000840d9;" goto statement_identifier ;))) (labeled_statement "LAB_00083fd3:\n      iVar9 = param_1[1];" statement_identifier : (expression_statement "iVar9 = param_1[1];" (assignment_expression "iVar9 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;)) (expression_statement "local_5c = local_64;" (assignment_expression "local_5c = local_64" identifier = identifier) ;) (if_statement "if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }" if (parenthesized_expression "(local_64 == 0)" ( (binary_expression "local_64 == 0" identifier == number_literal) )) (compound_statement "{\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }" { (if_statement "if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }" if (parenthesized_expression "(*(char *)(iVar9 + 9) != '\0')" ( (binary_expression "*(char *)(iVar9 + 9) != '\0'" (pointer_expression "*(char *)(iVar9 + 9)" * (cast_expression "(char *)(iVar9 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 9)" ( (binary_expression "iVar9 + 9" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          FUN_00024b20();\n        }" { (expression_statement "FUN_00024b20();" (call_expression "FUN_00024b20()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;" (assignment_expression "*(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0" (pointer_expression "*(undefined4 *)(*(int *)(iVar9 + 4) + 0x30)" * (cast_expression "(undefined4 *)(*(int *)(iVar9 + 4) + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar9 + 4) + 0x30)" ( (binary_expression "*(int *)(iVar9 + 4) + 0x30" (pointer_expression "*(int *)(iVar9 + 4)" * (cast_expression "(int *)(iVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) (expression_statement "iVar12 = FUN_000761e0();" (assignment_expression "iVar12 = FUN_000761e0()" identifier = (call_expression "FUN_000761e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }" if (parenthesized_expression "(*(char *)(iVar9 + 9) != '\0')" ( (binary_expression "*(char *)(iVar9 + 9) != '\0'" (pointer_expression "*(char *)(iVar9 + 9)" * (cast_expression "(char *)(iVar9 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 9)" ( (binary_expression "iVar9 + 9" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }" { (expression_statement "piVar3 = (int *)(iVar9 + 0xc);" (assignment_expression "piVar3 = (int *)(iVar9 + 0xc)" identifier = (cast_expression "(int *)(iVar9 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) )))) ;) (expression_statement "*piVar3 = *piVar3 + -1;" (assignment_expression "*piVar3 = *piVar3 + -1" (pointer_expression "*piVar3" * identifier) = (binary_expression "*piVar3 + -1" (pointer_expression "*piVar3" * identifier) + number_literal)) ;) (if_statement "if (*piVar3 == 0) {\n            FUN_00024b40();\n          }" if (parenthesized_expression "(*piVar3 == 0)" ( (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" * identifier) == number_literal) )) (compound_statement "{\n            FUN_00024b40();\n          }" { (expression_statement "FUN_00024b40();" (call_expression "FUN_00024b40()" identifier (argument_list "()" ( ))) ;) })) })) (if_statement "if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;" if (parenthesized_expression "((iVar12 != 0) && (iVar12 != 0x65))" ( (binary_expression "(iVar12 != 0) && (iVar12 != 0x65)" (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar12 != 0x65)" ( (binary_expression "iVar12 != 0x65" identifier != number_literal) ))) )) (goto_statement "goto LAB_000840d9;" goto statement_identifier ;)) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" identifier = number_literal) ;) })) (expression_statement "iVar12 = FUN_0007bde0();" (assignment_expression "iVar12 = FUN_0007bde0()" identifier = (call_expression "FUN_0007bde0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }" { (if_statement "if (*param_1 != 0) {\n          FUN_00057e80();\n        }" if (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n          FUN_00057e80();\n        }" { (expression_statement "FUN_00057e80();" (call_expression "FUN_00057e80()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }" if (parenthesized_expression "((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0))" ( (binary_expression "(!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)" (parenthesized_expression "(!bVar14)" ( (unary_expression "!bVar14" ! identifier) )) || (parenthesized_expression "(iVar12 = FUN_00081680(), iVar12 == 0)" ( (comma_expression "iVar12 = FUN_00081680(), iVar12 == 0" (assignment_expression "iVar12 = FUN_00081680()" identifier = (call_expression "FUN_00081680()" identifier (argument_list "()" ( )))) , (binary_expression "iVar12 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }" { (if_statement "if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }" if (parenthesized_expression "((int)local_58 < (int)local_4c)" ( (binary_expression "(int)local_58 < (int)local_4c" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }" { (expression_statement "uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);" (assignment_expression "uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58)" identifier = (binary_expression "(int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58)" (cast_expression "(int)((local_5c - 1) + (int)local_4c / (int)local_58)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((local_5c - 1) + (int)local_4c / (int)local_58)" ( (binary_expression "(local_5c - 1) + (int)local_4c / (int)local_58" (parenthesized_expression "(local_5c - 1)" ( (binary_expression "local_5c - 1" identifier - number_literal) )) + (binary_expression "(int)local_4c / (int)local_58" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) / (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier))) ))) / (parenthesized_expression "((int)local_4c / (int)local_58)" ( (binary_expression "(int)local_4c / (int)local_58" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) / (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);" (assignment_expression "uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24)" identifier = (binary_expression "DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24)" identifier / (pointer_expression "*(uint *)(*(int *)(param_1[1] + 4) + 0x24)" * (cast_expression "(uint *)(*(int *)(param_1[1] + 4) + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1[1] + 4) + 0x24)" ( (binary_expression "*(int *)(param_1[1] + 4) + 0x24" (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 == uVar10) {\n              uVar10 = uVar5;\n            }" if (parenthesized_expression "(uVar5 + 1 == uVar10)" ( (binary_expression "uVar5 + 1 == uVar10" (binary_expression "uVar5 + 1" identifier + number_literal) == identifier) )) (compound_statement "{\n              uVar10 = uVar5;\n            }" { (expression_statement "uVar10 = uVar5;" (assignment_expression "uVar10 = uVar5" identifier = identifier) ;) })) (expression_statement "lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;" (assignment_expression "lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58" identifier = (binary_expression "(longlong)(int)local_5c * (longlong)(int)local_58" (cast_expression "(longlong)(int)local_5c" ( (type_descriptor "longlong" type_identifier) ) (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier)) * (cast_expression "(longlong)(int)local_58" ( (type_descriptor "longlong" type_identifier) ) (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "piVar3 = *(int **)(local_40 + 0x3c);" (assignment_expression "piVar3 = *(int **)(local_40 + 0x3c)" identifier = (pointer_expression "*(int **)(local_40 + 0x3c)" * (cast_expression "(int **)(local_40 + 0x3c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_40 + 0x3c)" ( (binary_expression "local_40 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(uint *)(local_40 + 0x18);" (assignment_expression "uVar5 = *(uint *)(local_40 + 0x18)" identifier = (pointer_expression "*(uint *)(local_40 + 0x18)" * (cast_expression "(uint *)(local_40 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x18)" ( (binary_expression "local_40 + 0x18" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);" statement_identifier : (do_statement "do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);" do (compound_statement "{\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            }" { (if_statement "if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }" if (parenthesized_expression "(uVar5 < uVar10)" ( (binary_expression "uVar5 < uVar10" identifier < identifier) )) (compound_statement "{\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }" { (labeled_statement "LAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);" statement_identifier : (expression_statement "iVar12 = *(int *)(local_40 + 0x28);" (assignment_expression "iVar12 = *(int *)(local_40 + 0x28)" identifier = (pointer_expression "*(int *)(local_40 + 0x28)" * (cast_expression "(int *)(local_40 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x28)" ( (binary_expression "local_40 + 0x28" identifier + number_literal) ))))) ;)) (if_statement "if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }" { (if_statement "if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;" if (parenthesized_expression "((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))" ( (binary_expression "(DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0)" (parenthesized_expression "(DAT_00106454 != (code *)0x0)" ( (binary_expression "DAT_00106454 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar12 = (*DAT_00106454)(400), iVar12 != 0)" ( (comma_expression "iVar12 = (*DAT_00106454)(400), iVar12 != 0" (assignment_expression "iVar12 = (*DAT_00106454)(400)" identifier = (call_expression "(*DAT_00106454)(400)" (parenthesized_expression "(*DAT_00106454)" ( (pointer_expression "*DAT_00106454" * identifier) )) (argument_list "(400)" ( number_literal )))) , (binary_expression "iVar12 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_00084446;" goto statement_identifier ;)) (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) )))) ;) (if_statement "if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }" if (parenthesized_expression "(*(byte *)(local_40 + 0x10) < 3)" ( (binary_expression "*(byte *)(local_40 + 0x10) < 3" (pointer_expression "*(byte *)(local_40 + 0x10)" * (cast_expression "(byte *)(local_40 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x10)" ( (binary_expression "local_40 + 0x10" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }" { (expression_statement "local_4c = local_4c + DAT_00106358;" (assignment_expression "local_4c = local_4c + DAT_00106358" identifier = (binary_expression "local_4c + DAT_00106358" identifier + identifier)) ;) (expression_statement "local_54 = (int)local_4c >> 0x1f;" (assignment_expression "local_54 = (int)local_4c >> 0x1f" identifier = (binary_expression "(int)local_4c >> 0x1f" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }" if (parenthesized_expression "(lVar1 < (int)local_4c)" ( (binary_expression "lVar1 < (int)local_4c" identifier < (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }" { (expression_statement "local_4c = local_3c;" (assignment_expression "local_4c = local_3c" identifier = identifier) ;) (expression_statement "local_54 = local_38;" (assignment_expression "local_54 = local_38" identifier = identifier) ;) })) (expression_statement "local_34 = DAT_00106358 + local_58;" (assignment_expression "local_34 = DAT_00106358 + local_58" identifier = (binary_expression "DAT_00106358 + local_58" identifier + identifier)) ;) (expression_statement "local_30 = (int)local_34 >> 0x1f;" (assignment_expression "local_30 = (int)local_34 >> 0x1f" identifier = (binary_expression "(int)local_34 >> 0x1f" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;" if (parenthesized_expression "((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))" ( (binary_expression "(local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))" (parenthesized_expression "(local_54 <= local_30)" ( (binary_expression "local_54 <= local_30" identifier <= identifier) )) && (parenthesized_expression "((local_54 < local_30 || (local_4c <= local_34)))" ( (parenthesized_expression "(local_54 < local_30 || (local_4c <= local_34))" ( (binary_expression "local_54 < local_30 || (local_4c <= local_34)" (binary_expression "local_54 < local_30" identifier < identifier) || (parenthesized_expression "(local_4c <= local_34)" ( (binary_expression "local_4c <= local_34" identifier <= identifier) ))) )) ))) )) (goto_statement "goto LAB_0008434c;" goto statement_identifier ;)) }) (else_clause "else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }" else (compound_statement "{\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }" { (expression_statement "iVar12 = FUN_00082f70();" (assignment_expression "iVar12 = FUN_00082f70()" identifier = (call_expression "FUN_00082f70()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_4c = local_4c + DAT_00106358;" (assignment_expression "local_4c = local_4c + DAT_00106358" identifier = (binary_expression "local_4c + DAT_00106358" identifier + identifier)) ;) (expression_statement "local_54 = (int)local_4c >> 0x1f;" (assignment_expression "local_54 = (int)local_4c >> 0x1f" identifier = (binary_expression "(int)local_4c >> 0x1f" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }" if (parenthesized_expression "(lVar1 < (int)local_4c)" ( (binary_expression "lVar1 < (int)local_4c" identifier < (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }" { (expression_statement "local_4c = local_3c;" (assignment_expression "local_4c = local_3c" identifier = identifier) ;) (expression_statement "local_54 = local_38;" (assignment_expression "local_54 = local_38" identifier = identifier) ;) })) (expression_statement "local_34 = DAT_00106358 + local_58;" (assignment_expression "local_34 = DAT_00106358 + local_58" identifier = (binary_expression "DAT_00106358 + local_58" identifier + identifier)) ;) (expression_statement "local_30 = (int)local_34 >> 0x1f;" (assignment_expression "local_30 = (int)local_34 >> 0x1f" identifier = (binary_expression "(int)local_34 >> 0x1f" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;" if (parenthesized_expression "(((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0))" ( (binary_expression "((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)" (parenthesized_expression "((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        )" ( (binary_expression "(local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))" (parenthesized_expression "(local_54 <= local_30)" ( (binary_expression "local_54 <= local_30" identifier <= identifier) )) && (parenthesized_expression "((local_54 < local_30 || (local_4c <= local_34)))" ( (parenthesized_expression "(local_54 < local_30 || (local_4c <= local_34))" ( (binary_expression "local_54 < local_30 || (local_4c <= local_34)" (binary_expression "local_54 < local_30" identifier < identifier) || (parenthesized_expression "(local_4c <= local_34)" ( (binary_expression "local_4c <= local_34" identifier <= identifier) ))) )) ))) )) || (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) ))) )) (goto_statement "goto LAB_00084344;" goto statement_identifier ;)) }))) (goto_statement "goto LAB_00084480;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) (expression_statement "uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);" (assignment_expression "uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24)" identifier = (binary_expression "DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24)" identifier / (pointer_expression "*(uint *)(*(int *)(param_1[1] + 4) + 0x24)" * (cast_expression "(uint *)(*(int *)(param_1[1] + 4) + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1[1] + 4) + 0x24)" ( (binary_expression "*(int *)(param_1[1] + 4) + 0x24" (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) )))))) ;) (expression_statement "uVar13 = uVar10;" (assignment_expression "uVar13 = uVar10" identifier = identifier) ;) (if_statement "if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }" if (parenthesized_expression "(uVar6 + 1 == uVar10)" ( (binary_expression "uVar6 + 1 == uVar10" (binary_expression "uVar6 + 1" identifier + number_literal) == identifier) )) (compound_statement "{\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }" { (expression_statement "uVar13 = uVar6 + 2;" (assignment_expression "uVar13 = uVar6 + 2" identifier = (binary_expression "uVar6 + 2" identifier + number_literal)) ;) (if_statement "if (uVar5 < uVar13) goto LAB_00084288;" if (parenthesized_expression "(uVar5 < uVar13)" ( (binary_expression "uVar5 < uVar13" identifier < identifier) )) (goto_statement "goto LAB_00084288;" goto statement_identifier ;)) (if_statement "if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }" if (parenthesized_expression "(uVar13 == uVar10)" ( (binary_expression "uVar13 == uVar10" identifier == identifier) )) (compound_statement "{\n                  do {\n                    \n                  } while( true );\n                }" { (do_statement "do {\n                    \n                  } while( true );" do (compound_statement "{\n                    \n                  }" { }) while (parenthesized_expression "( true )" ( true )) ;) })) })) (expression_statement "iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);" (assignment_expression "iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0)" identifier = (call_expression "(**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0)" (parenthesized_expression "(**(code **)(local_40 + 200))" ( (pointer_expression "**(code **)(local_40 + 200)" * (pointer_expression "*(code **)(local_40 + 200)" * (cast_expression "(code **)(local_40 + 200)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_40 + 200)" ( (binary_expression "local_40 + 200" identifier + number_literal) ))))) )) (argument_list "(local_40,uVar13,&local_2c,0)" ( identifier , identifier , (pointer_expression "&local_2c" & identifier) , number_literal )))) ;) (if_statement "if (iVar12 != 0) break;" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar12 = FUN_00076180();" (assignment_expression "iVar12 = FUN_00076180()" identifier = (call_expression "FUN_00076180()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }" if (parenthesized_expression "(local_2c == 0)" ( (binary_expression "local_2c == 0" identifier == number_literal) )) (compound_statement "{\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }" { (expression_statement "uVar10 = uVar13 + 1;" (assignment_expression "uVar10 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) (if_statement "if (iVar12 != 0) break;" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_00084096;" goto statement_identifier ;) })) (expression_statement "uVar10 = uVar13 + 1;" (assignment_expression "uVar10 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0001f280();" (call_expression "FUN_0001f280()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) ;)) }) (else_clause "else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }" else (compound_statement "{\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }" { (expression_statement "*(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;" (assignment_expression "*(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c" (pointer_expression "*(uint *)(local_40 + 0x18)" * (cast_expression "(uint *)(local_40 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x18)" ( (binary_expression "local_40 + 0x18" identifier + number_literal) )))) = (binary_expression "((int)local_58 / (int)local_4c) * local_5c" (parenthesized_expression "((int)local_58 / (int)local_4c)" ( (binary_expression "(int)local_58 / (int)local_4c" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) / (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier)) )) * identifier)) ;) (expression_statement "iVar12 = *(int *)(local_40 + 0x28);" (assignment_expression "iVar12 = *(int *)(local_40 + 0x28)" identifier = (pointer_expression "*(int *)(local_40 + 0x28)" * (cast_expression "(int *)(local_40 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x28)" ( (binary_expression "local_40 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }" { (if_statement "if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }" if (parenthesized_expression "((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0))" ( (binary_expression "(DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)" (parenthesized_expression "(DAT_00106454 == (code *)0x0)" ( (binary_expression "DAT_00106454 == (code *)0x0" identifier == (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(iVar12 = (*DAT_00106454)(400), iVar12 == 0)" ( (comma_expression "iVar12 = (*DAT_00106454)(400), iVar12 == 0" (assignment_expression "iVar12 = (*DAT_00106454)(400)" identifier = (call_expression "(*DAT_00106454)(400)" (parenthesized_expression "(*DAT_00106454)" ( (pointer_expression "*DAT_00106454" * identifier) )) (argument_list "(400)" ( number_literal )))) , (binary_expression "iVar12 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }" { (if_statement "if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }" if (parenthesized_expression "(2 < *(byte *)(local_40 + 0x10))" ( (binary_expression "2 < *(byte *)(local_40 + 0x10)" number_literal < (pointer_expression "*(byte *)(local_40 + 0x10)" * (cast_expression "(byte *)(local_40 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x10)" ( (binary_expression "local_40 + 0x10" identifier + number_literal) ))))) )) (compound_statement "{\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }" { (expression_statement "iVar12 = FUN_00082f70();" (assignment_expression "iVar12 = FUN_00082f70()" identifier = (call_expression "FUN_00082f70()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_00084248;" goto statement_identifier ;) })) (goto_statement "goto LAB_00084250;" goto statement_identifier ;) })) (labeled_statement "LAB_00084446:\n              iVar12 = 10;" statement_identifier : (expression_statement "iVar12 = 10;" (assignment_expression "iVar12 = 10" identifier = number_literal) ;)) (goto_statement "goto LAB_00083fad;" goto statement_identifier ;) })) }))) })) })) (goto_statement "goto LAB_000840d9;" goto statement_identifier ;) }))) (labeled_statement "LAB_00083f72:\n    if (iVar12 != 0) goto LAB_00083fca;" statement_identifier : (if_statement "if (iVar12 != 0) goto LAB_00083fca;" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00083fca;" goto statement_identifier ;))) (expression_statement "uVar10 = param_1[4];" (assignment_expression "uVar10 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (labeled_statement "LAB_00083f79:\n    param_1[9] = local_64;" statement_identifier : (expression_statement "param_1[9] = local_64;" (assignment_expression "param_1[9] = local_64" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_1[8] = (local_64 + 1) - uVar10;" (assignment_expression "param_1[8] = (local_64 + 1) - uVar10" (subscript_expression "param_1[8]" identifier [ number_literal ]) = (binary_expression "(local_64 + 1) - uVar10" (parenthesized_expression "(local_64 + 1)" ( (binary_expression "local_64 + 1" identifier + number_literal) )) - identifier)) ;) (if_statement "if (local_64 < uVar10) goto LAB_00083fd3;" if (parenthesized_expression "(local_64 < uVar10)" ( (binary_expression "local_64 < uVar10" identifier < identifier) )) (goto_statement "goto LAB_00083fd3;" goto statement_identifier ;)) (if_statement "if (param_1[10] == 0) {\n      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 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      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 0x58) = param_1;\n      param_1[10] = 1;\n    }" { (expression_statement "iVar12 = **(int **)(param_1[6] + 4);" (assignment_expression "iVar12 = **(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 *)(iVar12 + 0x58);" (assignment_expression "param_1[0xb] = *(int *)(iVar12 + 0x58)" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (pointer_expression "*(int *)(iVar12 + 0x58)" * (cast_expression "(int *)(iVar12 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x58)" ( (binary_expression "iVar12 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(iVar12 + 0x58) = param_1;" (assignment_expression "*(int **)(iVar12 + 0x58) = param_1" (pointer_expression "*(int **)(iVar12 + 0x58)" * (cast_expression "(int **)(iVar12 + 0x58)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0x58)" ( (binary_expression "iVar12 + 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 "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;" statement_identifier : (if_statement "if (local_50 != 0) goto LAB_00083fb9;" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00083fb9;" goto statement_identifier ;))) (goto_statement "goto LAB_00083d18;" goto statement_identifier ;) })) (expression_statement "sqlite3_mutex_enter(*(undefined4 *)(*param_1 + 0xc));" (call_expression "sqlite3_mutex_enter(*(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 "iVar12 = param_1[7];" (assignment_expression "iVar12 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (if_statement "if ((iVar12 - 5U < 2) || (iVar12 == 0)) {\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if ((*param_1 != 0) && ((char)piVar7[5] == '\x02')) {\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }\n    if (*(char *)(iVar9 + 8) == '\0') goto LAB_00083dad;\nLAB_00083c9d:\n    local_50 = param_1[3];\n    if (local_50 == 0) {\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }\n    local_50 = 0;\n    uVar10 = local_5c;\n    goto LAB_00083cb8;\n  }" if (parenthesized_expression "((iVar12 - 5U < 2) || (iVar12 == 0))" ( (binary_expression "(iVar12 - 5U < 2) || (iVar12 == 0)" (parenthesized_expression "(iVar12 - 5U < 2)" ( (binary_expression "iVar12 - 5U < 2" (binary_expression "iVar12 - 5U" identifier - number_literal) < number_literal) )) || (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if ((*param_1 != 0) && ((char)piVar7[5] == '\x02')) {\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }\n    if (*(char *)(iVar9 + 8) == '\0') goto LAB_00083dad;\nLAB_00083c9d:\n    local_50 = param_1[3];\n    if (local_50 == 0) {\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }\n    local_50 = 0;\n    uVar10 = local_5c;\n    goto LAB_00083cb8;\n  }" { (expression_statement "iVar9 = param_1[6];" (assignment_expression "iVar9 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "piVar3 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar3 = *(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 "piVar7 = *(int **)(iVar9 + 4);" (assignment_expression "piVar7 = *(int **)(iVar9 + 4)" identifier = (pointer_expression "*(int **)(iVar9 + 4)" * (cast_expression "(int **)(iVar9 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_5c = *piVar3;" (assignment_expression "local_5c = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "iVar11 = *piVar7;" (assignment_expression "iVar11 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (if_statement "if ((*param_1 != 0) && ((char)piVar7[5] == '\x02')) {\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }" if (parenthesized_expression "((*param_1 != 0) && ((char)piVar7[5] == '\x02'))" ( (binary_expression "(*param_1 != 0) && ((char)piVar7[5] == '\x02')" (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) && (parenthesized_expression "((char)piVar7[5] == '\x02')" ( (binary_expression "(char)piVar7[5] == '\x02'" (cast_expression "(char)piVar7[5]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar7[5]" identifier [ number_literal ])) == (char_literal "'\x02'" ' escape_sequence ')) ))) )) (compound_statement "{\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }" { (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "iVar12 = 5;" (assignment_expression "iVar12 = 5" identifier = number_literal) ;) (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" identifier = identifier) ;) (goto_statement "goto LAB_00083e6b;" goto statement_identifier ;) })) (if_statement "if (*(char *)(iVar9 + 8) == '\0') goto LAB_00083dad;" if (parenthesized_expression "(*(char *)(iVar9 + 8) == '\0')" ( (binary_expression "*(char *)(iVar9 + 8) == '\0'" (pointer_expression "*(char *)(iVar9 + 8)" * (cast_expression "(char *)(iVar9 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 8)" ( (binary_expression "iVar9 + 8" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00083dad;" goto statement_identifier ;)) (labeled_statement "LAB_00083c9d:\n    local_50 = param_1[3];" statement_identifier : (expression_statement "local_50 = param_1[3];" (assignment_expression "local_50 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;)) (if_statement "if (local_50 == 0) {\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }" if (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }" { (labeled_statement "LAB_00083e11:\n      iVar12 = FUN_0004ad20(0);" statement_identifier : (expression_statement "iVar12 = FUN_0004ad20(0);" (assignment_expression "iVar12 = FUN_0004ad20(0)" identifier = (call_expression "FUN_0004ad20(0)" identifier (argument_list "(0)" ( number_literal )))) ;)) (if_statement "if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }" if (parenthesized_expression "(iVar12 != 7)" ( (binary_expression "iVar12 != 7" identifier != number_literal) )) (compound_statement "{\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }" { (expression_statement "iVar4 = param_1[1];" (assignment_expression "iVar4 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00083e2f;" goto statement_identifier ;) })) (goto_statement "goto LAB_00083e51;" goto statement_identifier ;) })) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = local_5c;" (assignment_expression "uVar10 = local_5c" identifier = identifier) ;) (goto_statement "goto LAB_00083cb8;" goto statement_identifier ;) })) (goto_statement "goto LAB_00083d1b;" goto statement_identifier ;) (while_statement "while( true ) {\n    bVar14 = CARRY4(local_34,local_58);\n    local_34 = local_34 + local_58;\n    bVar2 = 1;\n    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14;\n    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar2 = 0;\n    }\n    if (!(bool)(iVar12 == 0 & bVar2)) break;\nLAB_00084480:\n    local_2c = 0;\n    uVar15 = 0;\n    piVar7 = &local_2c;\n    iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f);\n    iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15);\n    if (iVar12 == 0) {\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    bVar14 = CARRY4(local_34,local_58);\n    local_34 = local_34 + local_58;\n    bVar2 = 1;\n    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14;\n    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar2 = 0;\n    }\n    if (!(bool)(iVar12 == 0 & bVar2)) break;\nLAB_00084480:\n    local_2c = 0;\n    uVar15 = 0;\n    piVar7 = &local_2c;\n    iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f);\n    iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15);\n    if (iVar12 == 0) {\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }\n  }" { (expression_statement "bVar14 = CARRY4(local_34,local_58);" (assignment_expression "bVar14 = CARRY4(local_34,local_58)" identifier = (call_expression "CARRY4(local_34,local_58)" identifier (argument_list "(local_34,local_58)" ( identifier , identifier )))) ;) (expression_statement "local_34 = local_34 + local_58;" (assignment_expression "local_34 = local_34 + local_58" identifier = (binary_expression "local_34 + local_58" identifier + identifier)) ;) (expression_statement "bVar2 = 1;" (assignment_expression "bVar2 = 1" identifier = number_literal) ;) (expression_statement "local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14;" (assignment_expression "local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14" identifier = (binary_expression "local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14" (binary_expression "local_30 + ((int)local_58 >> 0x1f)" identifier + (parenthesized_expression "((int)local_58 >> 0x1f)" ( (binary_expression "(int)local_58 >> 0x1f" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar2 = 0;\n    }" if (parenthesized_expression "((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))" ( (binary_expression "(local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))" (parenthesized_expression "(local_54 <= local_30)" ( (binary_expression "local_54 <= local_30" identifier <= identifier) )) && (parenthesized_expression "((local_54 < local_30 || (local_4c <= local_34)))" ( (parenthesized_expression "(local_54 < local_30 || (local_4c <= local_34))" ( (binary_expression "local_54 < local_30 || (local_4c <= local_34)" (binary_expression "local_54 < local_30" identifier < identifier) || (parenthesized_expression "(local_4c <= local_34)" ( (binary_expression "local_4c <= local_34" identifier <= identifier) ))) )) ))) )) (compound_statement "{\n      bVar2 = 0;\n    }" { (expression_statement "bVar2 = 0;" (assignment_expression "bVar2 = 0" identifier = number_literal) ;) })) (if_statement "if (!(bool)(iVar12 == 0 & bVar2)) break;" if (parenthesized_expression "(!(bool)(iVar12 == 0 & bVar2))" ( (unary_expression "!(bool)(iVar12 == 0 & bVar2)" ! (cast_expression "(bool)(iVar12 == 0 & bVar2)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(iVar12 == 0 & bVar2)" ( (binary_expression "iVar12 == 0 & bVar2" (binary_expression "iVar12 == 0" identifier == number_literal) & identifier) )))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00084480:\n    local_2c = 0;" statement_identifier : (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;)) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "piVar7 = &local_2c;" (assignment_expression "piVar7 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) (expression_statement "iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f);" (assignment_expression "iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f)" identifier = (call_expression "FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f)" identifier (argument_list "(local_34,local_30,local_58,(int)local_58 >> 0x1f)" ( identifier , identifier , identifier , (binary_expression "(int)local_58 >> 0x1f" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15);" (assignment_expression "iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15)" identifier = (call_expression "(**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15)" (parenthesized_expression "(**(code **)(iVar11 + 200))" ( (pointer_expression "**(code **)(iVar11 + 200)" * (pointer_expression "*(code **)(iVar11 + 200)" * (cast_expression "(code **)(iVar11 + 200)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 200)" ( (binary_expression "iVar11 + 200" identifier + number_literal) ))))) )) (argument_list "(iVar11,iVar12 + 1,piVar7,uVar15)" ( identifier , (binary_expression "iVar12 + 1" identifier + number_literal) , identifier , identifier )))) ;) (if_statement "if (iVar12 == 0) {\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }" { (expression_statement "iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);" (assignment_expression "iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30)" identifier = (call_expression "(**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30)" (parenthesized_expression "(**(code **)(*piVar3 + 0xc))" ( (pointer_expression "**(code **)(*piVar3 + 0xc)" * (pointer_expression "*(code **)(*piVar3 + 0xc)" * (cast_expression "(code **)(*piVar3 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0xc)" ( (binary_expression "*piVar3 + 0xc" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) )) (argument_list "(piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30)" ( 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_000844e2;" if (parenthesized_expression "(local_2c != 0)" ( (binary_expression "local_2c != 0" identifier != number_literal) )) (goto_statement "goto LAB_000844e2;" goto statement_identifier ;)) }) (else_clause "else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }" else (compound_statement "{\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }" { (if_statement "if (local_2c == 0) goto LAB_000840d9;" if (parenthesized_expression "(local_2c == 0)" ( (binary_expression "local_2c == 0" identifier == number_literal) )) (goto_statement "goto LAB_000840d9;" goto statement_identifier ;)) (labeled_statement "LAB_000844e2:\n      FUN_0001f280();" statement_identifier : (expression_statement "FUN_0001f280();" (call_expression "FUN_0001f280()" identifier (argument_list "()" ( ))) ;)) }))) })) (labeled_statement "LAB_00084344:\n  if (iVar12 == 0) {\nLAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);\n    if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }" statement_identifier : (if_statement "if (iVar12 == 0) {\nLAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);\n    if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);\n    if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }" { (labeled_statement "LAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);" statement_identifier : (expression_statement "iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);" (assignment_expression "iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c)" identifier = (call_expression "(**(code **)(*piVar3 + 0x18))(piVar3,&local_2c)" (parenthesized_expression "(**(code **)(*piVar3 + 0x18))" ( (pointer_expression "**(code **)(*piVar3 + 0x18)" * (pointer_expression "*(code **)(*piVar3 + 0x18)" * (cast_expression "(code **)(*piVar3 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0x18)" ( (binary_expression "*piVar3 + 0x18" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) )) (argument_list "(piVar3,&local_2c)" ( identifier , (pointer_expression "&local_2c" & identifier) )))) ;)) (if_statement "if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }" if (parenthesized_expression "((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0))))" ( (binary_expression "(iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))" (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) && (parenthesized_expression "((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))" ( (parenthesized_expression "(CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0))" ( (binary_expression "CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)" (binary_expression "CONCAT44(local_28,local_2c) <= lVar1" (call_expression "CONCAT44(local_28,local_2c)" identifier (argument_list "(local_28,local_2c)" ( identifier , identifier ))) <= identifier) || (parenthesized_expression "(iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)" ( (comma_expression "iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0" (assignment_expression "iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1)" identifier = (call_expression "(**(code **)(*piVar3 + 0x10))(piVar3,lVar1)" (parenthesized_expression "(**(code **)(*piVar3 + 0x10))" ( (pointer_expression "**(code **)(*piVar3 + 0x10)" * (pointer_expression "*(code **)(*piVar3 + 0x10)" * (cast_expression "(code **)(*piVar3 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0x10)" ( (binary_expression "*piVar3 + 0x10" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) )) (argument_list "(piVar3,lVar1)" ( identifier , identifier )))) , (binary_expression "iVar12 == 0" identifier == number_literal)) ))) )) ))) )) (compound_statement "{\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }" { (expression_statement "iVar12 = FUN_000249d0();" (assignment_expression "iVar12 = FUN_000249d0()" identifier = (call_expression "FUN_000249d0()" identifier (argument_list "()" ( )))) ;) (labeled_statement "LAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }" statement_identifier : (if_statement "if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }" { (labeled_statement "LAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }" statement_identifier : (if_statement "if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }" if (parenthesized_expression "((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0))" ( (binary_expression "(*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)" (parenthesized_expression "(*(char *)(param_1[1] + 8) == '\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 "(iVar12 = FUN_00080560(), iVar12 == 0)" ( (comma_expression "iVar12 = FUN_00080560(), iVar12 == 0" (assignment_expression "iVar12 = FUN_00080560()" identifier = (call_expression "FUN_00080560()" identifier (argument_list "()" ( )))) , (binary_expression "iVar12 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }" { (expression_statement "iVar12 = 0x65;" (assignment_expression "iVar12 = 0x65" identifier = number_literal) ;) (goto_statement "goto LAB_00083fad;" goto statement_identifier ;) }))) }))) })) }))) (labeled_statement "LAB_000840d9:\n  if (local_50 != 0) {\nLAB_00083fb9:\n    iVar9 = param_1[6];\nLAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);\n    if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar8 != '\0') {\n      FUN_00080560();\n    }\n  }" statement_identifier : (if_statement "if (local_50 != 0) {\nLAB_00083fb9:\n    iVar9 = param_1[6];\nLAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);\n    if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar8 != '\0') {\n      FUN_00080560();\n    }\n  }" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00083fb9:\n    iVar9 = param_1[6];\nLAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);\n    if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar8 != '\0') {\n      FUN_00080560();\n    }\n  }" { (labeled_statement "LAB_00083fb9:\n    iVar9 = param_1[6];" statement_identifier : (expression_statement "iVar9 = param_1[6];" (assignment_expression "iVar9 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;)) (labeled_statement "LAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);" statement_identifier : (expression_statement "cVar8 = *(char *)(iVar9 + 8);" (assignment_expression "cVar8 = *(char *)(iVar9 + 8)" identifier = (pointer_expression "*(char *)(iVar9 + 8)" * (cast_expression "(char *)(iVar9 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 8)" ( (binary_expression "iVar9 + 8" identifier + number_literal) ))))) ;)) (if_statement "if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }" if (parenthesized_expression "(cVar8 == '\x02')" ( (binary_expression "cVar8 == '\x02'" identifier == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }" { (expression_statement "FUN_000835d0();" (call_expression "FUN_000835d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar8 = *(char *)(param_1[6] + 8);" (assignment_expression "cVar8 = *(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 (cVar8 != '\0') {\n      FUN_00080560();\n    }" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00080560();\n    }" { (expression_statement "FUN_00080560();" (call_expression "FUN_00080560()" identifier (argument_list "()" ( ))) ;) })) }))) (if_statement "if (iVar12 == 0xc0a) {\n    iVar12 = 7;\n  }" if (parenthesized_expression "(iVar12 == 0xc0a)" ( (binary_expression "iVar12 == 0xc0a" identifier == number_literal) )) (compound_statement "{\n    iVar12 = 7;\n  }" { (expression_statement "iVar12 = 7;" (assignment_expression "iVar12 = 7" identifier = number_literal) ;) })) (labeled_statement "LAB_00083d18:\n  param_1[7] = iVar12;" statement_identifier : (expression_statement "param_1[7] = iVar12;" (assignment_expression "param_1[7] = iVar12" (subscript_expression "param_1[7]" identifier [ number_literal ]) = identifier) ;)) (labeled_statement "LAB_00083d1b:\n  if (*param_1 != 0) {\n    sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc));\n  }" statement_identifier : (if_statement "if (*param_1 != 0) {\n    sqlite3_mutex_leave(*(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    sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc));\n  }" { (expression_statement "sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc));" (call_expression "sqlite3_mutex_leave(*(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_00083d33:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar3 = (int *)(param_1[6] + 0xc);\n    *piVar3 = *piVar3 + -1;\n    if (*piVar3 == 0) {\n      FUN_00024a20();\n    }\n  }" statement_identifier : (if_statement "if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar3 = (int *)(param_1[6] + 0xc);\n    *piVar3 = *piVar3 + -1;\n    if (*piVar3 == 0) {\n      FUN_00024a20();\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    piVar3 = (int *)(param_1[6] + 0xc);\n    *piVar3 = *piVar3 + -1;\n    if (*piVar3 == 0) {\n      FUN_00024a20();\n    }\n  }" { (expression_statement "piVar3 = (int *)(param_1[6] + 0xc);" (assignment_expression "piVar3 = (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 "*piVar3 = *piVar3 + -1;" (assignment_expression "*piVar3 = *piVar3 + -1" (pointer_expression "*piVar3" * identifier) = (binary_expression "*piVar3 + -1" (pointer_expression "*piVar3" * identifier) + number_literal)) ;) (if_statement "if (*piVar3 == 0) {\n      FUN_00024a20();\n    }" if (parenthesized_expression "(*piVar3 == 0)" ( (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" * identifier) == number_literal) )) (compound_statement "{\n      FUN_00024a20();\n    }" { (expression_statement "FUN_00024a20();" (call_expression "FUN_00024a20()" identifier (argument_list "()" ( ))) ;) })) }))) (expression_statement "sqlite3_mutex_leave(*(undefined4 *)(param_1[5] + 0xc));" (call_expression "sqlite3_mutex_leave(*(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_000d1450();\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_000d1450();\n  }" { (expression_statement "FUN_000d1450();" (call_expression "FUN_000d1450()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return iVar12;" 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (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 (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)) ;) (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 ( )))) ;)) (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 ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 = IDENT) ;) (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) ))))) ;) (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 = (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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence '))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) (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 = (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 = IDENT) ;) (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 = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (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 = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT / IDENT) + LIT) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (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 IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (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 = (subscript_expression IDENT [ LIT ])) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) || (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) + 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 ])) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (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) ;) (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 = (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 ( ))) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (goto_statement goto statement_identifier ;)) (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 ( (unary_expression ! IDENT) )) || (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 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 IDENT / (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (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) ))))) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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 == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( LIT )))) , (binary_expression IDENT != LIT)) ))) )) (goto_statement goto statement_identifier ;)) (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) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + 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 <= IDENT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT < IDENT) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) ))) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + 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 (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT < IDENT) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) ))) )) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (goto_statement goto statement_identifier ;)) }))) (goto_statement goto statement_identifier ;) })) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (do_statement do (compound_statement { }) while (parenthesized_expression ( BOOL )) ;) })) })) (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 (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( LIT )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) }))) })) })) (goto_statement goto statement_identifier ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement 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 + LIT) )) - IDENT)) ;) (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) ;) (labeled_statement 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 (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)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * 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) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 = LIT) ;) (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 <= IDENT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT < IDENT) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (unary_expression ! (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) & IDENT) )))) )) (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 IDENT == LIT) )) (compound_statement { (labeled_statement 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 (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) <= 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 (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 IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (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)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) }))) }))) })) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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 ( ))) ;) })) }))) (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 sqlite3_backup_step(int *param_1,uint param_2)\n\n{\n  longlong lVar1;\n  byte bVar2;\n  int *piVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  int *piVar7;\n  char cVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  int in_GS_OFFSET;\n  bool bVar14;\n  undefined4 uVar15;\n  uint local_64;\n  uint local_5c;\n  uint local_58;\n  int local_54;\n  int local_50;\n  uint local_4c;\n  int local_40;\n  uint local_3c;\n  int local_38;\n  uint local_34;\n  int local_30;\n  int local_2c;\n  undefined4 local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x83c09;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  sqlite3_mutex_enter(*(undefined4 *)(param_1[5] + 0xc));\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    FUN_00024b20();\n  }\n  if (*param_1 == 0) {\n    iVar12 = param_1[7];\n    if ((1 < iVar12 - 5U) && (iVar12 != 0)) goto LAB_00083d33;\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if (*(char *)(iVar9 + 8) != '\0') goto LAB_00083c9d;\nLAB_00083dad:\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0 && param_1[3] == 0) {\n      local_50 = 1;\n      goto LAB_00083e11;\n    }\n    iVar4 = param_1[1];\n    if (iVar12 != 0) {\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }\n    local_50 = 1;\nLAB_00083e2f:\n    if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0) {\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }\nLAB_00083e51:\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(param_1[6] + 4);\n    local_40 = local_5c;\n    local_5c = *piVar3;\nLAB_00083e6b:\n    local_4c = piVar3[9];\n    local_58 = piVar7[9];\n    bVar14 = *(char *)(local_5c + 5) == '\x05';\n    local_64 = piVar7[0xc];\nLAB_00083e8d:\n    if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }\nLAB_00083f72:\n    if (iVar12 != 0) goto LAB_00083fca;\n    uVar10 = param_1[4];\nLAB_00083f79:\n    param_1[9] = local_64;\n    param_1[8] = (local_64 + 1) - uVar10;\n    if (local_64 < uVar10) goto LAB_00083fd3;\n    if (param_1[10] == 0) {\n      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 0x58) = param_1;\n      param_1[10] = 1;\n    }\n    iVar12 = 0;\nLAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;\n    goto LAB_00083d18;\n  }\n  sqlite3_mutex_enter(*(undefined4 *)(*param_1 + 0xc));\n  iVar12 = param_1[7];\n  if ((iVar12 - 5U < 2) || (iVar12 == 0)) {\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if ((*param_1 != 0) && ((char)piVar7[5] == '\x02')) {\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }\n    if (*(char *)(iVar9 + 8) == '\0') goto LAB_00083dad;\nLAB_00083c9d:\n    local_50 = param_1[3];\n    if (local_50 == 0) {\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }\n    local_50 = 0;\n    uVar10 = local_5c;\n    goto LAB_00083cb8;\n  }\n  goto LAB_00083d1b;\n  while( true ) {\n    bVar14 = CARRY4(local_34,local_58);\n    local_34 = local_34 + local_58;\n    bVar2 = 1;\n    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14;\n    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar2 = 0;\n    }\n    if (!(bool)(iVar12 == 0 & bVar2)) break;\nLAB_00084480:\n    local_2c = 0;\n    uVar15 = 0;\n    piVar7 = &local_2c;\n    iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f);\n    iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15);\n    if (iVar12 == 0) {\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }\n  }\nLAB_00084344:\n  if (iVar12 == 0) {\nLAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);\n    if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }\nLAB_000840d9:\n  if (local_50 != 0) {\nLAB_00083fb9:\n    iVar9 = param_1[6];\nLAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);\n    if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar8 != '\0') {\n      FUN_00080560();\n    }\n  }\n  if (iVar12 == 0xc0a) {\n    iVar12 = 7;\n  }\nLAB_00083d18:\n  param_1[7] = iVar12;\nLAB_00083d1b:\n  if (*param_1 != 0) {\n    sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc));\n  }\nLAB_00083d33:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar3 = (int *)(param_1[6] + 0xc);\n    *piVar3 = *piVar3 + -1;\n    if (*piVar3 == 0) {\n      FUN_00024a20();\n    }\n  }\n  sqlite3_mutex_leave(*(undefined4 *)(param_1[5] + 0xc));\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000d1450();\n  }\n  return iVar12;\n}" (primitive_type "int") (function_declarator "sqlite3_backup_step(int *param_1,uint param_2)" (identifier "sqlite3_backup_step") (parameter_list "(int *param_1,uint param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) (compound_statement "{\n  longlong lVar1;\n  byte bVar2;\n  int *piVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  int *piVar7;\n  char cVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  int in_GS_OFFSET;\n  bool bVar14;\n  undefined4 uVar15;\n  uint local_64;\n  uint local_5c;\n  uint local_58;\n  int local_54;\n  int local_50;\n  uint local_4c;\n  int local_40;\n  uint local_3c;\n  int local_38;\n  uint local_34;\n  int local_30;\n  int local_2c;\n  undefined4 local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x83c09;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  sqlite3_mutex_enter(*(undefined4 *)(param_1[5] + 0xc));\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    FUN_00024b20();\n  }\n  if (*param_1 == 0) {\n    iVar12 = param_1[7];\n    if ((1 < iVar12 - 5U) && (iVar12 != 0)) goto LAB_00083d33;\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if (*(char *)(iVar9 + 8) != '\0') goto LAB_00083c9d;\nLAB_00083dad:\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0 && param_1[3] == 0) {\n      local_50 = 1;\n      goto LAB_00083e11;\n    }\n    iVar4 = param_1[1];\n    if (iVar12 != 0) {\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }\n    local_50 = 1;\nLAB_00083e2f:\n    if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0) {\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }\nLAB_00083e51:\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(param_1[6] + 4);\n    local_40 = local_5c;\n    local_5c = *piVar3;\nLAB_00083e6b:\n    local_4c = piVar3[9];\n    local_58 = piVar7[9];\n    bVar14 = *(char *)(local_5c + 5) == '\x05';\n    local_64 = piVar7[0xc];\nLAB_00083e8d:\n    if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }\nLAB_00083f72:\n    if (iVar12 != 0) goto LAB_00083fca;\n    uVar10 = param_1[4];\nLAB_00083f79:\n    param_1[9] = local_64;\n    param_1[8] = (local_64 + 1) - uVar10;\n    if (local_64 < uVar10) goto LAB_00083fd3;\n    if (param_1[10] == 0) {\n      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 0x58) = param_1;\n      param_1[10] = 1;\n    }\n    iVar12 = 0;\nLAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;\n    goto LAB_00083d18;\n  }\n  sqlite3_mutex_enter(*(undefined4 *)(*param_1 + 0xc));\n  iVar12 = param_1[7];\n  if ((iVar12 - 5U < 2) || (iVar12 == 0)) {\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if ((*param_1 != 0) && ((char)piVar7[5] == '\x02')) {\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }\n    if (*(char *)(iVar9 + 8) == '\0') goto LAB_00083dad;\nLAB_00083c9d:\n    local_50 = param_1[3];\n    if (local_50 == 0) {\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }\n    local_50 = 0;\n    uVar10 = local_5c;\n    goto LAB_00083cb8;\n  }\n  goto LAB_00083d1b;\n  while( true ) {\n    bVar14 = CARRY4(local_34,local_58);\n    local_34 = local_34 + local_58;\n    bVar2 = 1;\n    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14;\n    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar2 = 0;\n    }\n    if (!(bool)(iVar12 == 0 & bVar2)) break;\nLAB_00084480:\n    local_2c = 0;\n    uVar15 = 0;\n    piVar7 = &local_2c;\n    iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f);\n    iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15);\n    if (iVar12 == 0) {\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }\n  }\nLAB_00084344:\n  if (iVar12 == 0) {\nLAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);\n    if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }\nLAB_000840d9:\n  if (local_50 != 0) {\nLAB_00083fb9:\n    iVar9 = param_1[6];\nLAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);\n    if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar8 != '\0') {\n      FUN_00080560();\n    }\n  }\n  if (iVar12 == 0xc0a) {\n    iVar12 = 7;\n  }\nLAB_00083d18:\n  param_1[7] = iVar12;\nLAB_00083d1b:\n  if (*param_1 != 0) {\n    sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc));\n  }\nLAB_00083d33:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar3 = (int *)(param_1[6] + 0xc);\n    *piVar3 = *piVar3 + -1;\n    if (*piVar3 == 0) {\n      FUN_00024a20();\n    }\n  }\n  sqlite3_mutex_leave(*(undefined4 *)(param_1[5] + 0xc));\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000d1450();\n  }\n  return iVar12;\n}" ({ "{") (declaration "longlong lVar1;" (type_identifier "longlong") (identifier "lVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "char cVar8;" (primitive_type "char") (identifier "cVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar14;" (primitive_type "bool") (identifier "bVar14") (; ";")) (declaration "undefined4 uVar15;" (type_identifier "undefined4") (identifier "uVar15") (; ";")) (declaration "uint local_64;" (type_identifier "uint") (identifier "local_64") (; ";")) (declaration "uint local_5c;" (type_identifier "uint") (identifier "local_5c") (; ";")) (declaration "uint local_58;" (type_identifier "uint") (identifier "local_58") (; ";")) (declaration "int local_54;" (primitive_type "int") (identifier "local_54") (; ";")) (declaration "int local_50;" (primitive_type "int") (identifier "local_50") (; ";")) (declaration "uint local_4c;" (type_identifier "uint") (identifier "local_4c") (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "uint local_3c;" (type_identifier "uint") (identifier "local_3c") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "uint local_34;" (type_identifier "uint") (identifier "local_34") (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x83c09;" (assignment_expression "uStack_14 = 0x83c09" (identifier "uStack_14") (= "=") (number_literal "0x83c09")) (; ";")) (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 "sqlite3_mutex_enter(*(undefined4 *)(param_1[5] + 0xc));" (call_expression "sqlite3_mutex_enter(*(undefined4 *)(param_1[5] + 0xc))" (identifier "sqlite3_mutex_enter") (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_00024b20();\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_00024b20();\n  }" ({ "{") (expression_statement "FUN_00024b20();" (call_expression "FUN_00024b20()" (identifier "FUN_00024b20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (*param_1 == 0) {\n    iVar12 = param_1[7];\n    if ((1 < iVar12 - 5U) && (iVar12 != 0)) goto LAB_00083d33;\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if (*(char *)(iVar9 + 8) != '\0') goto LAB_00083c9d;\nLAB_00083dad:\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0 && param_1[3] == 0) {\n      local_50 = 1;\n      goto LAB_00083e11;\n    }\n    iVar4 = param_1[1];\n    if (iVar12 != 0) {\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }\n    local_50 = 1;\nLAB_00083e2f:\n    if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0) {\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }\nLAB_00083e51:\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(param_1[6] + 4);\n    local_40 = local_5c;\n    local_5c = *piVar3;\nLAB_00083e6b:\n    local_4c = piVar3[9];\n    local_58 = piVar7[9];\n    bVar14 = *(char *)(local_5c + 5) == '\x05';\n    local_64 = piVar7[0xc];\nLAB_00083e8d:\n    if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }\nLAB_00083f72:\n    if (iVar12 != 0) goto LAB_00083fca;\n    uVar10 = param_1[4];\nLAB_00083f79:\n    param_1[9] = local_64;\n    param_1[8] = (local_64 + 1) - uVar10;\n    if (local_64 < uVar10) goto LAB_00083fd3;\n    if (param_1[10] == 0) {\n      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 0x58) = param_1;\n      param_1[10] = 1;\n    }\n    iVar12 = 0;\nLAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;\n    goto LAB_00083d18;\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    iVar12 = param_1[7];\n    if ((1 < iVar12 - 5U) && (iVar12 != 0)) goto LAB_00083d33;\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if (*(char *)(iVar9 + 8) != '\0') goto LAB_00083c9d;\nLAB_00083dad:\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0 && param_1[3] == 0) {\n      local_50 = 1;\n      goto LAB_00083e11;\n    }\n    iVar4 = param_1[1];\n    if (iVar12 != 0) {\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }\n    local_50 = 1;\nLAB_00083e2f:\n    if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }\n    iVar12 = FUN_00080d90();\n    if (iVar12 == 0) {\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }\nLAB_00083e51:\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(param_1[6] + 4);\n    local_40 = local_5c;\n    local_5c = *piVar3;\nLAB_00083e6b:\n    local_4c = piVar3[9];\n    local_58 = piVar7[9];\n    bVar14 = *(char *)(local_5c + 5) == '\x05';\n    local_64 = piVar7[0xc];\nLAB_00083e8d:\n    if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }\nLAB_00083f72:\n    if (iVar12 != 0) goto LAB_00083fca;\n    uVar10 = param_1[4];\nLAB_00083f79:\n    param_1[9] = local_64;\n    param_1[8] = (local_64 + 1) - uVar10;\n    if (local_64 < uVar10) goto LAB_00083fd3;\n    if (param_1[10] == 0) {\n      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 0x58) = param_1;\n      param_1[10] = 1;\n    }\n    iVar12 = 0;\nLAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;\n    goto LAB_00083d18;\n  }" ({ "{") (expression_statement "iVar12 = param_1[7];" (assignment_expression "iVar12 = param_1[7]" (identifier "iVar12") (= "=") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if ((1 < iVar12 - 5U) && (iVar12 != 0)) goto LAB_00083d33;" (if "if") (parenthesized_expression "((1 < iVar12 - 5U) && (iVar12 != 0))" (( "(") (binary_expression "(1 < iVar12 - 5U) && (iVar12 != 0)" (parenthesized_expression "(1 < iVar12 - 5U)" (( "(") (binary_expression "1 < iVar12 - 5U" (number_literal "1") (< "<") (binary_expression "iVar12 - 5U" (identifier "iVar12") (- "-") (number_literal "5U"))) () ")")) (&& "&&") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00083d33;" (goto "goto") (statement_identifier "LAB_00083d33") (; ";"))) (expression_statement "iVar9 = param_1[6];" (assignment_expression "iVar9 = param_1[6]" (identifier "iVar9") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "piVar3 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar3 = *(int **)(param_1[1] + 4)" (identifier "piVar3") (= "=") (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 "piVar7 = *(int **)(iVar9 + 4);" (assignment_expression "piVar7 = *(int **)(iVar9 + 4)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(iVar9 + 4)" (* "*") (cast_expression "(int **)(iVar9 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar9 + 4)" (( "(") (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "local_5c = *piVar3;" (assignment_expression "local_5c = *piVar3" (identifier "local_5c") (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "iVar11 = *piVar7;" (assignment_expression "iVar11 = *piVar7" (identifier "iVar11") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (if_statement "if (*(char *)(iVar9 + 8) != '\0') goto LAB_00083c9d;" (if "if") (parenthesized_expression "(*(char *)(iVar9 + 8) != '\0')" (( "(") (binary_expression "*(char *)(iVar9 + 8) != '\0'" (pointer_expression "*(char *)(iVar9 + 8)" (* "*") (cast_expression "(char *)(iVar9 + 8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 8)" (( "(") (binary_expression "iVar9 + 8" (identifier "iVar9") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00083c9d;" (goto "goto") (statement_identifier "LAB_00083c9d") (; ";"))) (labeled_statement "LAB_00083dad:\n    iVar12 = FUN_00080d90();" (statement_identifier "LAB_00083dad") (: ":") (expression_statement "iVar12 = FUN_00080d90();" (assignment_expression "iVar12 = FUN_00080d90()" (identifier "iVar12") (= "=") (call_expression "FUN_00080d90()" (identifier "FUN_00080d90") (argument_list "()" (( "(") () ")")))) (; ";"))) (if_statement "if (iVar12 == 0 && param_1[3] == 0) {\n      local_50 = 1;\n      goto LAB_00083e11;\n    }" (if "if") (parenthesized_expression "(iVar12 == 0 && param_1[3] == 0)" (( "(") (binary_expression "iVar12 == 0 && param_1[3] == 0" (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (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_50 = 1;\n      goto LAB_00083e11;\n    }" ({ "{") (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" (identifier "local_50") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00083e11;" (goto "goto") (statement_identifier "LAB_00083e11") (; ";")) (} "}"))) (expression_statement "iVar4 = param_1[1];" (assignment_expression "iVar4 = param_1[1]" (identifier "iVar4") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (iVar12 != 0) {\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }" (if "if") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      piVar3 = *(int **)(iVar4 + 4);\n      local_50 = 1;\n      local_40 = local_5c;\n      local_5c = *piVar3;\n      piVar7 = *(int **)(param_1[6] + 4);\n      goto LAB_00083e6b;\n    }" ({ "{") (expression_statement "piVar3 = *(int **)(iVar4 + 4);" (assignment_expression "piVar3 = *(int **)(iVar4 + 4)" (identifier "piVar3") (= "=") (pointer_expression "*(int **)(iVar4 + 4)" (* "*") (cast_expression "(int **)(iVar4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" (identifier "local_50") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" (identifier "local_40") (= "=") (identifier "local_5c")) (; ";")) (expression_statement "local_5c = *piVar3;" (assignment_expression "local_5c = *piVar3" (identifier "local_5c") (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "piVar7 = *(int **)(param_1[6] + 4);" (assignment_expression "piVar7 = *(int **)(param_1[6] + 4)" (identifier "piVar7") (= "=") (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")) () ")"))))) (; ";")) (goto_statement "goto LAB_00083e6b;" (goto "goto") (statement_identifier "LAB_00083e6b") (; ";")) (} "}"))) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" (identifier "local_50") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_00083e2f:\n    if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }" (statement_identifier "LAB_00083e2f") (: ":") (if_statement "if (param_1[3] != 0) {\n      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\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      iVar9 = param_1[6];\n      piVar3 = *(int **)(iVar4 + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\nLAB_00083cb8:\n      local_4c = piVar3[9];\n      local_58 = piVar7[9];\n      local_64 = piVar7[0xc];\n      bVar14 = *(char *)(uVar10 + 5) == '\x05';\n      if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }\n      if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }\n      iVar12 = 8;\n      if (local_50 == 0) goto LAB_00083d18;\n      goto LAB_00083cf5;\n    }" ({ "{") (expression_statement "iVar9 = param_1[6];" (assignment_expression "iVar9 = param_1[6]" (identifier "iVar9") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "piVar3 = *(int **)(iVar4 + 4);" (assignment_expression "piVar3 = *(int **)(iVar4 + 4)" (identifier "piVar3") (= "=") (pointer_expression "*(int **)(iVar4 + 4)" (* "*") (cast_expression "(int **)(iVar4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "piVar7 = *(int **)(iVar9 + 4);" (assignment_expression "piVar7 = *(int **)(iVar9 + 4)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(iVar9 + 4)" (* "*") (cast_expression "(int **)(iVar9 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar9 + 4)" (( "(") (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar10 = *piVar3;" (assignment_expression "uVar10 = *piVar3" (identifier "uVar10") (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (labeled_statement "LAB_00083cb8:\n      local_4c = piVar3[9];" (statement_identifier "LAB_00083cb8") (: ":") (expression_statement "local_4c = piVar3[9];" (assignment_expression "local_4c = piVar3[9]" (identifier "local_4c") (= "=") (subscript_expression "piVar3[9]" (identifier "piVar3") ([ "[") (number_literal "9") (] "]"))) (; ";"))) (expression_statement "local_58 = piVar7[9];" (assignment_expression "local_58 = piVar7[9]" (identifier "local_58") (= "=") (subscript_expression "piVar7[9]" (identifier "piVar7") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "local_64 = piVar7[0xc];" (assignment_expression "local_64 = piVar7[0xc]" (identifier "local_64") (= "=") (subscript_expression "piVar7[0xc]" (identifier "piVar7") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "bVar14 = *(char *)(uVar10 + 5) == '\x05';" (assignment_expression "bVar14 = *(char *)(uVar10 + 5) == '\x05'" (identifier "bVar14") (= "=") (binary_expression "*(char *)(uVar10 + 5) == '\x05'" (pointer_expression "*(char *)(uVar10 + 5)" (* "*") (cast_expression "(char *)(uVar10 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar10 + 5)" (( "(") (binary_expression "uVar10 + 5" (identifier "uVar10") (+ "+") (number_literal "5")) () ")")))) (== "==") (char_literal "'\x05'" (' "'") (escape_sequence "\x05") (' "'")))) (; ";")) (if_statement "if (!bVar14) {\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }" (if "if") (parenthesized_expression "(!bVar14)" (( "(") (unary_expression "!bVar14" (! "!") (identifier "bVar14")) () ")")) (compound_statement "{\n        local_40 = local_5c;\n        iVar12 = 0;\n        goto LAB_00083e8d;\n      }" ({ "{") (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" (identifier "local_40") (= "=") (identifier "local_5c")) (; ";")) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00083e8d;" (goto "goto") (statement_identifier "LAB_00083e8d") (; ";")) (} "}"))) (if_statement "if (local_4c == local_58) {\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }" (if "if") (parenthesized_expression "(local_4c == local_58)" (( "(") (binary_expression "local_4c == local_58" (identifier "local_4c") (== "==") (identifier "local_58")) () ")")) (compound_statement "{\n        uVar10 = param_1[4];\n        if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }\n        local_40 = local_5c;\n        bVar14 = true;\n        goto LAB_00083f79;\n      }" ({ "{") (expression_statement "uVar10 = param_1[4];" (assignment_expression "uVar10 = param_1[4]" (identifier "uVar10") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if ((param_2 != 0) && (uVar10 <= local_64)) {\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }" (if "if") (parenthesized_expression "((param_2 != 0) && (uVar10 <= local_64))" (( "(") (binary_expression "(param_2 != 0) && (uVar10 <= local_64)" (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar10 <= local_64)" (( "(") (binary_expression "uVar10 <= local_64" (identifier "uVar10") (<= "<=") (identifier "local_64")) () ")"))) () ")")) (compound_statement "{\n          local_40 = local_5c;\n          bVar14 = true;\n          goto LAB_00083eae;\n        }" ({ "{") (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" (identifier "local_40") (= "=") (identifier "local_5c")) (; ";")) (expression_statement "bVar14 = true;" (assignment_expression "bVar14 = true" (identifier "bVar14") (= "=") (true "true")) (; ";")) (goto_statement "goto LAB_00083eae;" (goto "goto") (statement_identifier "LAB_00083eae") (; ";")) (} "}"))) (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" (identifier "local_40") (= "=") (identifier "local_5c")) (; ";")) (expression_statement "bVar14 = true;" (assignment_expression "bVar14 = true" (identifier "bVar14") (= "=") (true "true")) (; ";")) (goto_statement "goto LAB_00083f79;" (goto "goto") (statement_identifier "LAB_00083f79") (; ";")) (} "}"))) (expression_statement "iVar12 = 8;" (assignment_expression "iVar12 = 8" (identifier "iVar12") (= "=") (number_literal "8")) (; ";")) (if_statement "if (local_50 == 0) goto LAB_00083d18;" (if "if") (parenthesized_expression "(local_50 == 0)" (( "(") (binary_expression "local_50 == 0" (identifier "local_50") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00083d18;" (goto "goto") (statement_identifier "LAB_00083d18") (; ";"))) (goto_statement "goto LAB_00083cf5;" (goto "goto") (statement_identifier "LAB_00083cf5") (; ";")) (} "}")))) (expression_statement "iVar12 = FUN_00080d90();" (assignment_expression "iVar12 = FUN_00080d90()" (identifier "iVar12") (= "=") (call_expression "FUN_00080d90()" (identifier "FUN_00080d90") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar12 == 0) {\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar9 = param_1[6];\n      param_1[3] = 1;\n      piVar3 = *(int **)(param_1[1] + 4);\n      piVar7 = *(int **)(iVar9 + 4);\n      uVar10 = *piVar3;\n      goto LAB_00083cb8;\n    }" ({ "{") (expression_statement "iVar9 = param_1[6];" (assignment_expression "iVar9 = param_1[6]" (identifier "iVar9") (= "=") (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 "piVar3 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar3 = *(int **)(param_1[1] + 4)" (identifier "piVar3") (= "=") (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 "piVar7 = *(int **)(iVar9 + 4);" (assignment_expression "piVar7 = *(int **)(iVar9 + 4)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(iVar9 + 4)" (* "*") (cast_expression "(int **)(iVar9 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar9 + 4)" (( "(") (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar10 = *piVar3;" (assignment_expression "uVar10 = *piVar3" (identifier "uVar10") (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (goto_statement "goto LAB_00083cb8;" (goto "goto") (statement_identifier "LAB_00083cb8") (; ";")) (} "}"))) (labeled_statement "LAB_00083e51:\n    piVar3 = *(int **)(param_1[1] + 4);" (statement_identifier "LAB_00083e51") (: ":") (expression_statement "piVar3 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar3 = *(int **)(param_1[1] + 4)" (identifier "piVar3") (= "=") (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 "piVar7 = *(int **)(param_1[6] + 4);" (assignment_expression "piVar7 = *(int **)(param_1[6] + 4)" (identifier "piVar7") (= "=") (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 "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" (identifier "local_40") (= "=") (identifier "local_5c")) (; ";")) (expression_statement "local_5c = *piVar3;" (assignment_expression "local_5c = *piVar3" (identifier "local_5c") (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (labeled_statement "LAB_00083e6b:\n    local_4c = piVar3[9];" (statement_identifier "LAB_00083e6b") (: ":") (expression_statement "local_4c = piVar3[9];" (assignment_expression "local_4c = piVar3[9]" (identifier "local_4c") (= "=") (subscript_expression "piVar3[9]" (identifier "piVar3") ([ "[") (number_literal "9") (] "]"))) (; ";"))) (expression_statement "local_58 = piVar7[9];" (assignment_expression "local_58 = piVar7[9]" (identifier "local_58") (= "=") (subscript_expression "piVar7[9]" (identifier "piVar7") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "bVar14 = *(char *)(local_5c + 5) == '\x05';" (assignment_expression "bVar14 = *(char *)(local_5c + 5) == '\x05'" (identifier "bVar14") (= "=") (binary_expression "*(char *)(local_5c + 5) == '\x05'" (pointer_expression "*(char *)(local_5c + 5)" (* "*") (cast_expression "(char *)(local_5c + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_5c + 5)" (( "(") (binary_expression "local_5c + 5" (identifier "local_5c") (+ "+") (number_literal "5")) () ")")))) (== "==") (char_literal "'\x05'" (' "'") (escape_sequence "\x05") (' "'")))) (; ";")) (expression_statement "local_64 = piVar7[0xc];" (assignment_expression "local_64 = piVar7[0xc]" (identifier "local_64") (= "=") (subscript_expression "piVar7[0xc]" (identifier "piVar7") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (labeled_statement "LAB_00083e8d:\n    if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }" (statement_identifier "LAB_00083e8d") (: ":") (if_statement "if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }" (if "if") (parenthesized_expression "((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64))" (( "(") (binary_expression "(param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)" (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar10 = param_1[4], uVar10 <= local_64)" (( "(") (comma_expression "uVar10 = param_1[4], uVar10 <= local_64" (assignment_expression "uVar10 = param_1[4]" (identifier "uVar10") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (, ",") (binary_expression "uVar10 <= local_64" (identifier "uVar10") (<= "<=") (identifier "local_64"))) () ")"))) () ")")) (compound_statement "{\n      if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }\nLAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;\nLAB_00083fd3:\n      iVar9 = param_1[1];\n      local_5c = local_64;\n      if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }\n      iVar12 = FUN_0007bde0();\n      if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }\n      goto LAB_000840d9;\n    }" ({ "{") (if_statement "if (iVar12 == 0) {\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00083eae:\n        uVar13 = 0;\n        uVar5 = local_58;\n        while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }\n      }" ({ "{") (labeled_statement "LAB_00083eae:\n        uVar13 = 0;" (statement_identifier "LAB_00083eae") (: ":") (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";"))) (expression_statement "uVar5 = local_58;" (assignment_expression "uVar5 = local_58" (identifier "uVar5") (= "=") (identifier "local_58")) (; ";")) (while_statement "while( true ) {\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }\n          uVar10 = uVar10 + 1;\n          uVar13 = uVar13 + 1;\n          param_1[4] = uVar10;\n          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;\n          if (iVar12 != 0) break;\n          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);\n        }" ({ "{") (if_statement "if (DAT_00106358 / uVar5 + 1 == uVar10) {\n            iVar12 = 0;\n          }\n          else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }" (if "if") (parenthesized_expression "(DAT_00106358 / uVar5 + 1 == uVar10)" (( "(") (binary_expression "DAT_00106358 / uVar5 + 1 == uVar10" (binary_expression "DAT_00106358 / uVar5 + 1" (binary_expression "DAT_00106358 / uVar5" (identifier "DAT_00106358") (/ "/") (identifier "uVar5")) (+ "+") (number_literal "1")) (== "==") (identifier "uVar10")) () ")")) (compound_statement "{\n            iVar12 = 0;\n          }" ({ "{") (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }" (else "else") (compound_statement "{\n            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);\n            if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }\n            uVar10 = param_1[4];\n          }" ({ "{") (expression_statement "iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);" (assignment_expression "iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2)" (identifier "iVar12") (= "=") (call_expression "(**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2)" (parenthesized_expression "(**(code **)(iVar11 + 200))" (( "(") (pointer_expression "**(code **)(iVar11 + 200)" (* "*") (pointer_expression "*(code **)(iVar11 + 200)" (* "*") (cast_expression "(code **)(iVar11 + 200)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar11 + 200)" (( "(") (binary_expression "iVar11 + 200" (identifier "iVar11") (+ "+") (number_literal "200")) () ")"))))) () ")")) (argument_list "(iVar11,uVar10,&local_2c,2)" (( "(") (identifier "iVar11") (, ",") (identifier "uVar10") (, ",") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) (, ",") (number_literal "2") () ")")))) (; ";")) (if_statement "if ((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {\n              FUN_0001f280();\n            }" (if "if") (parenthesized_expression "((iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0))" (( "(") (binary_expression "(iVar12 == 0) &&\n               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)" (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)" (( "(") (comma_expression "iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0" (assignment_expression "iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0)" (identifier "iVar12") (= "=") (call_expression "FUN_0007c390(*(undefined4 *)(local_2c + 4),0)" (identifier "FUN_0007c390") (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_0001f280();\n            }" ({ "{") (expression_statement "FUN_0001f280();" (call_expression "FUN_0001f280()" (identifier "FUN_0001f280") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar10 = param_1[4];" (assignment_expression "uVar10 = param_1[4]" (identifier "uVar10") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (} "}")))) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar13 = uVar13 + 1;" (assignment_expression "uVar13 = uVar13 + 1" (identifier "uVar13") (= "=") (binary_expression "uVar13 + 1" (identifier "uVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1[4] = uVar10;" (assignment_expression "param_1[4] = uVar10" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (if_statement "if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;" (if "if") (parenthesized_expression "((param_2 <= uVar13) || (local_64 < uVar10))" (( "(") (binary_expression "(param_2 <= uVar13) || (local_64 < uVar10)" (parenthesized_expression "(param_2 <= uVar13)" (( "(") (binary_expression "param_2 <= uVar13" (identifier "param_2") (<= "<=") (identifier "uVar13")) () ")")) (|| "||") (parenthesized_expression "(local_64 < uVar10)" (( "(") (binary_expression "local_64 < uVar10" (identifier "local_64") (< "<") (identifier "uVar10")) () ")"))) () ")")) (goto_statement "goto LAB_00083f72;" (goto "goto") (statement_identifier "LAB_00083f72") (; ";"))) (if_statement "if (iVar12 != 0) break;" (if "if") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);" (assignment_expression "uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(*(int *)(param_1[6] + 4) + 0x24)" (* "*") (cast_expression "(uint *)(*(int *)(param_1[6] + 4) + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1[6] + 4) + 0x24)" (( "(") (binary_expression "*(int *)(param_1[6] + 4) + 0x24" (pointer_expression "*(int *)(param_1[6] + 4)" (* "*") (cast_expression "(int *)(param_1[6] + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (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")) () ")")))) (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00083fca:\n      if (iVar12 != 0x65) goto LAB_000840d9;" (statement_identifier "LAB_00083fca") (: ":") (if_statement "if (iVar12 != 0x65) goto LAB_000840d9;" (if "if") (parenthesized_expression "(iVar12 != 0x65)" (( "(") (binary_expression "iVar12 != 0x65" (identifier "iVar12") (!= "!=") (number_literal "0x65")) () ")")) (goto_statement "goto LAB_000840d9;" (goto "goto") (statement_identifier "LAB_000840d9") (; ";")))) (labeled_statement "LAB_00083fd3:\n      iVar9 = param_1[1];" (statement_identifier "LAB_00083fd3") (: ":") (expression_statement "iVar9 = param_1[1];" (assignment_expression "iVar9 = param_1[1]" (identifier "iVar9") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";"))) (expression_statement "local_5c = local_64;" (assignment_expression "local_5c = local_64" (identifier "local_5c") (= "=") (identifier "local_64")) (; ";")) (if_statement "if (local_64 == 0) {\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }" (if "if") (parenthesized_expression "(local_64 == 0)" (( "(") (binary_expression "local_64 == 0" (identifier "local_64") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }\n        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;\n        iVar12 = FUN_000761e0();\n        if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }\n        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;\n        local_5c = 1;\n      }" ({ "{") (if_statement "if (*(char *)(iVar9 + 9) != '\0') {\n          FUN_00024b20();\n        }" (if "if") (parenthesized_expression "(*(char *)(iVar9 + 9) != '\0')" (( "(") (binary_expression "*(char *)(iVar9 + 9) != '\0'" (pointer_expression "*(char *)(iVar9 + 9)" (* "*") (cast_expression "(char *)(iVar9 + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 9)" (( "(") (binary_expression "iVar9 + 9" (identifier "iVar9") (+ "+") (number_literal "9")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          FUN_00024b20();\n        }" ({ "{") (expression_statement "FUN_00024b20();" (call_expression "FUN_00024b20()" (identifier "FUN_00024b20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;" (assignment_expression "*(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0" (pointer_expression "*(undefined4 *)(*(int *)(iVar9 + 4) + 0x30)" (* "*") (cast_expression "(undefined4 *)(*(int *)(iVar9 + 4) + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar9 + 4) + 0x30)" (( "(") (binary_expression "*(int *)(iVar9 + 4) + 0x30" (pointer_expression "*(int *)(iVar9 + 4)" (* "*") (cast_expression "(int *)(iVar9 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 4)" (( "(") (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x30")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar12 = FUN_000761e0();" (assignment_expression "iVar12 = FUN_000761e0()" (identifier "iVar12") (= "=") (call_expression "FUN_000761e0()" (identifier "FUN_000761e0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (*(char *)(iVar9 + 9) != '\0') {\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }" (if "if") (parenthesized_expression "(*(char *)(iVar9 + 9) != '\0')" (( "(") (binary_expression "*(char *)(iVar9 + 9) != '\0'" (pointer_expression "*(char *)(iVar9 + 9)" (* "*") (cast_expression "(char *)(iVar9 + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 9)" (( "(") (binary_expression "iVar9 + 9" (identifier "iVar9") (+ "+") (number_literal "9")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          piVar3 = (int *)(iVar9 + 0xc);\n          *piVar3 = *piVar3 + -1;\n          if (*piVar3 == 0) {\n            FUN_00024b40();\n          }\n        }" ({ "{") (expression_statement "piVar3 = (int *)(iVar9 + 0xc);" (assignment_expression "piVar3 = (int *)(iVar9 + 0xc)" (identifier "piVar3") (= "=") (cast_expression "(int *)(iVar9 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xc)" (( "(") (binary_expression "iVar9 + 0xc" (identifier "iVar9") (+ "+") (number_literal "0xc")) () ")")))) (; ";")) (expression_statement "*piVar3 = *piVar3 + -1;" (assignment_expression "*piVar3 = *piVar3 + -1" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (binary_expression "*piVar3 + -1" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (*piVar3 == 0) {\n            FUN_00024b40();\n          }" (if "if") (parenthesized_expression "(*piVar3 == 0)" (( "(") (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_00024b40();\n          }" ({ "{") (expression_statement "FUN_00024b40();" (call_expression "FUN_00024b40()" (identifier "FUN_00024b40") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;" (if "if") (parenthesized_expression "((iVar12 != 0) && (iVar12 != 0x65))" (( "(") (binary_expression "(iVar12 != 0) && (iVar12 != 0x65)" (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar12 != 0x65)" (( "(") (binary_expression "iVar12 != 0x65" (identifier "iVar12") (!= "!=") (number_literal "0x65")) () ")"))) () ")")) (goto_statement "goto LAB_000840d9;" (goto "goto") (statement_identifier "LAB_000840d9") (; ";"))) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" (identifier "local_5c") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "iVar12 = FUN_0007bde0();" (assignment_expression "iVar12 = FUN_0007bde0()" (identifier "iVar12") (= "=") (call_expression "FUN_0007bde0()" (identifier "FUN_0007bde0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar12 == 0) {\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (*param_1 != 0) {\n          FUN_00057e80();\n        }\n        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }\n      }" ({ "{") (if_statement "if (*param_1 != 0) {\n          FUN_00057e80();\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_00057e80();\n        }" ({ "{") (expression_statement "FUN_00057e80();" (call_expression "FUN_00057e80()" (identifier "FUN_00057e80") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }" (if "if") (parenthesized_expression "((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0))" (( "(") (binary_expression "(!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)" (parenthesized_expression "(!bVar14)" (( "(") (unary_expression "!bVar14" (! "!") (identifier "bVar14")) () ")")) (|| "||") (parenthesized_expression "(iVar12 = FUN_00081680(), iVar12 == 0)" (( "(") (comma_expression "iVar12 = FUN_00081680(), iVar12 == 0" (assignment_expression "iVar12 = FUN_00081680()" (identifier "iVar12") (= "=") (call_expression "FUN_00081680()" (identifier "FUN_00081680") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n          if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }\n        }" ({ "{") (if_statement "if ((int)local_58 < (int)local_4c) {\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }\n          else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }" (if "if") (parenthesized_expression "((int)local_58 < (int)local_4c)" (( "(") (binary_expression "(int)local_58 < (int)local_4c" (cast_expression "(int)local_58" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_58")) (< "<") (cast_expression "(int)local_4c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_4c"))) () ")")) (compound_statement "{\n            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);\n            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n            if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }\n            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;\n            piVar3 = *(int **)(local_40 + 0x3c);\n            uVar5 = *(uint *)(local_40 + 0x18);\nLAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);\n          }" ({ "{") (expression_statement "uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58);" (assignment_expression "uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58)" (identifier "uVar10") (= "=") (binary_expression "(int)((local_5c - 1) + (int)local_4c / (int)local_58) /\n                     ((int)local_4c / (int)local_58)" (cast_expression "(int)((local_5c - 1) + (int)local_4c / (int)local_58)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((local_5c - 1) + (int)local_4c / (int)local_58)" (( "(") (binary_expression "(local_5c - 1) + (int)local_4c / (int)local_58" (parenthesized_expression "(local_5c - 1)" (( "(") (binary_expression "local_5c - 1" (identifier "local_5c") (- "-") (number_literal "1")) () ")")) (+ "+") (binary_expression "(int)local_4c / (int)local_58" (cast_expression "(int)local_4c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_4c")) (/ "/") (cast_expression "(int)local_58" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_58")))) () ")"))) (/ "/") (parenthesized_expression "((int)local_4c / (int)local_58)" (( "(") (binary_expression "(int)local_4c / (int)local_58" (cast_expression "(int)local_4c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_4c")) (/ "/") (cast_expression "(int)local_58" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_58"))) () ")")))) (; ";")) (expression_statement "uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);" (assignment_expression "uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24)" (identifier "uVar5") (= "=") (binary_expression "DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24)" (identifier "DAT_00106358") (/ "/") (pointer_expression "*(uint *)(*(int *)(param_1[1] + 4) + 0x24)" (* "*") (cast_expression "(uint *)(*(int *)(param_1[1] + 4) + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1[1] + 4) + 0x24)" (( "(") (binary_expression "*(int *)(param_1[1] + 4) + 0x24" (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 "0x24")) () ")")))))) (; ";")) (if_statement "if (uVar5 + 1 == uVar10) {\n              uVar10 = uVar5;\n            }" (if "if") (parenthesized_expression "(uVar5 + 1 == uVar10)" (( "(") (binary_expression "uVar5 + 1 == uVar10" (binary_expression "uVar5 + 1" (identifier "uVar5") (+ "+") (number_literal "1")) (== "==") (identifier "uVar10")) () ")")) (compound_statement "{\n              uVar10 = uVar5;\n            }" ({ "{") (expression_statement "uVar10 = uVar5;" (assignment_expression "uVar10 = uVar5" (identifier "uVar10") (= "=") (identifier "uVar5")) (; ";")) (} "}"))) (expression_statement "lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;" (assignment_expression "lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58" (identifier "lVar1") (= "=") (binary_expression "(longlong)(int)local_5c * (longlong)(int)local_58" (cast_expression "(longlong)(int)local_5c" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (cast_expression "(int)local_5c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_5c"))) (* "*") (cast_expression "(longlong)(int)local_58" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (cast_expression "(int)local_58" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_58"))))) (; ";")) (expression_statement "piVar3 = *(int **)(local_40 + 0x3c);" (assignment_expression "piVar3 = *(int **)(local_40 + 0x3c)" (identifier "piVar3") (= "=") (pointer_expression "*(int **)(local_40 + 0x3c)" (* "*") (cast_expression "(int **)(local_40 + 0x3c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_40 + 0x3c)" (( "(") (binary_expression "local_40 + 0x3c" (identifier "local_40") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "uVar5 = *(uint *)(local_40 + 0x18);" (assignment_expression "uVar5 = *(uint *)(local_40 + 0x18)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(local_40 + 0x18)" (* "*") (cast_expression "(uint *)(local_40 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x18)" (( "(") (binary_expression "local_40 + 0x18" (identifier "local_40") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (labeled_statement "LAB_00084096:\n            do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);" (statement_identifier "LAB_00084096") (: ":") (do_statement "do {\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            } while (iVar12 == 0);" (do "do") (compound_statement "{\n              if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }\n              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);\n              uVar13 = uVar10;\n              if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }\n              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);\n              if (iVar12 != 0) break;\n              iVar12 = FUN_00076180();\n              if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }\n              uVar10 = uVar13 + 1;\n              FUN_0001f280();\n            }" ({ "{") (if_statement "if (uVar5 < uVar10) {\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }" (if "if") (parenthesized_expression "(uVar5 < uVar10)" (( "(") (binary_expression "uVar5 < uVar10" (identifier "uVar5") (< "<") (identifier "uVar10")) () ")")) (compound_statement "{\nLAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);\n                if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }\n                break;\n              }" ({ "{") (labeled_statement "LAB_00084288:\n                iVar12 = *(int *)(local_40 + 0x28);" (statement_identifier "LAB_00084288") (: ":") (expression_statement "iVar12 = *(int *)(local_40 + 0x28);" (assignment_expression "iVar12 = *(int *)(local_40 + 0x28)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(local_40 + 0x28)" (* "*") (cast_expression "(int *)(local_40 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x28)" (( "(") (binary_expression "local_40 + 0x28" (identifier "local_40") (+ "+") (number_literal "0x28")) () ")"))))) (; ";"))) (if_statement "if (iVar12 == 0) {\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;\n                  local_3c = (uint)lVar1;\n                  local_38 = (int)((ulonglong)lVar1 >> 0x20);\n                  if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }\n                  goto LAB_00084480;\n                }" ({ "{") (if_statement "if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))\n                  goto LAB_00084446;" (if "if") (parenthesized_expression "((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))" (( "(") (binary_expression "(DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0)" (parenthesized_expression "(DAT_00106454 != (code *)0x0)" (( "(") (binary_expression "DAT_00106454 != (code *)0x0" (identifier "DAT_00106454") (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(iVar12 = (*DAT_00106454)(400), iVar12 != 0)" (( "(") (comma_expression "iVar12 = (*DAT_00106454)(400), iVar12 != 0" (assignment_expression "iVar12 = (*DAT_00106454)(400)" (identifier "iVar12") (= "=") (call_expression "(*DAT_00106454)(400)" (parenthesized_expression "(*DAT_00106454)" (( "(") (pointer_expression "*DAT_00106454" (* "*") (identifier "DAT_00106454")) () ")")) (argument_list "(400)" (( "(") (number_literal "400") () ")")))) (, ",") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_00084446;" (goto "goto") (statement_identifier "LAB_00084446") (; ";"))) (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")) () ")")))) (; ";")) (if_statement "if (*(byte *)(local_40 + 0x10) < 3) {\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }\n                  else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }" (if "if") (parenthesized_expression "(*(byte *)(local_40 + 0x10) < 3)" (( "(") (binary_expression "*(byte *)(local_40 + 0x10) < 3" (pointer_expression "*(byte *)(local_40 + 0x10)" (* "*") (cast_expression "(byte *)(local_40 + 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x10)" (( "(") (binary_expression "local_40 + 0x10" (identifier "local_40") (+ "+") (number_literal "0x10")) () ")")))) (< "<") (number_literal "3")) () ")")) (compound_statement "{\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;\n                  }" ({ "{") (expression_statement "local_4c = local_4c + DAT_00106358;" (assignment_expression "local_4c = local_4c + DAT_00106358" (identifier "local_4c") (= "=") (binary_expression "local_4c + DAT_00106358" (identifier "local_4c") (+ "+") (identifier "DAT_00106358"))) (; ";")) (expression_statement "local_54 = (int)local_4c >> 0x1f;" (assignment_expression "local_54 = (int)local_4c >> 0x1f" (identifier "local_54") (= "=") (binary_expression "(int)local_4c >> 0x1f" (cast_expression "(int)local_4c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_4c")) (>> ">>") (number_literal "0x1f"))) (; ";")) (if_statement "if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }" (if "if") (parenthesized_expression "(lVar1 < (int)local_4c)" (( "(") (binary_expression "lVar1 < (int)local_4c" (identifier "lVar1") (< "<") (cast_expression "(int)local_4c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_4c"))) () ")")) (compound_statement "{\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }" ({ "{") (expression_statement "local_4c = local_3c;" (assignment_expression "local_4c = local_3c" (identifier "local_4c") (= "=") (identifier "local_3c")) (; ";")) (expression_statement "local_54 = local_38;" (assignment_expression "local_54 = local_38" (identifier "local_54") (= "=") (identifier "local_38")) (; ";")) (} "}"))) (expression_statement "local_34 = DAT_00106358 + local_58;" (assignment_expression "local_34 = DAT_00106358 + local_58" (identifier "local_34") (= "=") (binary_expression "DAT_00106358 + local_58" (identifier "DAT_00106358") (+ "+") (identifier "local_58"))) (; ";")) (expression_statement "local_30 = (int)local_34 >> 0x1f;" (assignment_expression "local_30 = (int)local_34 >> 0x1f" (identifier "local_30") (= "=") (binary_expression "(int)local_34 >> 0x1f" (cast_expression "(int)local_34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_34")) (>> ">>") (number_literal "0x1f"))) (; ";")) (if_statement "if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))\n                    goto LAB_0008434c;" (if "if") (parenthesized_expression "((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))" (( "(") (binary_expression "(local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))" (parenthesized_expression "(local_54 <= local_30)" (( "(") (binary_expression "local_54 <= local_30" (identifier "local_54") (<= "<=") (identifier "local_30")) () ")")) (&& "&&") (parenthesized_expression "((local_54 < local_30 || (local_4c <= local_34)))" (( "(") (parenthesized_expression "(local_54 < local_30 || (local_4c <= local_34))" (( "(") (binary_expression "local_54 < local_30 || (local_4c <= local_34)" (binary_expression "local_54 < local_30" (identifier "local_54") (< "<") (identifier "local_30")) (|| "||") (parenthesized_expression "(local_4c <= local_34)" (( "(") (binary_expression "local_4c <= local_34" (identifier "local_4c") (<= "<=") (identifier "local_34")) () ")"))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_0008434c;" (goto "goto") (statement_identifier "LAB_0008434c") (; ";"))) (} "}")) (else_clause "else {\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }" (else "else") (compound_statement "{\n                    iVar12 = FUN_00082f70();\n                    local_4c = local_4c + DAT_00106358;\n                    local_54 = (int)local_4c >> 0x1f;\n                    if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }\n                    local_34 = DAT_00106358 + local_58;\n                    local_30 = (int)local_34 >> 0x1f;\n                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;\n                  }" ({ "{") (expression_statement "iVar12 = FUN_00082f70();" (assignment_expression "iVar12 = FUN_00082f70()" (identifier "iVar12") (= "=") (call_expression "FUN_00082f70()" (identifier "FUN_00082f70") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "local_4c = local_4c + DAT_00106358;" (assignment_expression "local_4c = local_4c + DAT_00106358" (identifier "local_4c") (= "=") (binary_expression "local_4c + DAT_00106358" (identifier "local_4c") (+ "+") (identifier "DAT_00106358"))) (; ";")) (expression_statement "local_54 = (int)local_4c >> 0x1f;" (assignment_expression "local_54 = (int)local_4c >> 0x1f" (identifier "local_54") (= "=") (binary_expression "(int)local_4c >> 0x1f" (cast_expression "(int)local_4c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_4c")) (>> ">>") (number_literal "0x1f"))) (; ";")) (if_statement "if (lVar1 < (int)local_4c) {\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }" (if "if") (parenthesized_expression "(lVar1 < (int)local_4c)" (( "(") (binary_expression "lVar1 < (int)local_4c" (identifier "lVar1") (< "<") (cast_expression "(int)local_4c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_4c"))) () ")")) (compound_statement "{\n                      local_4c = local_3c;\n                      local_54 = local_38;\n                    }" ({ "{") (expression_statement "local_4c = local_3c;" (assignment_expression "local_4c = local_3c" (identifier "local_4c") (= "=") (identifier "local_3c")) (; ";")) (expression_statement "local_54 = local_38;" (assignment_expression "local_54 = local_38" (identifier "local_54") (= "=") (identifier "local_38")) (; ";")) (} "}"))) (expression_statement "local_34 = DAT_00106358 + local_58;" (assignment_expression "local_34 = DAT_00106358 + local_58" (identifier "local_34") (= "=") (binary_expression "DAT_00106358 + local_58" (identifier "DAT_00106358") (+ "+") (identifier "local_58"))) (; ";")) (expression_statement "local_30 = (int)local_34 >> 0x1f;" (assignment_expression "local_30 = (int)local_34 >> 0x1f" (identifier "local_30") (= "=") (binary_expression "(int)local_34 >> 0x1f" (cast_expression "(int)local_34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_34")) (>> ">>") (number_literal "0x1f"))) (; ";")) (if_statement "if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)) goto LAB_00084344;" (if "if") (parenthesized_expression "(((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0))" (( "(") (binary_expression "((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        ) || (iVar12 != 0)" (parenthesized_expression "((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))\n                        )" (( "(") (binary_expression "(local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))" (parenthesized_expression "(local_54 <= local_30)" (( "(") (binary_expression "local_54 <= local_30" (identifier "local_54") (<= "<=") (identifier "local_30")) () ")")) (&& "&&") (parenthesized_expression "((local_54 < local_30 || (local_4c <= local_34)))" (( "(") (parenthesized_expression "(local_54 < local_30 || (local_4c <= local_34))" (( "(") (binary_expression "local_54 < local_30 || (local_4c <= local_34)" (binary_expression "local_54 < local_30" (identifier "local_54") (< "<") (identifier "local_30")) (|| "||") (parenthesized_expression "(local_4c <= local_34)" (( "(") (binary_expression "local_4c <= local_34" (identifier "local_4c") (<= "<=") (identifier "local_34")) () ")"))) () ")")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00084344;" (goto "goto") (statement_identifier "LAB_00084344") (; ";"))) (} "}")))) (goto_statement "goto LAB_00084480;" (goto "goto") (statement_identifier "LAB_00084480") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);" (assignment_expression "uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24)" (identifier "uVar6") (= "=") (binary_expression "DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24)" (identifier "DAT_00106358") (/ "/") (pointer_expression "*(uint *)(*(int *)(param_1[1] + 4) + 0x24)" (* "*") (cast_expression "(uint *)(*(int *)(param_1[1] + 4) + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1[1] + 4) + 0x24)" (( "(") (binary_expression "*(int *)(param_1[1] + 4) + 0x24" (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 "0x24")) () ")")))))) (; ";")) (expression_statement "uVar13 = uVar10;" (assignment_expression "uVar13 = uVar10" (identifier "uVar13") (= "=") (identifier "uVar10")) (; ";")) (if_statement "if (uVar6 + 1 == uVar10) {\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }" (if "if") (parenthesized_expression "(uVar6 + 1 == uVar10)" (( "(") (binary_expression "uVar6 + 1 == uVar10" (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1")) (== "==") (identifier "uVar10")) () ")")) (compound_statement "{\n                uVar13 = uVar6 + 2;\n                if (uVar5 < uVar13) goto LAB_00084288;\n                if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }\n              }" ({ "{") (expression_statement "uVar13 = uVar6 + 2;" (assignment_expression "uVar13 = uVar6 + 2" (identifier "uVar13") (= "=") (binary_expression "uVar6 + 2" (identifier "uVar6") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (uVar5 < uVar13) goto LAB_00084288;" (if "if") (parenthesized_expression "(uVar5 < uVar13)" (( "(") (binary_expression "uVar5 < uVar13" (identifier "uVar5") (< "<") (identifier "uVar13")) () ")")) (goto_statement "goto LAB_00084288;" (goto "goto") (statement_identifier "LAB_00084288") (; ";"))) (if_statement "if (uVar13 == uVar10) {\n                  do {\n                    \n                  } while( true );\n                }" (if "if") (parenthesized_expression "(uVar13 == uVar10)" (( "(") (binary_expression "uVar13 == uVar10" (identifier "uVar13") (== "==") (identifier "uVar10")) () ")")) (compound_statement "{\n                  do {\n                    \n                  } while( true );\n                }" ({ "{") (do_statement "do {\n                    \n                  } while( true );" (do "do") (compound_statement "{\n                    \n                  }" ({ "{") (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);" (assignment_expression "iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0)" (identifier "iVar12") (= "=") (call_expression "(**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0)" (parenthesized_expression "(**(code **)(local_40 + 200))" (( "(") (pointer_expression "**(code **)(local_40 + 200)" (* "*") (pointer_expression "*(code **)(local_40 + 200)" (* "*") (cast_expression "(code **)(local_40 + 200)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_40 + 200)" (( "(") (binary_expression "local_40 + 200" (identifier "local_40") (+ "+") (number_literal "200")) () ")"))))) () ")")) (argument_list "(local_40,uVar13,&local_2c,0)" (( "(") (identifier "local_40") (, ",") (identifier "uVar13") (, ",") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar12 != 0) break;" (if "if") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar12 = FUN_00076180();" (assignment_expression "iVar12 = FUN_00076180()" (identifier "iVar12") (= "=") (call_expression "FUN_00076180()" (identifier "FUN_00076180") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (local_2c == 0) {\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }" (if "if") (parenthesized_expression "(local_2c == 0)" (( "(") (binary_expression "local_2c == 0" (identifier "local_2c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                uVar10 = uVar13 + 1;\n                if (iVar12 != 0) break;\n                goto LAB_00084096;\n              }" ({ "{") (expression_statement "uVar10 = uVar13 + 1;" (assignment_expression "uVar10 = uVar13 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar13 + 1" (identifier "uVar13") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar12 != 0) break;" (if "if") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (goto_statement "goto LAB_00084096;" (goto "goto") (statement_identifier "LAB_00084096") (; ";")) (} "}"))) (expression_statement "uVar10 = uVar13 + 1;" (assignment_expression "uVar10 = uVar13 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar13 + 1" (identifier "uVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0001f280();" (call_expression "FUN_0001f280()" (identifier "FUN_0001f280") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (; ";"))) (} "}")) (else_clause "else {\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }" (else "else") (compound_statement "{\n            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;\n            iVar12 = *(int *)(local_40 + 0x28);\n            if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }\n          }" ({ "{") (expression_statement "*(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;" (assignment_expression "*(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c" (pointer_expression "*(uint *)(local_40 + 0x18)" (* "*") (cast_expression "(uint *)(local_40 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x18)" (( "(") (binary_expression "local_40 + 0x18" (identifier "local_40") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "((int)local_58 / (int)local_4c) * local_5c" (parenthesized_expression "((int)local_58 / (int)local_4c)" (( "(") (binary_expression "(int)local_58 / (int)local_4c" (cast_expression "(int)local_58" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_58")) (/ "/") (cast_expression "(int)local_4c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_4c"))) () ")")) (* "*") (identifier "local_5c"))) (; ";")) (expression_statement "iVar12 = *(int *)(local_40 + 0x28);" (assignment_expression "iVar12 = *(int *)(local_40 + 0x28)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(local_40 + 0x28)" (* "*") (cast_expression "(int *)(local_40 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x28)" (( "(") (binary_expression "local_40 + 0x28" (identifier "local_40") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (iVar12 == 0) {\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }\nLAB_00084446:\n              iVar12 = 10;\n              goto LAB_00083fad;\n            }" ({ "{") (if_statement "if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }" (if "if") (parenthesized_expression "((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0))" (( "(") (binary_expression "(DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)" (parenthesized_expression "(DAT_00106454 == (code *)0x0)" (( "(") (binary_expression "DAT_00106454 == (code *)0x0" (identifier "DAT_00106454") (== "==") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(iVar12 = (*DAT_00106454)(400), iVar12 == 0)" (( "(") (comma_expression "iVar12 = (*DAT_00106454)(400), iVar12 == 0" (assignment_expression "iVar12 = (*DAT_00106454)(400)" (identifier "iVar12") (= "=") (call_expression "(*DAT_00106454)(400)" (parenthesized_expression "(*DAT_00106454)" (( "(") (pointer_expression "*DAT_00106454" (* "*") (identifier "DAT_00106454")) () ")")) (argument_list "(400)" (( "(") (number_literal "400") () ")")))) (, ",") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n                if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }\n                goto LAB_00084250;\n              }" ({ "{") (if_statement "if (2 < *(byte *)(local_40 + 0x10)) {\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }" (if "if") (parenthesized_expression "(2 < *(byte *)(local_40 + 0x10))" (( "(") (binary_expression "2 < *(byte *)(local_40 + 0x10)" (number_literal "2") (< "<") (pointer_expression "*(byte *)(local_40 + 0x10)" (* "*") (cast_expression "(byte *)(local_40 + 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x10)" (( "(") (binary_expression "local_40 + 0x10" (identifier "local_40") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (compound_statement "{\n                  iVar12 = FUN_00082f70();\n                  goto LAB_00084248;\n                }" ({ "{") (expression_statement "iVar12 = FUN_00082f70();" (assignment_expression "iVar12 = FUN_00082f70()" (identifier "iVar12") (= "=") (call_expression "FUN_00082f70()" (identifier "FUN_00082f70") (argument_list "()" (( "(") () ")")))) (; ";")) (goto_statement "goto LAB_00084248;" (goto "goto") (statement_identifier "LAB_00084248") (; ";")) (} "}"))) (goto_statement "goto LAB_00084250;" (goto "goto") (statement_identifier "LAB_00084250") (; ";")) (} "}"))) (labeled_statement "LAB_00084446:\n              iVar12 = 10;" (statement_identifier "LAB_00084446") (: ":") (expression_statement "iVar12 = 10;" (assignment_expression "iVar12 = 10" (identifier "iVar12") (= "=") (number_literal "10")) (; ";"))) (goto_statement "goto LAB_00083fad;" (goto "goto") (statement_identifier "LAB_00083fad") (; ";")) (} "}"))) (} "}")))) (} "}"))) (} "}"))) (goto_statement "goto LAB_000840d9;" (goto "goto") (statement_identifier "LAB_000840d9") (; ";")) (} "}")))) (labeled_statement "LAB_00083f72:\n    if (iVar12 != 0) goto LAB_00083fca;" (statement_identifier "LAB_00083f72") (: ":") (if_statement "if (iVar12 != 0) goto LAB_00083fca;" (if "if") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00083fca;" (goto "goto") (statement_identifier "LAB_00083fca") (; ";")))) (expression_statement "uVar10 = param_1[4];" (assignment_expression "uVar10 = param_1[4]" (identifier "uVar10") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (labeled_statement "LAB_00083f79:\n    param_1[9] = local_64;" (statement_identifier "LAB_00083f79") (: ":") (expression_statement "param_1[9] = local_64;" (assignment_expression "param_1[9] = local_64" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "local_64")) (; ";"))) (expression_statement "param_1[8] = (local_64 + 1) - uVar10;" (assignment_expression "param_1[8] = (local_64 + 1) - uVar10" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (binary_expression "(local_64 + 1) - uVar10" (parenthesized_expression "(local_64 + 1)" (( "(") (binary_expression "local_64 + 1" (identifier "local_64") (+ "+") (number_literal "1")) () ")")) (- "-") (identifier "uVar10"))) (; ";")) (if_statement "if (local_64 < uVar10) goto LAB_00083fd3;" (if "if") (parenthesized_expression "(local_64 < uVar10)" (( "(") (binary_expression "local_64 < uVar10" (identifier "local_64") (< "<") (identifier "uVar10")) () ")")) (goto_statement "goto LAB_00083fd3;" (goto "goto") (statement_identifier "LAB_00083fd3") (; ";"))) (if_statement "if (param_1[10] == 0) {\n      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 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      iVar12 = **(int **)(param_1[6] + 4);\n      param_1[0xb] = *(int *)(iVar12 + 0x58);\n      *(int **)(iVar12 + 0x58) = param_1;\n      param_1[10] = 1;\n    }" ({ "{") (expression_statement "iVar12 = **(int **)(param_1[6] + 4);" (assignment_expression "iVar12 = **(int **)(param_1[6] + 4)" (identifier "iVar12") (= "=") (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 *)(iVar12 + 0x58);" (assignment_expression "param_1[0xb] = *(int *)(iVar12 + 0x58)" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (pointer_expression "*(int *)(iVar12 + 0x58)" (* "*") (cast_expression "(int *)(iVar12 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x58)" (( "(") (binary_expression "iVar12 + 0x58" (identifier "iVar12") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "*(int **)(iVar12 + 0x58) = param_1;" (assignment_expression "*(int **)(iVar12 + 0x58) = param_1" (pointer_expression "*(int **)(iVar12 + 0x58)" (* "*") (cast_expression "(int **)(iVar12 + 0x58)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + 0x58)" (( "(") (binary_expression "iVar12 + 0x58" (identifier "iVar12") (+ "+") (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 "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00083fad:\n    if (local_50 != 0) goto LAB_00083fb9;" (statement_identifier "LAB_00083fad") (: ":") (if_statement "if (local_50 != 0) goto LAB_00083fb9;" (if "if") (parenthesized_expression "(local_50 != 0)" (( "(") (binary_expression "local_50 != 0" (identifier "local_50") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00083fb9;" (goto "goto") (statement_identifier "LAB_00083fb9") (; ";")))) (goto_statement "goto LAB_00083d18;" (goto "goto") (statement_identifier "LAB_00083d18") (; ";")) (} "}"))) (expression_statement "sqlite3_mutex_enter(*(undefined4 *)(*param_1 + 0xc));" (call_expression "sqlite3_mutex_enter(*(undefined4 *)(*param_1 + 0xc))" (identifier "sqlite3_mutex_enter") (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 "iVar12 = param_1[7];" (assignment_expression "iVar12 = param_1[7]" (identifier "iVar12") (= "=") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if ((iVar12 - 5U < 2) || (iVar12 == 0)) {\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if ((*param_1 != 0) && ((char)piVar7[5] == '\x02')) {\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }\n    if (*(char *)(iVar9 + 8) == '\0') goto LAB_00083dad;\nLAB_00083c9d:\n    local_50 = param_1[3];\n    if (local_50 == 0) {\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }\n    local_50 = 0;\n    uVar10 = local_5c;\n    goto LAB_00083cb8;\n  }" (if "if") (parenthesized_expression "((iVar12 - 5U < 2) || (iVar12 == 0))" (( "(") (binary_expression "(iVar12 - 5U < 2) || (iVar12 == 0)" (parenthesized_expression "(iVar12 - 5U < 2)" (( "(") (binary_expression "iVar12 - 5U < 2" (binary_expression "iVar12 - 5U" (identifier "iVar12") (- "-") (number_literal "5U")) (< "<") (number_literal "2")) () ")")) (|| "||") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    iVar9 = param_1[6];\n    piVar3 = *(int **)(param_1[1] + 4);\n    piVar7 = *(int **)(iVar9 + 4);\n    local_5c = *piVar3;\n    iVar11 = *piVar7;\n    if ((*param_1 != 0) && ((char)piVar7[5] == '\x02')) {\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }\n    if (*(char *)(iVar9 + 8) == '\0') goto LAB_00083dad;\nLAB_00083c9d:\n    local_50 = param_1[3];\n    if (local_50 == 0) {\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }\n    local_50 = 0;\n    uVar10 = local_5c;\n    goto LAB_00083cb8;\n  }" ({ "{") (expression_statement "iVar9 = param_1[6];" (assignment_expression "iVar9 = param_1[6]" (identifier "iVar9") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "piVar3 = *(int **)(param_1[1] + 4);" (assignment_expression "piVar3 = *(int **)(param_1[1] + 4)" (identifier "piVar3") (= "=") (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 "piVar7 = *(int **)(iVar9 + 4);" (assignment_expression "piVar7 = *(int **)(iVar9 + 4)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(iVar9 + 4)" (* "*") (cast_expression "(int **)(iVar9 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar9 + 4)" (( "(") (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "local_5c = *piVar3;" (assignment_expression "local_5c = *piVar3" (identifier "local_5c") (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "iVar11 = *piVar7;" (assignment_expression "iVar11 = *piVar7" (identifier "iVar11") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (if_statement "if ((*param_1 != 0) && ((char)piVar7[5] == '\x02')) {\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }" (if "if") (parenthesized_expression "((*param_1 != 0) && ((char)piVar7[5] == '\x02'))" (( "(") (binary_expression "(*param_1 != 0) && ((char)piVar7[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)piVar7[5] == '\x02')" (( "(") (binary_expression "(char)piVar7[5] == '\x02'" (cast_expression "(char)piVar7[5]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "piVar7[5]" (identifier "piVar7") ([ "[") (number_literal "5") (] "]"))) (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      local_50 = 0;\n      iVar12 = 5;\n      local_40 = local_5c;\n      goto LAB_00083e6b;\n    }" ({ "{") (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar12 = 5;" (assignment_expression "iVar12 = 5" (identifier "iVar12") (= "=") (number_literal "5")) (; ";")) (expression_statement "local_40 = local_5c;" (assignment_expression "local_40 = local_5c" (identifier "local_40") (= "=") (identifier "local_5c")) (; ";")) (goto_statement "goto LAB_00083e6b;" (goto "goto") (statement_identifier "LAB_00083e6b") (; ";")) (} "}"))) (if_statement "if (*(char *)(iVar9 + 8) == '\0') goto LAB_00083dad;" (if "if") (parenthesized_expression "(*(char *)(iVar9 + 8) == '\0')" (( "(") (binary_expression "*(char *)(iVar9 + 8) == '\0'" (pointer_expression "*(char *)(iVar9 + 8)" (* "*") (cast_expression "(char *)(iVar9 + 8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 8)" (( "(") (binary_expression "iVar9 + 8" (identifier "iVar9") (+ "+") (number_literal "8")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00083dad;" (goto "goto") (statement_identifier "LAB_00083dad") (; ";"))) (labeled_statement "LAB_00083c9d:\n    local_50 = param_1[3];" (statement_identifier "LAB_00083c9d") (: ":") (expression_statement "local_50 = param_1[3];" (assignment_expression "local_50 = param_1[3]" (identifier "local_50") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";"))) (if_statement "if (local_50 == 0) {\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }" (if "if") (parenthesized_expression "(local_50 == 0)" (( "(") (binary_expression "local_50 == 0" (identifier "local_50") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00083e11:\n      iVar12 = FUN_0004ad20(0);\n      if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }\n      goto LAB_00083e51;\n    }" ({ "{") (labeled_statement "LAB_00083e11:\n      iVar12 = FUN_0004ad20(0);" (statement_identifier "LAB_00083e11") (: ":") (expression_statement "iVar12 = FUN_0004ad20(0);" (assignment_expression "iVar12 = FUN_0004ad20(0)" (identifier "iVar12") (= "=") (call_expression "FUN_0004ad20(0)" (identifier "FUN_0004ad20") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";"))) (if_statement "if (iVar12 != 7) {\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }" (if "if") (parenthesized_expression "(iVar12 != 7)" (( "(") (binary_expression "iVar12 != 7" (identifier "iVar12") (!= "!=") (number_literal "7")) () ")")) (compound_statement "{\n        iVar4 = param_1[1];\n        goto LAB_00083e2f;\n      }" ({ "{") (expression_statement "iVar4 = param_1[1];" (assignment_expression "iVar4 = param_1[1]" (identifier "iVar4") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (goto_statement "goto LAB_00083e2f;" (goto "goto") (statement_identifier "LAB_00083e2f") (; ";")) (} "}"))) (goto_statement "goto LAB_00083e51;" (goto "goto") (statement_identifier "LAB_00083e51") (; ";")) (} "}"))) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar10 = local_5c;" (assignment_expression "uVar10 = local_5c" (identifier "uVar10") (= "=") (identifier "local_5c")) (; ";")) (goto_statement "goto LAB_00083cb8;" (goto "goto") (statement_identifier "LAB_00083cb8") (; ";")) (} "}"))) (goto_statement "goto LAB_00083d1b;" (goto "goto") (statement_identifier "LAB_00083d1b") (; ";")) (while_statement "while( true ) {\n    bVar14 = CARRY4(local_34,local_58);\n    local_34 = local_34 + local_58;\n    bVar2 = 1;\n    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14;\n    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar2 = 0;\n    }\n    if (!(bool)(iVar12 == 0 & bVar2)) break;\nLAB_00084480:\n    local_2c = 0;\n    uVar15 = 0;\n    piVar7 = &local_2c;\n    iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f);\n    iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15);\n    if (iVar12 == 0) {\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    bVar14 = CARRY4(local_34,local_58);\n    local_34 = local_34 + local_58;\n    bVar2 = 1;\n    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14;\n    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar2 = 0;\n    }\n    if (!(bool)(iVar12 == 0 & bVar2)) break;\nLAB_00084480:\n    local_2c = 0;\n    uVar15 = 0;\n    piVar7 = &local_2c;\n    iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f);\n    iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15);\n    if (iVar12 == 0) {\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }\n  }" ({ "{") (expression_statement "bVar14 = CARRY4(local_34,local_58);" (assignment_expression "bVar14 = CARRY4(local_34,local_58)" (identifier "bVar14") (= "=") (call_expression "CARRY4(local_34,local_58)" (identifier "CARRY4") (argument_list "(local_34,local_58)" (( "(") (identifier "local_34") (, ",") (identifier "local_58") () ")")))) (; ";")) (expression_statement "local_34 = local_34 + local_58;" (assignment_expression "local_34 = local_34 + local_58" (identifier "local_34") (= "=") (binary_expression "local_34 + local_58" (identifier "local_34") (+ "+") (identifier "local_58"))) (; ";")) (expression_statement "bVar2 = 1;" (assignment_expression "bVar2 = 1" (identifier "bVar2") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14;" (assignment_expression "local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14" (identifier "local_30") (= "=") (binary_expression "local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14" (binary_expression "local_30 + ((int)local_58 >> 0x1f)" (identifier "local_30") (+ "+") (parenthesized_expression "((int)local_58 >> 0x1f)" (( "(") (binary_expression "(int)local_58 >> 0x1f" (cast_expression "(int)local_58" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_58")) (>> ">>") (number_literal "0x1f")) () ")"))) (+ "+") (cast_expression "(uint)bVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar14")))) (; ";")) (if_statement "if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {\n      bVar2 = 0;\n    }" (if "if") (parenthesized_expression "((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))" (( "(") (binary_expression "(local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))" (parenthesized_expression "(local_54 <= local_30)" (( "(") (binary_expression "local_54 <= local_30" (identifier "local_54") (<= "<=") (identifier "local_30")) () ")")) (&& "&&") (parenthesized_expression "((local_54 < local_30 || (local_4c <= local_34)))" (( "(") (parenthesized_expression "(local_54 < local_30 || (local_4c <= local_34))" (( "(") (binary_expression "local_54 < local_30 || (local_4c <= local_34)" (binary_expression "local_54 < local_30" (identifier "local_54") (< "<") (identifier "local_30")) (|| "||") (parenthesized_expression "(local_4c <= local_34)" (( "(") (binary_expression "local_4c <= local_34" (identifier "local_4c") (<= "<=") (identifier "local_34")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      bVar2 = 0;\n    }" ({ "{") (expression_statement "bVar2 = 0;" (assignment_expression "bVar2 = 0" (identifier "bVar2") (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if (!(bool)(iVar12 == 0 & bVar2)) break;" (if "if") (parenthesized_expression "(!(bool)(iVar12 == 0 & bVar2))" (( "(") (unary_expression "!(bool)(iVar12 == 0 & bVar2)" (! "!") (cast_expression "(bool)(iVar12 == 0 & bVar2)" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (parenthesized_expression "(iVar12 == 0 & bVar2)" (( "(") (binary_expression "iVar12 == 0 & bVar2" (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) (& "&") (identifier "bVar2")) () ")")))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00084480:\n    local_2c = 0;" (statement_identifier "LAB_00084480") (: ":") (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";"))) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar7 = &local_2c;" (assignment_expression "piVar7 = &local_2c" (identifier "piVar7") (= "=") (pointer_expression "&local_2c" (& "&") (identifier "local_2c"))) (; ";")) (expression_statement "iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f);" (assignment_expression "iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f)" (identifier "iVar12") (= "=") (call_expression "FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f)" (identifier "FUN_000d0ac0") (argument_list "(local_34,local_30,local_58,(int)local_58 >> 0x1f)" (( "(") (identifier "local_34") (, ",") (identifier "local_30") (, ",") (identifier "local_58") (, ",") (binary_expression "(int)local_58 >> 0x1f" (cast_expression "(int)local_58" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_58")) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15);" (assignment_expression "iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15)" (identifier "iVar12") (= "=") (call_expression "(**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15)" (parenthesized_expression "(**(code **)(iVar11 + 200))" (( "(") (pointer_expression "**(code **)(iVar11 + 200)" (* "*") (pointer_expression "*(code **)(iVar11 + 200)" (* "*") (cast_expression "(code **)(iVar11 + 200)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar11 + 200)" (( "(") (binary_expression "iVar11 + 200" (identifier "iVar11") (+ "+") (number_literal "200")) () ")"))))) () ")")) (argument_list "(iVar11,iVar12 + 1,piVar7,uVar15)" (( "(") (identifier "iVar11") (, ",") (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1")) (, ",") (identifier "piVar7") (, ",") (identifier "uVar15") () ")")))) (; ";")) (if_statement "if (iVar12 == 0) {\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }\n    else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);\n      if (local_2c != 0) goto LAB_000844e2;\n    }" ({ "{") (expression_statement "iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);" (assignment_expression "iVar12 = (**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30)" (identifier "iVar12") (= "=") (call_expression "(**(code **)(*piVar3 + 0xc))\n                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30)" (parenthesized_expression "(**(code **)(*piVar3 + 0xc))" (( "(") (pointer_expression "**(code **)(*piVar3 + 0xc)" (* "*") (pointer_expression "*(code **)(*piVar3 + 0xc)" (* "*") (cast_expression "(code **)(*piVar3 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar3 + 0xc)" (( "(") (binary_expression "*piVar3 + 0xc" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30)" (( "(") (identifier "piVar3") (, ",") (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_58") (, ",") (identifier "local_34") (, ",") (identifier "local_30") () ")")))) (; ";")) (if_statement "if (local_2c != 0) goto LAB_000844e2;" (if "if") (parenthesized_expression "(local_2c != 0)" (( "(") (binary_expression "local_2c != 0" (identifier "local_2c") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000844e2;" (goto "goto") (statement_identifier "LAB_000844e2") (; ";"))) (} "}")) (else_clause "else {\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }" (else "else") (compound_statement "{\n      if (local_2c == 0) goto LAB_000840d9;\nLAB_000844e2:\n      FUN_0001f280();\n    }" ({ "{") (if_statement "if (local_2c == 0) goto LAB_000840d9;" (if "if") (parenthesized_expression "(local_2c == 0)" (( "(") (binary_expression "local_2c == 0" (identifier "local_2c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000840d9;" (goto "goto") (statement_identifier "LAB_000840d9") (; ";"))) (labeled_statement "LAB_000844e2:\n      FUN_0001f280();" (statement_identifier "LAB_000844e2") (: ":") (expression_statement "FUN_0001f280();" (call_expression "FUN_0001f280()" (identifier "FUN_0001f280") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}")))) (} "}"))) (labeled_statement "LAB_00084344:\n  if (iVar12 == 0) {\nLAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);\n    if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }" (statement_identifier "LAB_00084344") (: ":") (if_statement "if (iVar12 == 0) {\nLAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);\n    if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);\n    if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }\n  }" ({ "{") (labeled_statement "LAB_0008434c:\n    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);" (statement_identifier "LAB_0008434c") (: ":") (expression_statement "iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);" (assignment_expression "iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c)" (identifier "iVar12") (= "=") (call_expression "(**(code **)(*piVar3 + 0x18))(piVar3,&local_2c)" (parenthesized_expression "(**(code **)(*piVar3 + 0x18))" (( "(") (pointer_expression "**(code **)(*piVar3 + 0x18)" (* "*") (pointer_expression "*(code **)(*piVar3 + 0x18)" (* "*") (cast_expression "(code **)(*piVar3 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar3 + 0x18)" (( "(") (binary_expression "*piVar3 + 0x18" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(piVar3,&local_2c)" (( "(") (identifier "piVar3") (, ",") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) () ")")))) (; ";"))) (if_statement "if ((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }" (if "if") (parenthesized_expression "((iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0))))" (( "(") (binary_expression "(iVar12 == 0) &&\n       ((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))" (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))" (( "(") (parenthesized_expression "(CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0))" (( "(") (binary_expression "CONCAT44(local_28,local_2c) <= lVar1 ||\n        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)" (binary_expression "CONCAT44(local_28,local_2c) <= lVar1" (call_expression "CONCAT44(local_28,local_2c)" (identifier "CONCAT44") (argument_list "(local_28,local_2c)" (( "(") (identifier "local_28") (, ",") (identifier "local_2c") () ")"))) (<= "<=") (identifier "lVar1")) (|| "||") (parenthesized_expression "(iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)" (( "(") (comma_expression "iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0" (assignment_expression "iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1)" (identifier "iVar12") (= "=") (call_expression "(**(code **)(*piVar3 + 0x10))(piVar3,lVar1)" (parenthesized_expression "(**(code **)(*piVar3 + 0x10))" (( "(") (pointer_expression "**(code **)(*piVar3 + 0x10)" (* "*") (pointer_expression "*(code **)(*piVar3 + 0x10)" (* "*") (cast_expression "(code **)(*piVar3 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar3 + 0x10)" (( "(") (binary_expression "*piVar3 + 0x10" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(piVar3,lVar1)" (( "(") (identifier "piVar3") (, ",") (identifier "lVar1") () ")")))) (, ",") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      iVar12 = FUN_000249d0();\nLAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }\n    }" ({ "{") (expression_statement "iVar12 = FUN_000249d0();" (assignment_expression "iVar12 = FUN_000249d0()" (identifier "iVar12") (= "=") (call_expression "FUN_000249d0()" (identifier "FUN_000249d0") (argument_list "()" (( "(") () ")")))) (; ";")) (labeled_statement "LAB_00084248:\n      if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }" (statement_identifier "LAB_00084248") (: ":") (if_statement "if (iVar12 == 0) {\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }\n      }" ({ "{") (labeled_statement "LAB_00084250:\n        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }" (statement_identifier "LAB_00084250") (: ":") (if_statement "if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }" (if "if") (parenthesized_expression "((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0))" (( "(") (binary_expression "(*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)" (parenthesized_expression "(*(char *)(param_1[1] + 8) == '\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 "(iVar12 = FUN_00080560(), iVar12 == 0)" (( "(") (comma_expression "iVar12 = FUN_00080560(), iVar12 == 0" (assignment_expression "iVar12 = FUN_00080560()" (identifier "iVar12") (= "=") (call_expression "FUN_00080560()" (identifier "FUN_00080560") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n          iVar12 = 0x65;\n          goto LAB_00083fad;\n        }" ({ "{") (expression_statement "iVar12 = 0x65;" (assignment_expression "iVar12 = 0x65" (identifier "iVar12") (= "=") (number_literal "0x65")) (; ";")) (goto_statement "goto LAB_00083fad;" (goto "goto") (statement_identifier "LAB_00083fad") (; ";")) (} "}")))) (} "}")))) (} "}"))) (} "}")))) (labeled_statement "LAB_000840d9:\n  if (local_50 != 0) {\nLAB_00083fb9:\n    iVar9 = param_1[6];\nLAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);\n    if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar8 != '\0') {\n      FUN_00080560();\n    }\n  }" (statement_identifier "LAB_000840d9") (: ":") (if_statement "if (local_50 != 0) {\nLAB_00083fb9:\n    iVar9 = param_1[6];\nLAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);\n    if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar8 != '\0') {\n      FUN_00080560();\n    }\n  }" (if "if") (parenthesized_expression "(local_50 != 0)" (( "(") (binary_expression "local_50 != 0" (identifier "local_50") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00083fb9:\n    iVar9 = param_1[6];\nLAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);\n    if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }\n    if (cVar8 != '\0') {\n      FUN_00080560();\n    }\n  }" ({ "{") (labeled_statement "LAB_00083fb9:\n    iVar9 = param_1[6];" (statement_identifier "LAB_00083fb9") (: ":") (expression_statement "iVar9 = param_1[6];" (assignment_expression "iVar9 = param_1[6]" (identifier "iVar9") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";"))) (labeled_statement "LAB_00083cf5:\n    cVar8 = *(char *)(iVar9 + 8);" (statement_identifier "LAB_00083cf5") (: ":") (expression_statement "cVar8 = *(char *)(iVar9 + 8);" (assignment_expression "cVar8 = *(char *)(iVar9 + 8)" (identifier "cVar8") (= "=") (pointer_expression "*(char *)(iVar9 + 8)" (* "*") (cast_expression "(char *)(iVar9 + 8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 8)" (( "(") (binary_expression "iVar9 + 8" (identifier "iVar9") (+ "+") (number_literal "8")) () ")"))))) (; ";"))) (if_statement "if (cVar8 == '\x02') {\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }" (if "if") (parenthesized_expression "(cVar8 == '\x02')" (( "(") (binary_expression "cVar8 == '\x02'" (identifier "cVar8") (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n      FUN_000835d0();\n      cVar8 = *(char *)(param_1[6] + 8);\n    }" ({ "{") (expression_statement "FUN_000835d0();" (call_expression "FUN_000835d0()" (identifier "FUN_000835d0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "cVar8 = *(char *)(param_1[6] + 8);" (assignment_expression "cVar8 = *(char *)(param_1[6] + 8)" (identifier "cVar8") (= "=") (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 (cVar8 != '\0') {\n      FUN_00080560();\n    }" (if "if") (parenthesized_expression "(cVar8 != '\0')" (( "(") (binary_expression "cVar8 != '\0'" (identifier "cVar8") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      FUN_00080560();\n    }" ({ "{") (expression_statement "FUN_00080560();" (call_expression "FUN_00080560()" (identifier "FUN_00080560") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (iVar12 == 0xc0a) {\n    iVar12 = 7;\n  }" (if "if") (parenthesized_expression "(iVar12 == 0xc0a)" (( "(") (binary_expression "iVar12 == 0xc0a" (identifier "iVar12") (== "==") (number_literal "0xc0a")) () ")")) (compound_statement "{\n    iVar12 = 7;\n  }" ({ "{") (expression_statement "iVar12 = 7;" (assignment_expression "iVar12 = 7" (identifier "iVar12") (= "=") (number_literal "7")) (; ";")) (} "}"))) (labeled_statement "LAB_00083d18:\n  param_1[7] = iVar12;" (statement_identifier "LAB_00083d18") (: ":") (expression_statement "param_1[7] = iVar12;" (assignment_expression "param_1[7] = iVar12" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar12")) (; ";"))) (labeled_statement "LAB_00083d1b:\n  if (*param_1 != 0) {\n    sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc));\n  }" (statement_identifier "LAB_00083d1b") (: ":") (if_statement "if (*param_1 != 0) {\n    sqlite3_mutex_leave(*(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    sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc));\n  }" ({ "{") (expression_statement "sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc));" (call_expression "sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc))" (identifier "sqlite3_mutex_leave") (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_00083d33:\n  if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar3 = (int *)(param_1[6] + 0xc);\n    *piVar3 = *piVar3 + -1;\n    if (*piVar3 == 0) {\n      FUN_00024a20();\n    }\n  }" (statement_identifier "LAB_00083d33") (: ":") (if_statement "if (*(char *)(param_1[6] + 9) != '\0') {\n    piVar3 = (int *)(param_1[6] + 0xc);\n    *piVar3 = *piVar3 + -1;\n    if (*piVar3 == 0) {\n      FUN_00024a20();\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    piVar3 = (int *)(param_1[6] + 0xc);\n    *piVar3 = *piVar3 + -1;\n    if (*piVar3 == 0) {\n      FUN_00024a20();\n    }\n  }" ({ "{") (expression_statement "piVar3 = (int *)(param_1[6] + 0xc);" (assignment_expression "piVar3 = (int *)(param_1[6] + 0xc)" (identifier "piVar3") (= "=") (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 "*piVar3 = *piVar3 + -1;" (assignment_expression "*piVar3 = *piVar3 + -1" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (binary_expression "*piVar3 + -1" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (*piVar3 == 0) {\n      FUN_00024a20();\n    }" (if "if") (parenthesized_expression "(*piVar3 == 0)" (( "(") (binary_expression "*piVar3 == 0" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_00024a20();\n    }" ({ "{") (expression_statement "FUN_00024a20();" (call_expression "FUN_00024a20()" (identifier "FUN_00024a20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "sqlite3_mutex_leave(*(undefined4 *)(param_1[5] + 0xc));" (call_expression "sqlite3_mutex_leave(*(undefined4 *)(param_1[5] + 0xc))" (identifier "sqlite3_mutex_leave") (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_000d1450();\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_000d1450();\n  }" ({ "{") (expression_statement "FUN_000d1450();" (call_expression "FUN_000d1450()" (identifier "FUN_000d1450") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return iVar12;" (return "return") (identifier "iVar12") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Removing unreachable block (ram,0x00084572) */
/* WARNING: Removing unreachable block (ram,0x0008437b) */
/* WARNING: Removing unreachable block (ram,0x00084309) */
/* WARNING: Unknown calling convention */

int function_1(type_1 *p,int var_8)

{
  int *piVar1;
  type_2 *psVar2;
  type_3 var_23;
  type_4 var_33;
  type_5 *pBVar5;
  type_6 *pBVar6;
  type_7 var_12;
  type_7 var_28;
  type_7 var_29;
  type_5 *pBVar10;
  type_8 var_38;
  type_6 *p_00;
  type_9 var_9;
  type_10 *pPVar13;
  int rc;
  type_10 *pPVar14;
  int var_4;
  type_7 var_16;
  int var_1;
  bool bVar17;
  type_11 **ppDVar18;
  int iVar19;
  type_1 *in_stack_ffffff94;
  type_7 var_10;
  type_10 *local_5c;
  type_12 var_7;
  int var_24;
  int var_11;
  type_12 var_6;
  type_10 *local_40;
  type_7 local_3c;
  int local_38;
  type_7 var_26;
  int var_25;
  type_11 *var_14;
  type_13 local_28;
  int var_42;
  type_13 uStack_14;
  
  uStack_14 = 0x83c09;
  var_42 = *(int *)(var_1 + 0x14);
  var_2(p->pSrcDb->mutex);
  if (p->pSrc->sharable != '\0') {
    var_3(p->pSrc);
  }
  if (p->pDestDb == (type_14 *)0x0) {
    var_4 = p->rc;
    if ((1 < var_4 - 5U) && (var_4 != 0)) goto LAB_00083d33;
    pBVar6 = p->pDest;
    p_00 = p->pSrc;
    pBVar5 = pBVar6->pBt;
    pBVar10 = p_00->pBt;
    local_5c = pBVar5->pPager;
    pPVar13 = pBVar10->pPager;
    if (p_00->inTrans != '\0') goto LAB_00083c9d;
LAB_00083dad:
    var_4 = var_5(p_00,0,(int *)0x0);
    if (var_4 == 0 && p->bDestLocked == 0) {
      pBVar6 = p->pDest;
      var_11 = 1;
      pBVar10 = p->pSrc->pBt;
      goto LAB_00083e11;
    }
    pBVar6 = p->pDest;
    if (var_4 != 0) {
      pBVar5 = pBVar6->pBt;
      var_11 = 1;
      local_40 = local_5c;
      local_5c = pBVar5->pPager;
      pBVar10 = p->pSrc->pBt;
      goto LAB_00083e6b;
    }
    var_11 = 1;
LAB_00083e2f:
    if (p->bDestLocked != 0) {
      p_00 = p->pSrc;
      pBVar5 = pBVar6->pBt;
      pBVar10 = p_00->pBt;
      pPVar14 = pBVar5->pPager;
LAB_00083cb8:
      var_6 = pBVar5->pageSize;
      var_7 = pBVar10->pageSize;
      var_10 = pBVar10->var_8;
      bVar17 = pPVar14->journalMode == '\x05';
      if (!bVar17) {
        local_40 = local_5c;
        var_4 = 0;
        goto LAB_00083e8d;
      }
      if (var_6 == var_7) {
        var_9 = p->iNext;
        if ((var_8 != 0) && (var_9 <= var_10)) {
          local_40 = local_5c;
          bVar17 = true;
          goto LAB_00083eae;
        }
        local_40 = local_5c;
        bVar17 = true;
        goto LAB_00083f79;
      }
      var_4 = 8;
      if (var_11 == 0) goto LAB_00083d18;
      goto LAB_00083cf5;
    }
    var_4 = var_5(pBVar6,2,(int *)&p->iDestSchema);
    if (var_4 == 0) {
      p_00 = p->pSrc;
      p->bDestLocked = 1;
      pBVar5 = p->pDest->pBt;
      pBVar10 = p_00->pBt;
      pPVar14 = pBVar5->pPager;
      goto LAB_00083cb8;
    }
LAB_00083e51:
    pBVar5 = p->pDest->pBt;
    pBVar10 = p->pSrc->pBt;
    local_40 = local_5c;
    local_5c = pBVar5->pPager;
LAB_00083e6b:
    var_6 = pBVar5->pageSize;
    var_7 = pBVar10->pageSize;
    bVar17 = local_5c->journalMode == '\x05';
    var_10 = pBVar10->var_8;
LAB_00083e8d:
    if ((var_8 != 0) && (var_9 = p->iNext, var_9 <= var_10)) {
      if (var_4 == 0) {
LAB_00083eae:
        var_16 = 0;
        var_12 = var_7;
        while( true ) {
          if ((type_7)var_22 / var_12 + 1 == var_9) {
            var_4 = 0;
          }
          else {
            iVar19 = 2;
            ppDVar18 = &var_14;
            var_4 = (*pPVar13->xGet)(pPVar13,var_9,&var_14,2);
            if ((var_4 == 0) &&
               (var_4 = var_13((type_1 *)var_14->pData,0,(type_8 *)ppDVar18,iVar19,
                                       in_stack_ffffff94), var_14 != (type_11 *)0x0)) {
              var_15(var_14);
            }
            var_9 = p->iNext;
          }
          var_9 = var_9 + 1;
          var_16 = var_16 + 1;
          p->iNext = var_9;
          if (((type_7)var_8 <= var_16) || (var_10 < var_9)) goto LAB_00083f72;
          if (var_4 != 0) break;
          var_12 = p->pSrc->pBt->pageSize;
        }
      }
LAB_00083fca:
      if (var_4 != 0x65) goto LAB_000840d9;
LAB_00083fd3:
      pBVar6 = p->pDest;
      local_5c = (type_10 *)var_10;
      if (var_10 == 0) {
        if (pBVar6->sharable != '\0') {
          var_3(pBVar6);
        }
        pBVar5 = pBVar6->pBt;
        pBVar5->var_8 = 0;
        var_4 = var_17(pBVar5);
        if (pBVar6->sharable != '\0') {
          piVar1 = &pBVar6->wantToLock;
          *piVar1 = *piVar1 + -1;
          if (*piVar1 == 0) {
            var_18(pBVar6);
          }
        }
        if ((var_4 != 0) && (var_4 != 0x65)) goto LAB_000840d9;
        pBVar6 = p->pDest;
        local_5c = (type_10 *)0x1;
      }
      var_4 = var_19(pBVar6,1,p->iDestSchema + 1);
      if (var_4 == 0) {
        if (p->pDestDb != (type_14 *)0x0) {
          var_20(p->pDestDb);
        }
        if ((!bVar17) || (var_4 = var_21(p->pDest,2), var_4 == 0)) {
          if ((int)var_7 < (int)var_6) {
            var_12 = (int)(((int)local_5c - 1U) + (int)var_6 / (int)var_7) /
                    ((int)var_6 / (int)var_7);
            var_16 = (type_7)var_22 / p->pDest->pBt->pageSize;
            if (var_16 + 1 == var_12) {
              var_12 = var_16;
            }
            var_23 = (type_3)(int)local_5c * (type_3)(int)var_7;
            psVar2 = local_40->fd;
            var_16 = local_40->dbSize;
LAB_00084096:
            do {
              if (var_16 < var_12) {
LAB_00084288:
                var_4 = local_40->errCode;
                if (var_4 == 0) {
                  if ((sqlite3Config.xTestCallback != (type_15 *)0x0) &&
                     (var_4 = (*sqlite3Config.xTestCallback)(400), var_4 != 0)) goto LAB_00084446;
                  local_3c = (type_7)var_23;
                  local_38 = (int)((type_16)var_23 >> 0x20);
                  if (local_40->eState < 3) {
                    var_6 = var_6 + var_22;
                    var_24 = (int)var_6 >> 0x1f;
                    if (var_23 < (int)var_6) {
                      var_6 = local_3c;
                      var_24 = local_38;
                    }
                    var_26 = var_22 + var_7;
                    var_25 = (int)var_26 >> 0x1f;
                    if ((var_24 <= var_25) && ((var_24 < var_25 || (var_6 <= var_26))))
                    goto LAB_0008434c;
                  }
                  else {
                    var_4 = var_27(local_40,(char *)0x0,1);
                    var_6 = var_6 + var_22;
                    var_24 = (int)var_6 >> 0x1f;
                    if (var_23 < (int)var_6) {
                      var_6 = local_3c;
                      var_24 = local_38;
                    }
                    var_26 = var_22 + var_7;
                    var_25 = (int)var_26 >> 0x1f;
                    if (((var_24 <= var_25) && ((var_24 < var_25 || (var_6 <= var_26)))
                        ) || (var_4 != 0)) goto LAB_00084344;
                  }
                  goto LAB_00084480;
                }
                break;
              }
              var_28 = (type_7)var_22 / p->pDest->pBt->pageSize;
              var_29 = var_12;
              if (var_28 + 1 == var_12) {
                var_29 = var_28 + 2;
                if (var_16 < var_29) goto LAB_00084288;
                if (var_29 == var_12) {
                  do {
                    /* WARNING: Do nothing block with infinite loop */
                  } while( true );
                }
              }
              var_4 = (*local_40->xGet)(local_40,var_29,&var_14,0);
              if (var_4 != 0) break;
              var_4 = var_30(var_14);
              if (var_14 == (type_11 *)0x0) {
                var_12 = var_29 + 1;
                if (var_4 != 0) break;
                goto LAB_00084096;
              }
              var_12 = var_29 + 1;
              var_15(var_14);
            } while (var_4 == 0);
          }
          else {
            local_40->dbSize = ((int)var_7 / (int)var_6) * (int)local_5c;
            var_4 = local_40->errCode;
            if (var_4 == 0) {
              if ((sqlite3Config.xTestCallback == (type_15 *)0x0) ||
                 (var_4 = (*sqlite3Config.xTestCallback)(400), var_4 == 0)) {
                if (2 < local_40->eState) {
                  var_4 = var_27(local_40,(char *)0x0,0);
                  goto LAB_00084248;
                }
                goto LAB_00084250;
              }
LAB_00084446:
              var_4 = 10;
              goto LAB_00083fad;
            }
          }
        }
      }
      goto LAB_000840d9;
    }
LAB_00083f72:
    if (var_4 != 0) goto LAB_00083fca;
    var_9 = p->iNext;
LAB_00083f79:
    p->nPagecount = var_10;
    p->nRemaining = (var_10 + 1) - var_9;
    if (var_10 < var_9) goto LAB_00083fd3;
    if (p->isAttached == 0) {
      pPVar13 = p->pSrc->pBt->pPager;
      p->pNext = pPVar13->pBackup;
      pPVar13->pBackup = p;
      p->isAttached = 1;
    }
    var_4 = 0;
LAB_00083fad:
    if (var_11 != 0) goto LAB_00083fb9;
    goto LAB_00083d18;
  }
  var_2(p->pDestDb->mutex);
  var_4 = p->rc;
  if ((var_4 - 5U < 2) || (var_4 == 0)) {
    pBVar6 = p->pDest;
    p_00 = p->pSrc;
    pBVar5 = pBVar6->pBt;
    pBVar10 = p_00->pBt;
    local_5c = pBVar5->pPager;
    pPVar13 = pBVar10->pPager;
    if ((p->pDestDb != (type_14 *)0x0) && (pBVar10->inTransaction == '\x02')) {
      var_11 = 0;
      var_4 = 5;
      local_40 = local_5c;
      goto LAB_00083e6b;
    }
    if (p_00->inTrans == '\0') goto LAB_00083dad;
LAB_00083c9d:
    var_11 = p->bDestLocked;
    if (var_11 == 0) {
LAB_00083e11:
      var_4 = var_31(pBVar6,pBVar10->pageSize,0,0);
      if (var_4 != 7) {
        pBVar6 = p->pDest;
        goto LAB_00083e2f;
      }
      goto LAB_00083e51;
    }
    var_11 = 0;
    pPVar14 = local_5c;
    goto LAB_00083cb8;
  }
  goto LAB_00083d1b;
  while( true ) {
    bVar17 = var_32(var_26,var_7);
    var_26 = var_26 + var_7;
    var_33 = 1;
    var_25 = var_25 + ((int)var_7 >> 0x1f) + (type_7)bVar17;
    if ((var_24 <= var_25) && ((var_24 < var_25 || (var_6 <= var_26)))) {
      var_33 = 0;
    }
    if (!(bool)(var_4 == 0 & var_33)) break;
LAB_00084480:
    var_14 = (type_11 *)0x0;
    iVar19 = 0;
    ppDVar18 = &var_14;
    var_4 = var_34(var_26,var_25,var_7,(int)var_7 >> 0x1f);
    var_4 = (*pPVar13->xGet)(pPVar13,var_4 + 1,ppDVar18,iVar19);
    if (var_4 == 0) {
      var_4 = (*psVar2->pMethods->xWrite)
                         (psVar2,var_14->pData,var_7,var_35(var_25,var_26));
      if (var_14 != (type_11 *)0x0) goto LAB_000844e2;
    }
    else {
      if (var_14 == (type_11 *)0x0) goto LAB_000840d9;
LAB_000844e2:
      var_15(var_14);
    }
  }
LAB_00084344:
  if (var_4 == 0) {
LAB_0008434c:
    var_4 = (*psVar2->pMethods->xFileSize)(psVar2,(type_17 *)&var_14);
    if ((var_4 == 0) &&
       ((var_35(local_28,var_14) <= var_23 ||
        (var_4 = (*psVar2->pMethods->xTruncate)(psVar2,var_23), var_4 == 0)))) {
      var_4 = var_36(local_40,(char *)0x0);
LAB_00084248:
      if (var_4 == 0) {
LAB_00084250:
        if ((p->pDest->inTrans == '\0') ||
           (var_4 = var_37(p->pDest,0), var_4 == 0)) {
          var_4 = 0x65;
          goto LAB_00083fad;
        }
      }
    }
  }
LAB_000840d9:
  if (var_11 != 0) {
LAB_00083fb9:
    p_00 = p->pSrc;
LAB_00083cf5:
    var_38 = p_00->inTrans;
    if (var_38 == '\x02') {
      var_39(p_00,(char *)0x0);
      p_00 = p->pSrc;
      var_38 = p_00->inTrans;
    }
    if (var_38 != '\0') {
      var_37(p_00,0);
    }
  }
  if (var_4 == 0xc0a) {
    var_4 = 7;
  }
LAB_00083d18:
  p->rc = var_4;
LAB_00083d1b:
  if (p->pDestDb != (type_14 *)0x0) {
    var_40(p->pDestDb->mutex);
  }
LAB_00083d33:
  pBVar6 = p->pSrc;
  if (pBVar6->sharable != '\0') {
    piVar1 = &pBVar6->wantToLock;
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      var_41((type_6 *)pBVar6->pBt,(type_6 *)&pBVar6->locked);
    }
  }
  var_40(p->pSrcDb->mutex);
  if (var_42 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_43();
  }
  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: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) 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: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (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: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (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: (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)))) (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))))) (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)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (identifier))) (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))))))) (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: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence))))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) 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: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (true))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (true))) (goto_statement label: (statement_identifier)))) (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: (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: (identifier))) (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: (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))))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (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: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (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: (parenthesized_expression (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: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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))))))))))) (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))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (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))) (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: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (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 (unary_expression argument: (identifier))) 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: (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: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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))))))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (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: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (number_literal)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) 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: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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: (identifier))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (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: (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: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier)))))) (goto_statement label: (statement_identifier)))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement) condition: (parenthesized_expression (true))))))) (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 (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (number_literal)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier))))))))))) (goto_statement label: (statement_identifier))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (labeled_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: (number_literal))) right: (identifier)))) (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))) (labeled_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: (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)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (number_literal))) (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: (identifier))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))))) 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: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (pointer_expression argument: (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: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))) 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: (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: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier))))))))))))) (labeled_statement label: (statement_identifier) (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))))) (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)))))))) (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)))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Removing unreachable block (ram,0x00084572) */
/* WARNING: Removing unreachable block (ram,0x0008437b) */
/* WARNING: Removing unreachable block (ram,0x00084309) */

int MASKED(int *param_1,uint param_2)

{
  longlong lVar1;
  byte bVar2;
  int *piVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  int *piVar7;
  char cVar8;
  int iVar9;
  uint uVar10;
  int iVar11;
  int iVar12;
  uint uVar13;
  int in_GS_OFFSET;
  bool bVar14;
  undefined4 uVar15;
  uint local_64;
  uint local_5c;
  uint local_58;
  int local_54;
  int local_50;
  uint local_4c;
  int local_40;
  uint local_3c;
  int local_38;
  uint local_34;
  int local_30;
  int local_2c;
  undefined4 local_28;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x83c09;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  sqlite3_mutex_enter(*(undefined4 *)(param_1[5] + 0xc));
  if (*(char *)(param_1[6] + 9) != '\0') {
    FUN_00024b20();
  }
  if (*param_1 == 0) {
    iVar12 = param_1[7];
    if ((1 < iVar12 - 5U) && (iVar12 != 0)) goto LAB_00083d33;
    iVar9 = param_1[6];
    piVar3 = *(int **)(param_1[1] + 4);
    piVar7 = *(int **)(iVar9 + 4);
    local_5c = *piVar3;
    iVar11 = *piVar7;
    if (*(char *)(iVar9 + 8) != '\0') goto LAB_00083c9d;
LAB_00083dad:
    iVar12 = FUN_00080d90();
    if (iVar12 == 0 && param_1[3] == 0) {
      local_50 = 1;
      goto LAB_00083e11;
    }
    iVar4 = param_1[1];
    if (iVar12 != 0) {
      piVar3 = *(int **)(iVar4 + 4);
      local_50 = 1;
      local_40 = local_5c;
      local_5c = *piVar3;
      piVar7 = *(int **)(param_1[6] + 4);
      goto LAB_00083e6b;
    }
    local_50 = 1;
LAB_00083e2f:
    if (param_1[3] != 0) {
      iVar9 = param_1[6];
      piVar3 = *(int **)(iVar4 + 4);
      piVar7 = *(int **)(iVar9 + 4);
      uVar10 = *piVar3;
LAB_00083cb8:
      local_4c = piVar3[9];
      local_58 = piVar7[9];
      local_64 = piVar7[0xc];
      bVar14 = *(char *)(uVar10 + 5) == '\x05';
      if (!bVar14) {
        local_40 = local_5c;
        iVar12 = 0;
        goto LAB_00083e8d;
      }
      if (local_4c == local_58) {
        uVar10 = param_1[4];
        if ((param_2 != 0) && (uVar10 <= local_64)) {
          local_40 = local_5c;
          bVar14 = true;
          goto LAB_00083eae;
        }
        local_40 = local_5c;
        bVar14 = true;
        goto LAB_00083f79;
      }
      iVar12 = 8;
      if (local_50 == 0) goto LAB_00083d18;
      goto LAB_00083cf5;
    }
    iVar12 = FUN_00080d90();
    if (iVar12 == 0) {
      iVar9 = param_1[6];
      param_1[3] = 1;
      piVar3 = *(int **)(param_1[1] + 4);
      piVar7 = *(int **)(iVar9 + 4);
      uVar10 = *piVar3;
      goto LAB_00083cb8;
    }
LAB_00083e51:
    piVar3 = *(int **)(param_1[1] + 4);
    piVar7 = *(int **)(param_1[6] + 4);
    local_40 = local_5c;
    local_5c = *piVar3;
LAB_00083e6b:
    local_4c = piVar3[9];
    local_58 = piVar7[9];
    bVar14 = *(char *)(local_5c + 5) == '\x05';
    local_64 = piVar7[0xc];
LAB_00083e8d:
    if ((param_2 != 0) && (uVar10 = param_1[4], uVar10 <= local_64)) {
      if (iVar12 == 0) {
LAB_00083eae:
        uVar13 = 0;
        uVar5 = local_58;
        while( true ) {
          if (DAT_00106358 / uVar5 + 1 == uVar10) {
            iVar12 = 0;
          }
          else {
            iVar12 = (**(code **)(iVar11 + 200))(iVar11,uVar10,&local_2c,2);
            if ((iVar12 == 0) &&
               (iVar12 = FUN_0007c390(*(undefined4 *)(local_2c + 4),0), local_2c != 0)) {
              FUN_0001f280();
            }
            uVar10 = param_1[4];
          }
          uVar10 = uVar10 + 1;
          uVar13 = uVar13 + 1;
          param_1[4] = uVar10;
          if ((param_2 <= uVar13) || (local_64 < uVar10)) goto LAB_00083f72;
          if (iVar12 != 0) break;
          uVar5 = *(uint *)(*(int *)(param_1[6] + 4) + 0x24);
        }
      }
LAB_00083fca:
      if (iVar12 != 0x65) goto LAB_000840d9;
LAB_00083fd3:
      iVar9 = param_1[1];
      local_5c = local_64;
      if (local_64 == 0) {
        if (*(char *)(iVar9 + 9) != '\0') {
          FUN_00024b20();
        }
        *(undefined4 *)(*(int *)(iVar9 + 4) + 0x30) = 0;
        iVar12 = FUN_000761e0();
        if (*(char *)(iVar9 + 9) != '\0') {
          piVar3 = (int *)(iVar9 + 0xc);
          *piVar3 = *piVar3 + -1;
          if (*piVar3 == 0) {
            FUN_00024b40();
          }
        }
        if ((iVar12 != 0) && (iVar12 != 0x65)) goto LAB_000840d9;
        local_5c = 1;
      }
      iVar12 = FUN_0007bde0();
      if (iVar12 == 0) {
        if (*param_1 != 0) {
          FUN_00057e80();
        }
        if ((!bVar14) || (iVar12 = FUN_00081680(), iVar12 == 0)) {
          if ((int)local_58 < (int)local_4c) {
            uVar10 = (int)((local_5c - 1) + (int)local_4c / (int)local_58) /
                     ((int)local_4c / (int)local_58);
            uVar5 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);
            if (uVar5 + 1 == uVar10) {
              uVar10 = uVar5;
            }
            lVar1 = (longlong)(int)local_5c * (longlong)(int)local_58;
            piVar3 = *(int **)(local_40 + 0x3c);
            uVar5 = *(uint *)(local_40 + 0x18);
LAB_00084096:
            do {
              if (uVar5 < uVar10) {
LAB_00084288:
                iVar12 = *(int *)(local_40 + 0x28);
                if (iVar12 == 0) {
                  if ((DAT_00106454 != (code *)0x0) && (iVar12 = (*DAT_00106454)(400), iVar12 != 0))
                  goto LAB_00084446;
                  local_3c = (uint)lVar1;
                  local_38 = (int)((ulonglong)lVar1 >> 0x20);
                  if (*(byte *)(local_40 + 0x10) < 3) {
                    local_4c = local_4c + DAT_00106358;
                    local_54 = (int)local_4c >> 0x1f;
                    if (lVar1 < (int)local_4c) {
                      local_4c = local_3c;
                      local_54 = local_38;
                    }
                    local_34 = DAT_00106358 + local_58;
                    local_30 = (int)local_34 >> 0x1f;
                    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34))))
                    goto LAB_0008434c;
                  }
                  else {
                    iVar12 = FUN_00082f70();
                    local_4c = local_4c + DAT_00106358;
                    local_54 = (int)local_4c >> 0x1f;
                    if (lVar1 < (int)local_4c) {
                      local_4c = local_3c;
                      local_54 = local_38;
                    }
                    local_34 = DAT_00106358 + local_58;
                    local_30 = (int)local_34 >> 0x1f;
                    if (((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))
                        ) || (iVar12 != 0)) goto LAB_00084344;
                  }
                  goto LAB_00084480;
                }
                break;
              }
              uVar6 = DAT_00106358 / *(uint *)(*(int *)(param_1[1] + 4) + 0x24);
              uVar13 = uVar10;
              if (uVar6 + 1 == uVar10) {
                uVar13 = uVar6 + 2;
                if (uVar5 < uVar13) goto LAB_00084288;
                if (uVar13 == uVar10) {
                  do {
                    /* WARNING: Do nothing block with infinite loop */
                  } while( true );
                }
              }
              iVar12 = (**(code **)(local_40 + 200))(local_40,uVar13,&local_2c,0);
              if (iVar12 != 0) break;
              iVar12 = FUN_00076180();
              if (local_2c == 0) {
                uVar10 = uVar13 + 1;
                if (iVar12 != 0) break;
                goto LAB_00084096;
              }
              uVar10 = uVar13 + 1;
              FUN_0001f280();
            } while (iVar12 == 0);
          }
          else {
            *(uint *)(local_40 + 0x18) = ((int)local_58 / (int)local_4c) * local_5c;
            iVar12 = *(int *)(local_40 + 0x28);
            if (iVar12 == 0) {
              if ((DAT_00106454 == (code *)0x0) || (iVar12 = (*DAT_00106454)(400), iVar12 == 0)) {
                if (2 < *(byte *)(local_40 + 0x10)) {
                  iVar12 = FUN_00082f70();
                  goto LAB_00084248;
                }
                goto LAB_00084250;
              }
LAB_00084446:
              iVar12 = 10;
              goto LAB_00083fad;
            }
          }
        }
      }
      goto LAB_000840d9;
    }
LAB_00083f72:
    if (iVar12 != 0) goto LAB_00083fca;
    uVar10 = param_1[4];
LAB_00083f79:
    param_1[9] = local_64;
    param_1[8] = (local_64 + 1) - uVar10;
    if (local_64 < uVar10) goto LAB_00083fd3;
    if (param_1[10] == 0) {
      iVar12 = **(int **)(param_1[6] + 4);
      param_1[0xb] = *(int *)(iVar12 + 0x58);
      *(int **)(iVar12 + 0x58) = param_1;
      param_1[10] = 1;
    }
    iVar12 = 0;
LAB_00083fad:
    if (local_50 != 0) goto LAB_00083fb9;
    goto LAB_00083d18;
  }
  sqlite3_mutex_enter(*(undefined4 *)(*param_1 + 0xc));
  iVar12 = param_1[7];
  if ((iVar12 - 5U < 2) || (iVar12 == 0)) {
    iVar9 = param_1[6];
    piVar3 = *(int **)(param_1[1] + 4);
    piVar7 = *(int **)(iVar9 + 4);
    local_5c = *piVar3;
    iVar11 = *piVar7;
    if ((*param_1 != 0) && ((char)piVar7[5] == '\x02')) {
      local_50 = 0;
      iVar12 = 5;
      local_40 = local_5c;
      goto LAB_00083e6b;
    }
    if (*(char *)(iVar9 + 8) == '\0') goto LAB_00083dad;
LAB_00083c9d:
    local_50 = param_1[3];
    if (local_50 == 0) {
LAB_00083e11:
      iVar12 = FUN_0004ad20(0);
      if (iVar12 != 7) {
        iVar4 = param_1[1];
        goto LAB_00083e2f;
      }
      goto LAB_00083e51;
    }
    local_50 = 0;
    uVar10 = local_5c;
    goto LAB_00083cb8;
  }
  goto LAB_00083d1b;
  while( true ) {
    bVar14 = CARRY4(local_34,local_58);
    local_34 = local_34 + local_58;
    bVar2 = 1;
    local_30 = local_30 + ((int)local_58 >> 0x1f) + (uint)bVar14;
    if ((local_54 <= local_30) && ((local_54 < local_30 || (local_4c <= local_34)))) {
      bVar2 = 0;
    }
    if (!(bool)(iVar12 == 0 & bVar2)) break;
LAB_00084480:
    local_2c = 0;
    uVar15 = 0;
    piVar7 = &local_2c;
    iVar12 = FUN_000d0ac0(local_34,local_30,local_58,(int)local_58 >> 0x1f);
    iVar12 = (**(code **)(iVar11 + 200))(iVar11,iVar12 + 1,piVar7,uVar15);
    if (iVar12 == 0) {
      iVar12 = (**(code **)(*piVar3 + 0xc))
                         (piVar3,*(undefined4 *)(local_2c + 4),local_58,local_34,local_30);
      if (local_2c != 0) goto LAB_000844e2;
    }
    else {
      if (local_2c == 0) goto LAB_000840d9;
LAB_000844e2:
      FUN_0001f280();
    }
  }
LAB_00084344:
  if (iVar12 == 0) {
LAB_0008434c:
    iVar12 = (**(code **)(*piVar3 + 0x18))(piVar3,&local_2c);
    if ((iVar12 == 0) &&
       ((CONCAT44(local_28,local_2c) <= lVar1 ||
        (iVar12 = (**(code **)(*piVar3 + 0x10))(piVar3,lVar1), iVar12 == 0)))) {
      iVar12 = FUN_000249d0();
LAB_00084248:
      if (iVar12 == 0) {
LAB_00084250:
        if ((*(char *)(param_1[1] + 8) == '\0') || (iVar12 = FUN_00080560(), iVar12 == 0)) {
          iVar12 = 0x65;
          goto LAB_00083fad;
        }
      }
    }
  }
LAB_000840d9:
  if (local_50 != 0) {
LAB_00083fb9:
    iVar9 = param_1[6];
LAB_00083cf5:
    cVar8 = *(char *)(iVar9 + 8);
    if (cVar8 == '\x02') {
      FUN_000835d0();
      cVar8 = *(char *)(param_1[6] + 8);
    }
    if (cVar8 != '\0') {
      FUN_00080560();
    }
  }
  if (iVar12 == 0xc0a) {
    iVar12 = 7;
  }
LAB_00083d18:
  param_1[7] = iVar12;
LAB_00083d1b:
  if (*param_1 != 0) {
    sqlite3_mutex_leave(*(undefined4 *)(*param_1 + 0xc));
  }
LAB_00083d33:
  if (*(char *)(param_1[6] + 9) != '\0') {
    piVar3 = (int *)(param_1[6] + 0xc);
    *piVar3 = *piVar3 + -1;
    if (*piVar3 == 0) {
      FUN_00024a20();
    }
  }
  sqlite3_mutex_leave(*(undefined4 *)(param_1[5] + 0xc));
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000d1450();
  }
  return iVar12;
}

